I want to introduce you ReHLDS, reverse-engineered, bugfixed and optimized version of HLDS.
Most recent builds (built by CI from the 'master' branch)
Now I'll go through project's history and highlight some of its features.
One of the main goals during reverse engineered phase was to achieve the same behaviour as original HLDS has. By 'the same' I mean that ReHLDS should produce data that bit-to-bit equal to data produced by original HLDS when both apps are fed with similar incoming data.
This goal was achieved by implementing 'black box' test suite which writes all calls to external functions to file and then uses this file to "replay" recorded scenario.
Please notice that "same behaviour" is also related to supporting no-steam clients. Since original HLDS supports only Steam clients, ReHLDS does the same.
Later we added optimization/bugfixes that breaks "same behaviour" rule and that's why ReHLDS distribution archive contains two versions of engine, 'pure', which is 'same behaviour' version, and 'bugfixed', which contains optimizations and fixes that break 'same behaviour' rule
You may find all fixes by searching usages of 'REHLDS_CHECK' and 'REHLDS_FIXES' defines in the source code. Most fixes are kind of 'avoid buffer overflow', but some interesting bugs like flying players
are also fixed
"Hey, let's use SSE for vector math, it will increase performance dramatically" - that was my first thought when I started thinking about the optimization. I was wrong
Implementing SSE math in several frequently used functions gave ~5-15% boost. Enormous performance gain was achieved by implementing JIT compilation for delta encoder.
You may read more about optimizations results here
In short: ReHLDS 2+ times faster than original HLDS. It could be almost 3 times faster if necessary optimizations are applied to metamod and gamedll.
Why I'm here
I'm here for 3 reasons:
Which OSes are supported?
- Let you now about this project.
- Collect community's feedback.
- Find people who are able and want to help me with testing.
Windows and Linux. No MacOSX yet.
Is ReHLDS fully compatible with HLDS and/or AmxModX?
It's fully compatible with HLDS 6132 and 6153. It's also compatible with all plugins except ones that do engine memory patching (Orpheu as an example).
Is it safe to install it?
ReHLDS is not stable yet, especially Linux version. I'm looking for people who can help me with testing.
How to install it?
You should have working server based on HLDS 6132 or 6153.
Download most recent (see Last Modified column) .zip file from artifacts storage
and unpack it.
Copy bin/[pure|bugfixed]/[engine_i486.so|swds.dll] to your server root.
'pure' version does have the same behaviour as original HLDS, but doesn't have some bugfixes and optimizations
'bugfixed' version contains all optimizations and bugfixes, but should be considered as less stable.
How can I help the project?
Use it and report bugs