.:Xash3D Engine:.

Custom Gold Source Engine build from a scratch

Unkle Mike (aka G-Cont, aka Дядя Миша) - main developer
HLFX.ru & CS-Mapping.com.ua forum members - help, support, testing

CortexReaver, nemyax - English translation

Xash3D Engine has been tested for compatibility with many of Gold Source games and MODs. At this moment it should provide you an ability to successfully complete almost any existing singleplayer Half-Life mod without compatibility problems. Some mods can be not totally compatible, if they are too hardly modified or using some very specific or unstable features of Gold Source engine. Also multiplayer part of Xash3D engine is not fully completed yet because of lack of some important information and hidden source codes of Gold Source engine. So in most cases multiplayer mods should work good in a local or a LAN game, but some features can not work or work not exactly as under Gold Source engine. Check a detailed list of tested mods and a list of tested maps in "Features" section. A full list of Xash3D Engine features is also there, plus a guide on how to get work Half-Life and its' mods under Xash3D (in English and in Russian).


Since Xash3D is a Half-Life compatible engine, then all the innovations below will be given in comparsion with GoldSrc engine.

Basic limits.

Xash3D limits are not just higher than Half-Life ones, they 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 engine-hardcoded and can not 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 4096х4096 (vs. 512х512 in Half-Life)
- Maximum size for true-color textures is 4096x4096.

Limits for bsp-models.

- MAX_MAP_MODELS 1024 (256 in half-life)
- MAX_MAP_LEAFS 32767 (8192 in half-life)
Note: other BSP-model limits are specified by compiler tools and don't depend on the engine.

Realisitic lighting values on server.

Xash3D allows to get more accurate value of current lighting level, because it considers lightstyles and their current values. The player's lighting is taken directly from renderer and considers all lighting types, including entity light and dynamic light.

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 command. If the command is entered when a map is loaded, a new entity patch will be created.

Various map formats support.

Xash3D supports following BSP-map formats: Quake 1, Half-Life, Half-Life Blue Shift. Besides, Quake 1 external bmodels are supported (medikit and ammo models). Note: it is recommended to play Quake 1 maps in Deathmatch Classic mod to prevent stuckness of player because of the difference between hull's sizes of Half-Life and Quake.

Hot resource precaching support.

Xash3D allows to precache models "on the fly" that helps to avoid nasty PF_PRECACHE_ERROR. Also Xash3D doesn't crash if a model or sound wasn't found.

Reliable changelevel.

Before switching to a next map Xash3D will analyze its state (without unloading the current map) and decides whether correct changelevel procedure is possible. In case of any error in a next map the engine will signal about it in the developer's console, and the changelevel will be aborted. The error message also contains troubleshoot tips that can make level designer's life easier, because such errors are most difficult to diagnose and fix.

Built-in credits.

To display credits and exit the game after, run the pfnEndSection command with oem_end_credits argument. The credits code is placed in menu.dll and can be changed by user at his discretion.

MOVETYPE_PUSH physics is more stable.

Xash3D entities behave more stable on moving platforms and don't shift away on sharp turns.

New MOVETYPE_COMPOUND physics type.

It allows to tie one entity to another, taking into account movement and rotation of the former entity. You can see an example in SDK - a crossbow bolt that correctly attaches itself to func_pushable, func_rotating, func_tracktrain and other brush models.

Console autocomplete support.

Xash3D has a powerful console autocomplete system that allows not just print command lists, but also describe all of them during the search. For more comfort you can type "makehelp" in the console, and the engine will generate help.txt that contains the list of all commands and variables with short descriptions. Map, movie, background track, cfg script, save, weapon (give command), sound (play command), game directory names input is also assisted by the autocomplete feature.

No parent directory restriction.

Most Quake engines are restricted to the parent directory with specific name, which doesn't matter when you make mod, but very uncomfortable when you make total game conversion and therefore replace the parent directory. Xash3D doesn't restricted to specific folder, and the parent directory is defined by the launcher. This way you can make your own game that doesn't depend on Half-Life.

Dedicated server has the autocomplete feature now, your command history can be saved.

Dedicated server has the autocomplete feature now, your command history can be saved.

Background maps support.

Background map is a map to be displayed as a menu background. You could see them in Half-Life 2. Xash has a simplier background map system - it doesn't depend on unlocked chapters (because original Half-Life has no chapters system) and it chooses the background map from the list. This list file must be named as chapterbackgrounds.txt and placed in scripts directory (if you don't have such directory, then just make it). Every list's entry is separated by new line. You can use any playable map as the background, but better don't use maps where player starts in a moving train, because it won't look good.

Lightstyle interpolation.

Turned off by default. Doesn't work with short sequences like switching on and off the light. It smooths light animation very well on long slow sequences like SlowStrobe or SlowPulse. Note: FPS rate may suffer from this option.

luma glowing textures support (Quake-style).

You can see such textures in original quake maps as glowing fields on a texture. Because this feature is caused by the Quake pallet's special features, the engine enables it for textures that have Quake or Quake2 pallet. This pallet is saved well after the simple conversion of wad2 files to wad3.

Improved model and sprite lighting.

Improved model lighting includes per-bone lighting from static and dynamic light sources, and it also includes correct model lighting on every stage of long sequence execution, when model goes far enough from its real location. The best example is forklift.mdl Sprite lighting is a correct lighting of all sprites that is rendered in additive mode and had "alphtest" during the compilation. For example, blood decals uses the world lighting and doesn't glow in darkness. Both sprites and models don't just use the world lighting, but also consider lighting of the closest brush model if there is one.

Player model display in the menu.

Instead of a usual player image you can see his 3D model in the menu and track all changes right on-the-spot.

Image RSS Feed Latest Screens
XashXT: custom build. Parallax & Water shot 2. XashXT: custom build. Parallax & Water shot 1. XashXT: custom build. Grass test. Shot 3
Blog RSS Feed Report abuse Latest News: XashNT in development

9 comments by Qwertyus on Sep 6th, 2014

Hi, all. There are some new information about the project. Currently the official (by Unkle Mike) work on development of Xash3D/XashXT has been slowed down for an indeterminate time, for the reason that another work has been started. Unkle Mike decided to switch his efforts on development of the new engine, XashNT. This engine will be a further continuation of Xash3D/XashXT, with a support of most usual modmaking tools, but now it will be much more farther from GoldSrc even before. It will be totally independent engine, intended exclusively for creating of new games. It will not support any of already existing Half-Life mods. Its' code will be totally rewritten.

The code of a rendering system will be based on GLSL (OpenGL Shading Language), this will make the new engine faster. New renderer will support all popular modern graphics enhancemets, as bump, parallax, water effects, daytime changes etc. Client/server part of code will be revised for better optimization. Also, with a refusal from support of GoldSrc now it will be possible to implement a fully working multiplayer system. Other planned features are: new map format (with a support of huge spaces, env_cubemaps and other things), new game physics (probably now without using of PhysX), extending of GoldSrc model format (old models will be supported too, but new models will also have some advanced features, as ragdoll etc.). Entity system for a first time will be the same as in XashXT.

When a pilot version of XashNT will be ready, a closed beta-testing will start. Members for CBT will be chosen personally by Unkle Mike (probably most of them will be only active game/mod developers, who already have appropriate projects based on Xash3D+XashXT and ready to move on the new engine, or skilled enough to experiment with it). If you have any ideas for the new engine, you are welcome to tell about them in the following thread (the forum is on russian, but you can use english easily):

Update from May 15, 2015:

Xash3D Engine has been updated to the build 3000, which is available now in Downloads section! Also don't forget about XashXT which is ready for your pleasure too!

Xash3D Engine v0.97, build 3000 (with extras)
Xash3D Engine v0.97, build 3000 (with extras)

XashXT v0.65 rev.1 (Xash3D mod & toolkit)
XashXT v0.65 (Xash3D mod & toolkit)

If you a new with Xash3D, please, check this manual about proper installing of the engine. XashXT should be installed in a same folder with the engine, as addon/mod for it (with its' own executable - xash.exe).

P. S. Useful information about compatibility of Xash3D and different singleplayer Half-Life mods and maps is in The list of tested Half-Life mods and in The list of tested Half-Life maps.

Media RSS Feed Latest Video
Add game Games
Secret Operation®: Guardians
Secret Operation®: Guardians

Secret Operation®: Guardians

Updated 1 week ago TBD Single Player First Person Shooter

The development of an entirely new Secret Operation. With the new engine, and a new approach. This project is a large scale, compared with the previous...

Meanwhile in Russia
Meanwhile in Russia

Meanwhile in Russia

Updated 3 weeks ago TBD Single Player First Person Shooter

Welcome to the Skolkovo Research Facility. If you are here by accident, please kill yourself immediately as possible. This complex - top secret and strictly...

No Name
No Name

No Name

Updated 3 weeks ago TBD Single & Multiplayer Third Person Shooter

This game is in early development and it is a common clone of GTA. If you would like to help, please contact me -kyp1998.

Paranoia 2: Savior
Paranoia 2: Savior

Paranoia 2: Savior

Updated 2 months ago Released Feb 25, 2015 Single Player First Person Shooter

Paranoia 2 Savior — first-person shooter in the style of survival horror, which is unfolding in a secret underground laboratory facility somewhere in...



Updated 7 months ago Released Dec 5, 2014 Single Player Arcade

Добрый-Бобрый, лол. С вами балабер, а это КОТРА: Зубодробительный экшн где вы играете...

Post comment Comments  (100 - 110 of 357)
Zc19891222 Jun 21 2014, 1:19am says:

How to use this engine on steam/nonsteam version half-life?

my english too bad...sorry..

+2 votes     reply to comment
Qwertyus Creator
Qwertyus Jun 21 2014, 1:16pm replied:

Read this manual: Moddb.com

+2 votes   reply to comment
Caminonchis20 Jun 19 2014, 5:20pm says:

Any update for Xash3D engine and XashXT Mod?

+2 votes     reply to comment
Qwertyus Creator
Qwertyus Jun 19 2014, 6:16pm replied:

Nope, not so fast. Critical updates have been already added not so long ago. It's time to background work and some rest now.

+2 votes   reply to comment
Justus200 Jun 13 2014, 9:15am says:

Hi, I finally decided to switch from Opposing Force as mod base to XashXT and so far I do not regret it. Even without C++ knowlege I was able to code some nice stuff like some new effects, copy monsters and weapons for new ones by trial and error and looking at the original code, but on one of my tests with the new water, I noticed a very anoying bug.

The reflection bug with two muzzle flashes (and my new gun smoke effect too) is not fixed in the latest XashXT release. Muzzle Flashes are duplicated on the view model (and as mentioned the gun smoke too) if there is a mirror texture (in my case a !reflection texture for water) nearby. It is very noticeable when looking somewhat at the ground. This bug occurs even on normal mirrors like in Opposing Force before the fix (wich worked just fine now, but not in XashXT). Testet with normal release too in case the bug was my fault, but it is in both versions. I hope you can provide a easy solution for me to fix this bug without the need to start from scratch in a new version (in example a fixed mirror.cpp or a detailed explanation what to change in the code to fix the problem, C&P like).

Beside the bugreport, I have a question. Is it possible to have real waves like the normal HL water with the new watershader (!reflect texture)? Without it looks a little flat and more like glass. And is it possible to adjust the transparency somehow (for dirty or deep water)?

+1 vote     reply to comment
Qwertyus Creator
Qwertyus Jun 14 2014, 12:34pm replied:

So, I've asked. Unfortunately, there's no ready solution for XashXT yet, because this fix requires an alteration of whole muzzleflash's part of code in XashXT.

+2 votes   reply to comment
Qwertyus Creator
Qwertyus Jun 13 2014, 3:25pm replied:

You're right, the bug with second muzzleflash wasn't fixed in XashXT, because Unkle Mike was hurry and preferred to save his time (he needs it now for his job and for the work on Paranoia 2). XashXT has its' own rendering system, so we only can wait now for the next update of XashXT. What about possible solution, I will try to ask and let you know if any. Also, XashXT mirror can not be "waved", because every used mirror surface will significantly reduce game performance, it's a limitation of this effect. Even using of 1 mirror on a map can be noticeable, especially for low-end PCs, so it's better don't abuse this effect too much without real need. So you can adjust WaveHeight parameter, but it will not affect mirroring surface. Check xash\devkit\docs for more details.

+1 vote   reply to comment
Justus200 Jun 14 2014, 9:55pm replied:

I see. Thank you very much for the information and your time. I hope there is a band aid fix for this bug available in the near future.
You say, Xash XT has its own render code and muzzle flashes must be changed there, so i wonder where are these effects stored in the SDK? I use the search function to find code pieces and to dig out where stuff i want to change or adapt is located, but i didn't find the code to change muzzle flashes or effects like the spark shower or TE_SMOKE. I want to copy and modify these effects to make my own or advance others.
For example, I wanted to give every weapon a unique muzzle flash sprite and change the black particle effect which occurs if a bullet hit the wall to bounce on the ground like the gauss glow balls. A little hint where to find these would be really helpful.

+1 vote     reply to comment
Qwertyus Creator
Qwertyus Jun 15 2014, 5:48am replied:

It's better to ask questions about coding directly at new Xash3D/XT forum: Cs-mapping.com.ua

+1 vote   reply to comment
openmaw Jun 5 2014, 3:47pm says:

I have another question regarding Xash.

When I turn "Fraps" on a version/build number is displayed in the lower right of the screen during play. Is there a way to disable this? I'm trying to use Xash for the purpose of creating Machinima, and this is undesirable.

+2 votes     reply to comment
Qwertyus Creator
Qwertyus Jun 5 2014, 5:31pm replied:

Well, it's an intentional hardcoded feature of Xash3D, so you can't disable it easily :). But you can try to use some other video capture programs (e. g. Bandicam or ZD Soft Screen Recorder) and that mark won't be displayed in the captured video.

+2 votes   reply to comment
openmaw Jun 5 2014, 9:32pm replied:

Also, sorry to nag, but I have one more question regarding Xash. I noticed in the latest release it says that overbright support was added in from the custom build. How do I make use of that?

+2 votes     reply to comment
Qwertyus Creator
Qwertyus Jun 6 2014, 1:12pm replied:

Overbrights are working only for XashXT (v0.65). Try cvar r_overbright 1 or 2 (0 - disabled). "Watermark" was added to allow anyone to know, that taken screenshot or captured video were made with Xash3D Engine - you can consider this as some kind of advertising. Also build version is useful for testing/bugtracking purposes (in consideration that Xash3D is still in developing and there are a lot of differences between its' builds).

+2 votes   reply to comment
openmaw Jun 5 2014, 7:21pm replied:

Just curious, why was this done, exactly?

+2 votes     reply to comment
Post a Comment
click to sign in

You are not logged in, your comment will be anonymous unless you join the community today (totally free - or sign in with your social account on the right) which we encourage all contributors to do.

2000 characters limit; HTML formatting and smileys are not supported - text only

Xash XT Group
Send Message
Official Page
Release Date
Released Apr 2011
Engine Watch
Track this engine
Community Rating



88 votes submitted.

You Say


Ratings closed.

Highest Rated (2 agree) 10/10

Very good work,Uncle Mike.

Jun 19 2011, 7:14am by red-bear

Embed Buttons

Promote Xash3D Engine on your homepage or blog by selecting a button and using the embed code provided (more).

Xash3D Engine Xash3D Engine
Xash3D Engine
6 of 721
Last Update
3 weeks ago
210 members