This article's documentation is for Xash3D. Click here for more information.

Xash3D

From Valve Developer Community
Jump to navigation Jump to search
English (en)Translate (Translate)

Screenshot in-game of Paranoia 2: Savior Paranoia 2: Savior, using the Xash3D Engine.

Xash3D Xash3D is a game engine that is almost fully compatible with GoldSrc GoldSrc. The engine can run most games and mods made with GoldSrc, but has significant improvements over the engine.

Icon-Important.pngImportant:This engine is written based on the open source code of Id Tech engines, as well as some derivatives of these engines such as DarkPlaces and qFusion.
Warning.pngWarning:Nowadays they contain HLSDK headers, HL2 snd_mix.cpp, etc.. some code in an engine makes this illegal.[1]
Warning.pngWarning:The Half-Life SDK license is incompatible with the GPL license. Linking the Half-Life SDK and non-GPL code bases violates the license.[2]

Compatibility with GoldSource

The compatibility of Xash with GoldSource is estimated to be approximately 90%. This means that the vast majority of mods and games designed for the GoldSource engine should work correctly on Xash3D without any modifications. Numerous single-player mods for the original GoldSrc have been tested on Xash, with most of them functioning perfectly. However, there are some exceptions for games that were designed for the Steam version of GoldSrc, as they utilize undocumented engine features that make their adaptation more challenging (such as VGUI2, SDL2, filesystem_stdio, Steam libraries, and other engine modules).

The engine supports Metamod and AmxModX with their plugins, although not all are fully compatible. Multiplayer mods are also supported by the engine.

Differences from GoldSrc

  • Unlike the GoldSrc engine, Xash doesn’t use a modular architecture.
  • Xash is written in pure C, while GoldSrc is written fully in C++.
  • Pre-caching and on-demand loading of resources.
  • Support for BSP maps in formats such as Quake Quake, Half-Life Half-Life, and Half-Life: Blue Shift Half-Life: Blue Shift.
  • Xash is not bound to the native directory of Half-Life (the “valve” folder), and the mod directory can be specified in the launcher if needed. This allows for the creation of independent games separate from Half-Life.
  • Support for ambient maps (Like in Source Source games).
  • Xash doesn’t require unused WAD files, and resources not used on the loaded map.
  • Transparent file system, allowing for accessing files in archives using the same methods as files outside archives.
  • Support for colored messages in the console (using the “^” tag).
  • Directly changing the sky type and rotation on a map.
  • Support for detail textures (as in Counter-Strike: Condition Zero Counter-Strike: Condition Zero).
  • Support for HD textures.
  • Separate physical and graphical interfaces to provide more functionality and customization.
  • More efficient occlusion culling system, increasing FPS and reducing “r_speeds”.
  • Extended resource limits that can be customized for mod through the gameinfo.txt file. Reducing limits can save more RAM in mods that don’t require many edicts (server entities).
    • The MAX_EDICTS parameter is also transmitted from the server during multiplayer sessions, allowing clients to automatically adjust to new conditions.


Engine
Limits GoldSrc Pre-25th GoldSrc Post-25th Xash3D Xash3D Svengine Svengine
Maximum number of dynamic sound channels 8 32 64 N/A
Default max number of server entities (MAX_EDICTS) 900 1200 600 - 8192 8192
Absolute max number of server entities (via liblist.gam edits) 2048 2048 8192 N/A
Maximum number of temporary entities (MAX_TEMPENTS) 500 N/A 300 - 2048 N/A
Maximum number of particles (MAX_PARTICLES) 4096 N/A 1024 - 131072 N/A
Maximum number of beams (MAX_BEAMS) 64 N/A 64 - 512 256
Maximum number of visible entities in the package (MAX_VISIBLE_PACKET) 256 1024 2048 N/A
Maximum number of pre-cacheable models and sprites (MAX_MODELS) 512 N/A 1024 (4096 in FWGS) 8192
Maximum number of pre-cached sounds (MAX_SOUNDS) 512 N/A 2048 4096
Maximum number of entries to read sentences made up of sentences (MAX_SENTENCES) 1536 2048 4096 N/A
Maximum number of user messages (MAX_USER_MESSAGES) 128 N/A 191 N/A
Max number of loaded textures (MAX_TEXTURES) 2048 N/A 4096 (8192 in FWGS) N/A
Max number of GL textures (MAX_GLTEXTURES) 4800 10000 4096 (8192 in FWGS) N/A
Number of messages titles.txt (MAX_MESSAGES) 1024 N/A 2048 N/A
Maximum size of indexed textures 512х512 512x512 8192х8192 N/A
Maximum size of full color textures 512х512 512x512 8192х8192 N/A
Maximum number of models on the map (MAX_MAP_MODELS) 256 N/A 768 (1024 in FWGS) 4096
Maximum number of map leafs (MAX_MAP_LEAFS) 8192 N/A 32767 65536
Maximum number of entities per packet (MAX_PACKET_ENTITIES) 256 1024 256 512
Maximum number of spans (software renderer geometry limit) 3000 6000 N/A N/A
Maximum number of surfaces (software renderer geometry limit) 2000 4000 N/A N/A
Maximum number of edges (software renderer geometry limit) 7200 14400 N/A N/A

Engine derivatives

Since Xash3D Xash3D is distributed under the GNU GPL v3 free license, third-party developers can create forks.

  • Sing Engine - first port of original Xash3D to Linux made by adamixik and fire64
  • Xash3D FWGS (Xash3D SDL) - a cross-platform fork maintained by Flying With Gauss (a.k.a. FWGS. Formerly SDLash3D).
    • Full support for a large variety of platforms and devices, and includes numerous fixes and extensions to the original engine.
    • Unlike the original, it has modular architecture that is similar to id Tech 2 and GoldSrc.
  • Xash3DEx (Xash3D Magenta - stillborn project by BlackPhrase. The actual version of this "engine" contains only one .bat file with only five strings.
  • Xash3D VR - special version of Xash3D FWGS for Google Cardboard. Was made by Solexid.
  • Lambda1VR - special version of Xash3D FWGS for Oculus Quest. Was made by DrBeef.
  • Half-LifeX (Xash3Dx) - fork of original Xash3D engine that supports the Original Xbox. Originally was made by marty28.
  • Xash3DS - fork of Xash3D FWGS that supports Nintendo 3DS.
  • Xash3D-Wii - fork of Xash3D FWGS that supports Nintendo Wii.
  • Xash3D-RT - fork of Xash3D FWGS with real-time path tracing support (via hacks) using OpenGL instead of Vulkan. Made by sultim-t to get an offer by NVidia.
  • nightfire-open (Formerly afterburner) - Reimplementation of James Bond 007: Nightfire James Bond 007: Nightfire game engine and SDK that based on Xash3D FWGS engine and hlsdk-portable. Made by noodlecollie

Software Development Tools

Engine has alternative software development kits for modders that have more features than normal Half-Life SDK

  • hlsdk-portable - fork of Half-Life SDK with many bugfixes that made to make multiports of GoldSource's mods using Xash3D FWGS.
  • XashXT - fork of Spirit of Half-Life that have custom model format, render and physics. Project was abandoned in 2019.
  • PrimeXT - fork of XashXT and Spirit of Half-Life that have custom advanced renderer, physics using PhysX engine, and modding tools. Currently in development.
  • stubserver - Clean Room reimplementation of Half-Life SDK written in pure C. Currently does not have functionality to make mods.
  • UMVHLT - Unkle Mike's Custom Build of Vluzacn's Custom Build of Zoner's Half-Life Tools.
  • P2Tools - Paranoia 2: Savior Paranoia 2: Savior Tools. Includes Vluzacn's Custom Build of Zoner's Half-Life Tools adopted to Paranoia 2: Savior.

See also

External links

References

  1. License issues · Issue #63 · FWGS/xash3d-fwgs
  2. GNU General Public License (Linking and derived works) on Wikipedia