Introduction.
Xash3D is a Half-Life-compatible engine, so all its features are showcased with respect to GoldSource to
demonstrate how much better Xash3D is.
------------------------------------------------------------------------------------------------------------------
Basic limits.
Xash3D limits are not just higher than Half-Life ones, they're also can be tuned in gameinfo.txt file.
MAX_EDICTS is 600 - 4096 (versus 900 in Half-Life).
MAX_TEMPENTS is 300 - 2048 (vs. 500).
MAX_PARTICLES is 1024 - 8192 (vs. 4096).
MAX_BEAMS is 64 - 512 (vs. 64)
Careful limits reduction can save RAM in mods which don't need many edicts.
Also MAX_EDICTS parameter is broadcasted from server during a multiplayer session, it adjusts clients to new conditions automatically.
Other limits.
These limits are hardcoded into the engine and cannot be tuned by user.
MAX_VISIBLE_PACKET is 512 entities (256 in Half-Life).
MAX_MODELS is 2048 unique models (including sprites and bmodels)
MAX_SOUNDS is 2048
MAX_SENTENCES is 2048 (1534 in Half-Life)
MAX_USER_MESSAGES is 191 (128 in WON Half-Life)
MAX_TEXTURES is 4096 (2048 of them can be used for VGUI)
MAX_MESSAGES is 2048 (1024 in Half-Life) (quantity of messages in titles.txt)
Maximum size for indexed textures is 1024õ1024 (vs. 512õ512 in Half-Life)
Maximum size for true-color textures is 4096x4096.
Limits for BSP-models.
#define MAX_MAP_MODELS 1024 (256 in half-life)
#define MAX_MAP_LEAFS 32767 (8192 in half-life)
Note: other BSP-model limits are set in compiler and don't depend on the engine.
Studiomodel scaling support
Spirit Of Half-Life mod includes an interesting ability to tweak visible size of any studiomodel by the "scale" variable.
However, this ability doesn't affect physical boundaries of the scaled model.
Xash3D addresses this issue. You can toggle the scaling via the "sv_allow_studio_scaling" variable. This variable is saved in config.cfg and also broadcasted to all players during a multiplayer session.
Attachment angle receivement on server side.
As you might know, the GET_ATTACHMENT engine function doesn't return angles for attachment (this capability is absent
from both engine and model compiler). Xash3D partially allows to fix this by returning direction from bone to attachment, which is considered to be forward vector and completely matches the vector you see
in Half-Life Model Viewer (of any version) if you switch to attachment view.
This capability might be useful for implementation of things like headcrab that jumps off the killed zombie,
realistic laser sight position on viewmodel, and others where attachment angles are needed.
This option is turned off by default, you can turn it on by changing "sv_allow_studio_attachment_angles" variable to "1".
It is saved in config.cfg as the previous feature, but it doesn't affect the client.
Realisitic lighting values on server.
Xash3D allows to get more accurate value of current lighting level, because it considers lightstyles
and their current values. In next versions, entity brightness will be calculated for flashlights of every player
(e.g. in multiplayer). The player's lighting is taken directly from renderer and considers all lighting types,
including entity light and dynamic light.
Saveable camera (trigger_camera)
It is known that Half-Life doesn't restore a camera's state on save & load. This issue can interfere with
a proper gaming experience sometimes. It is successfully fixed in Xash3D. Now the state will be kept unchanged
after save & load.
Improved decal save
Half-Life supports decal save only on world surfaces and very rare on doors, elevators and other moving models.
Xash3D saves decals on every brush model.
Decal transition between levels is also maintained (implemented in Half-Life, but doesn't really work).
Entity patch technology support
This technology allows to load entities from external .ent script file.
This script can be produced by the external ripent.exe application or by engine's facilities by typing
the entpatch