.:Xash3D Engine:.

Custom Gold Source Engine build from a scratch



Developers:
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.

  • View media
  • View media
  • View media
  • View media
  • View media
  • View media
Post article RSS Articles

Hi there! The long awaited fresh build of Xash3D Engine is released! As always there are a lot of different things which have been fixed / improved / implemented. It marked as 'experimental', but don't worry, it works fine. Many of important known bugs have been wiped out, so it's good for the updating of your current installation (except you want to try this build on some of specific Xash3D projects like XashXT, Paranoia 2 or Quake Remake, because they depend on some of revised features and should be updated later for full compatibility). It's experimental in the most part because some of features are really new and probably may be reworked later. Below is the list of changes since the previous public build 3366.

Xash3D v0.98 build 3598 changelog:

Engine: implementation of generic extension of BSP file format. Added some extra lumps for mods to make new features like terrains, improved lighting etc.
Engine: PVS system rewritten for variable PVS radius that can be used as FAT PVS or FAT PHS without recalculating of vis-array
Engine: started to implement a new global feature which is called HOST_FIXED_FRAMERATE to provide constant FPS for client and server (Xash-based mods only)
Engine: fixed wad parsing from "wad" string in worldspawn settings (was broken in previous version)
Engine: fixed crash/hanging while trying to play AVI-file if codec is not installed
Engine: sorted commands and cvars in alphabethical order. Included scripting functions from Xash3D FWGS

Render: some unused functions from RenderAPI were replaced with useful functions. Backward compatibility stays keep on.
Render: added few functions in RenderAPI for Xash3D FWGS by a1batross request
Render: got a support for loading of multi-layered textures (for potential landscape implemenantion)
Render: rewritten waves on water surfaces, uses table sin, providing better performance and look close to GoldSrc
Render: completely rewritten texture loader, obsolete code removed, added support for multi-layered textures and float textures, fixed errors
Render: now "gl_texturemode" is obsolete and removed. Use "gl_texture_nearest" cvar instead
Render: improved double-cloud layered sky for Quake. Reduced parallax distorsion
Render: OpenGL loader completely rewritten. Removed obsolete extensions, fixed some errors
Render: moved lightstyle animation from render frame loop to client frame loop (to prevent the execution of lightstyle animation on multipass viewing)

Sound: changed DSP code to get DSP effects more like in original GoldSrc
Sound: rewritten sound PHS code. Now it can be useful
Sound: first implenantion of raw-channels manager (in the future this will be used for a custom video playing in Xash-based mods and voice stream)
Sound: sentence sounds now can be freed after playing (and save some memory)

Server: allowed to write map lums on a server to store userdata (physic collision, ai nodegraph as example). Works with extended BSP format only
Server: physic interface was updated and expanded to get more control over player and entities simulation
Server: ignore sounds from pmove code when prediction is enabled
Server: changed userinfo handling, fixed information send to all the clients
Server: fixed player animtion timings
Server: added cl_msglevel cvar to filter up unneeded messages
Server: restart server properly if circular buffer pointer was exceeded 32-bit limit value
Server: fixed player think timings

Client: added two functions into engine interface for custom interpolation on the client
Client: demo protocol has been changed to 2 (now allows comments in demo's header)
Client: demo's playback now takes into account the interpolation of client view angles
Client: fixed some issues on demo's playback
Client: fixed broken parametric entities (rockets in TFC as example) in multiplayer
Client: implementation of GoldSrc-like net graph
Client: fixed ugly "un-duck" effect right after changing a level (see for example transition from c0a0b to c0a0c)
Client: predicting code has been cleaned and rewritten to get more compatibility with original GoldSrc prediction
Client: handle colon separately for client version of COM_ParseFile (like in GoldSrc)
Client: finalized NETAPI. Now it can handle servers list from a master server (and display on a built-in client browser, of course)
Client: texturebrowser and overview mode now are not affected by player's moving in the world
Client: accumulate pmove entities right after handling delta instead of world rendering
Client: changed master server address and request to actual
Client: excluded dead bodies from solid objects in pmove processing
Client: new style of displaying for FPS counter
Client: fixed muzzleflash decoding from a studio animation event
Client: changed color handling for viewbeams (removed color normalization)
Client: fixed studio culling on models with non-default scaling (large models in SoHL)
Client: get VGUI backend to implement the lastest version of vgui.dll

Network: removed compression routine (very low efficiency)

GameUI: fixed color strings sending across network as server names or player names

Console: now map list show an extension or type of various map and mapstats check level for transparent water support
Console: replaced the console buffer with effective circular buffer (up to 1 Mb of messages)

File System: complete revision of filesystem code, removed WAD2 support

ImageLib: fixed crash in quantizer if image is completely black

P. S. Have fun and support developers!

Beta test of new engine version. Xash3D FWGS coming to iOS

Beta test of new engine version. Xash3D FWGS coming to iOS

Xash3D Android 6 comments

Xash3D FWGS 0.19 open beta testing. Conquering horizons: Xash3D FWGS for iOS.

CS16Client v1.0 release!

CS16Client v1.0 release!

Xash3D Android 22 comments

First stable and public version of CS16Client -- best Counter-Strike 1.6 Android port.

List of singleplayer Half-Life mods tested under Xash3D

List of singleplayer Half-Life mods tested under Xash3D

Feature 17 comments

The list has been updated on December 22nd, 2014. Xash3D Engine was tested for compatibility with most of singleplayer Half-Life mods and maps, and for...

Running Half-Life under Xash3D: user's manual (English)

Running Half-Life under Xash3D: user's manual (English)

Feature 58 comments

Hello, if you are new with how to use Xash3D Engine to run Half-Life and its' mods, this manual is for you. Just follow the instruction and have fun!

Add game Games
Xash3D Android

Xash3D Android

First Person Shooter

Fork of Xash3D engine that ported to Android. Allows play Half-Life out-of-box.

No Name

No Name

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.

Comments  (0 - 10 of 608)
jaimd
jaimd

Hi guys i was wondering do you know if ns1 work with xash3d and also if this game work with online multiplayer?

Reply Good karma Bad karma+1 vote
Qwertyus Creator
Qwertyus

It works between Xash3D clients/servers. Doesn't work with GoldSrc clients/servers.

Reply Good karma+1 vote
coldroll
coldroll

Does the Xash 3d engine support 144hz refresh rates like the regular goldource engine does? I've set the max fps function to 144fps but there's a few minor bugs like npc's reacting slower and turning slower and the engine spases out and has a grey flicker every so often but other than that it seems to work okay. Is it possible that higher 144hz could be fixed in the future or is this an inherent engine limitation? Also in the normal gold source engine npc's react slower and have trouble turning at higher fps levels as well. But there is no grey flickering like in this engine.

Reply Good karma Bad karma+1 vote
Qwertyus Creator
Qwertyus

Your current monitor's refresh rate is the best value for comfort gaming. Flickering is caused by inappropriate values of refresh rates, especially on LCD screens. The easier way to fix it is to enable VSync in Video modes. Setting higher values is mostly useless, unless you trying to use speedrunners' tricks and such. Do you really have 144 Hz monitor or what?

Reply Good karma+1 vote
poisonheadcrab
poisonheadcrab

Qwetyus, sorry its me again. I've been experiencing a weird bug in xash where the Tau cannons laser is invisible. It makes the sounds and emits the particles like its firing but the laser doesn't show up. I experience similar issues with the houndeye shockwave and env beam entities when set to ring or random strike.

Reply Good karma Bad karma+1 vote
Qwertyus Creator
Qwertyus

Tell me please the build that you're using, your operating system and grafics card. Also check another builds and see if they don't have that bug.

Reply Good karma+1 vote
poisonheadcrab
poisonheadcrab

I am using version 0.65 as a base for my mod. I also have the "build 3598 with extras" installed as well. As for operating system I am using windows 10. I am using an nvidia graphics driver.

Reply Good karma Bad karma+1 vote
Qwertyus Creator
Qwertyus

If you have this issue with XashXT only, it may depends on some incompatibilities of the mod with latest build of the engine. This should be fixed later (currently Unkle Mike is focused on updating of the engine and mod is a bit outdated). Try previous builds, this should help probably.

Reply Good karma+1 vote
poisonheadcrab
poisonheadcrab

I reverted to build 3366 and seemed to fix the issue. The only question I have atm refers to the parent system. I was wondering if you could attach entities to specific attachment points, like make a laser project from a soldiers gun.

Reply Good karma Bad karma+1 vote
Gmadador
Gmadador

Me and my friend have gotten MP working well in Xash3D, however the player movements seem very choppy at the moment. It works, but it is quite annoying. Is there anything to do to fix this?

Reply Good karma Bad karma+1 vote
Qwertyus Creator
Qwertyus

Check your config for these settings:
cl_predict 1
cl_nopred 0
cl_lc 1
cl_lw 1
cl_cmdrate 60
cl_updaterate 60
rate 25000

Maybe it can be useful to raise rate values.

Reply Good karma+1 vote
Gmadador
Gmadador

Yeah, I looked around a bit more and found some help. Thanks anyways!

Reply Good karma Bad karma+1 vote
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.

Follow Report Profile
Platforms
Windows
Company
Xash XT Group
Contact
Send Message
Licence
GPL
Release date
Engine watch
Follow
Share
Community Rating

Average

9.7

109 votes submitted.

You Say

-

Ratings closed.

Highest Rated (5 agree) 10/10

Just awesome. What you did creating this engine cannot be described with any words.

Jan 28 2012 by ADTeam™

Lowest Rated (5 agree) 1/10

The writers of this engine don't care about copyright at all. The engine is riddled with valve code, some from the hl sdk, possibly some from the hl2 beta leak... Bottom line, it's illegal.

Note: this review was written on 12/29/13, and may not reflect how the code is later...

Dec 29 2013 by Danfun64

Embed Buttons
Link to Xash3D Engine by selecting a button and using the embed code provided more...
Xash3D Engine
Statistics
Rank
37 of 428
Last Update
Watchers
301 members
Games
2
Files
78
Articles
19
Reviews
44
You may also like
Ethanon
Ethanon L-GPL
biEngine
biEngine Proprietary
cocos2d-x
cocos2d-x MIT
Unity
Unity Commercial
PlayCanvas
PlayCanvas Commercial
Wave Engine
Wave Engine Proprietary