Skip to content

0.0.6

Pre-release
Pre-release
Compare
Choose a tag to compare
@mastercoms mastercoms released this 18 Aug 09:02
  • DirectX 9 is now required to run the game, with DirectX 8 being removed even more, and performance options from DirectX 8 being added to DirectX 9:
    • Added tf_disable_weapon_skins 1 to disable weapon skins on DirectX 9
    • Work is ongoing to add an option to enable low-end shaders traditionally only for DX8, but more investigation needs to be done for which shader fallbacks improve performance and which are only there for the less advanced support DX8 has for shaders.
    • More info: DirectX 8 is itself a very outdated graphics API. It doesn't inherently improve performance, especially on any card made past 2002. DirectX 9 is a more efficient renderer in many ways: it has support for up to shader model 3, efficient resource management through D3D9Ex, stream offset support for meshes, hardware skinning, vertex textures, increased texture samplers, vertex compression, boolean and integer shader constants, enhanced texture format support, fetch 4 support, and more!
    • Team Comtress 2 already provides the following DX8 performance options within DX9 mode: tf_skip_halloween_bomb_hat_translucency, r_skybox_lowend, -particle_fallback
  • Updated some more networking options to Valve matchmaking/CS:GO standards:
    • sv_namechange_cooldown_seconds from 30 to 300
    • sv_allow_voice_from_file 0
    • Max routable payload is now 1200 bytes
    • net_compresspackets_minsize 1000
    • sv_minupdaterate/sv_mincmdrate 66
  • cl_interp is now upper bounded by sv_client_max_interp_ratio, so that server owners are given control to limit extremely high interp set by the user. With default settings, the highest interp can be is 0.075.
  • sv_motd_unload_on_dismissal 1 by default, so that the usual case of a simple MOTD is unloaded after close
  • sv_restrict_aspect_ratio_fov 2 by default, so that players cannot gain an advantage with ultrawide displays
  • Added tf_hud_target_id_disable 1 to disable dynamic target IDs which take up a relatively large amount of time for player tick
    • Optimized target ID trace when not a medic in MvM by not tracing debris
    • Reduced trace length from practically infinite to 8192 (weapon range)
  • Fixed broken SteamIDs in the server depending on Steam response time (@maximsmol)
  • Reworked client leaf system for renderables (based on CS:GO). This should greatly reduce hitches/drops when turning corners and entering new areas/rooms:
    • Optimized leaf list algorithm:
      • Box algorithm is less recursive, reducing function call overhead
      • Skipping leaf enumeration and doing it later with our collected leaf list
    • Expanded leaf bounding box for particles, so that as they simulate, their bounding box does not expand or change and cause an expensive re-insert into the tree
    • Bounding box uses a more efficient path instead of outdated wrapper for bounding boxes
    • Reuse leaf calculations when determining area
    • Fix static props not being considered for shadow removal
    • Cache off if the renderable should cast a shadow instead of checking it for every leaf it is added to
    • This also disables threaded client leaf system, since it is not compatible with these changes, and the performance currently is better than the old system was threaded. This also fixes particles flickering.
  • Enabled support for newer SSE functions in Mathlib
  • Optimized particle effects by lagging behind in attachments for 1 frame of updated transformations, so that we do not force a recalculation of bones whenever a particle is attached to an animated object
  • Bone setup now considers lower quality LODs to be setup, when a higher quality LOD is set up. This is because the higher quality ones include a superset of the bones used in the lower quality ones
  • Fixed possible error in bone setup from prediction
  • Remove hack which forced recalculation of bones every frame
  • Skipped expensive check to opt out of the IK in bone calculation
  • Disabled threaded client shadow manager, because it is out of the dependencies for a bone, causing setup bones to be requested again in a frame when it can happen in order
  • Fixed one crashbot exploit
  • Disabled cloud settings by default so that the game does not conflict with live TF2
  • Queued decals are now disabled because they caused crashes in some maps
  • Fixed crash and output handler (@maximsmol)
  • Removed/fixed many warning messages (@maximsmol)
  • Added build instructions (@maximsmol)
  • Fixed many dev scripts (@maximsmol)
  • Optimized excessive memory allocations within static mesh draw pass
  • StatTraks are now only updated on your own viewmodel
  • Significantly optimized TF eye look ats
  • Optimized choreo scene think (from CS:GO)
  • Slightly optimized material precache, and disabled hack on macOS
  • Optimized flexed vertex computations with new Vector4DWeightMADSSE implementation in DirectX Math
  • Optimized world surface mesh index builder
  • Disabled async sound mixing by default, as it spends a lot of empty time. Will revisit in the future if we can find a better way to tie work to the mixer.
  • Updated various trace lengths to 8192 rather than being practically infinite:
    • Server side voice response when looking at another player
    • Inspect trace on other players
    • Sniper rifle dot trace
    • Ash particles
    • Removed change which forced client side traces to be infinite rather than 8192
  • Cleaned up debugging/function overhead in shader logic
  • Fix wrap in index buffer code
  • Cleaned up dynamic mesh draw code to be less intensive and disruptive to the threaded renderer pipeline (would often force flushes and full rendering pipeline to be completed at random times). Fixing this introduced a known bug: viewmodels will not render instantly while player models are spawning in, will be fixed soon.
  • Ported over SlerpBonesSpeed from CS:GO for fast bone calculations
  • Enabled possible fast path in some simple meshes