Physics optimization: Difference between revisions
TomEdwards (talk | contribs) No edit summary |
TomEdwards (talk | contribs) mNo edit summary |
||
Line 1: | Line 1: | ||
It's a rare map that exists without any [[prop_physics|physically-simulated objects]]. How can we keep the performance costs of all these items under control? | It's a rare map that exists without any [[prop_physics|physically-simulated objects]]. How can we keep the performance costs of all these items under control? | ||
It's a particular issue when we consider that we can't remove objects based on the speed of the CPU | It's a particular issue when we consider that we can't remove objects based on the speed of the CPU: the computer with an eight year old laptop CPU has exactly as many objects to manage as the computer with a liquid-cooled quadcore chip from the year 2020! | ||
== Spawnflags == | == Spawnflags == | ||
Line 25: | Line 25: | ||
{{note|There have been reports of this entity behaving strangely - revert to prop_physics if you encounter this.}} | {{note|There have been reports of this entity behaving strangely - revert to prop_physics if you encounter this.}} | ||
---- | |||
'''''[[Optimization (level design)|<< Return to Optimization (level design)]]''''' |
Revision as of 08:06, 16 September 2008
It's a rare map that exists without any physically-simulated objects. How can we keep the performance costs of all these items under control?
It's a particular issue when we consider that we can't remove objects based on the speed of the CPU: the computer with an eight year old laptop CPU has exactly as many objects to manage as the computer with a liquid-cooled quadcore chip from the year 2020!
Spawnflags
These spawnflags apply to prop_physics
, and some to prop_ragdoll
.
- Start asleep
- Suspends all physics calculations until the entity has a force of some sort exerted on it. Its primary use is to avoid the first moments of a map being a slideshow as all of the objects in it 'settle'.
- But of course you do want that settling to happen, or else objects will be suspended in the wrong position. You can escape this catch-22 with the
map_edit
command. - Debris
- Debris objects don't collide with anything but brushes, vastly reducing their cost. They can optionally be 'ploughed through' by the player with
cl_pushaway_force
. Tip:It can get fiddly to set lots of tiny items as debris. Perhaps a programmer could write some code to automatically do so for models under a certain side when the map spawns?
- Motion Disabled
- Does exactly what its name suggests. Unlike sleeping, it can be (and is only) affected with the
EnableMotion
andDisableMotion
inputs. - Prevent motion enable on player bump
- The object doesn't move when the player bumps into it. Todo: Only valid when starting asleep?
Network performance
The amount of network data physics objects create can become an issue in multiplayer. To help with this, use prop_physics_multiplayer
; it simplifies collision models for complex entities to reduce bandwidth, and makes everything a little bit bouncier to try and hide latency paradoxes.
It also automatically makes smaller objects client-side. This can be overridden with the 'Force server-side' spawnflag if needed.
