Raised This Month: $121 Target: $400
 30% 

ReHLDS, Reverse-engineered HLDS


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
DreamStalker
Junior Member
Join Date: Jun 2015
Old 06-20-2015 , 17:56   ReHLDS, Reverse-engineered HLDS
Reply With Quote #1

Dear All,
I want to introduce you ReHLDS, reverse-engineered, bugfixed and optimized version of HLDS.

Source code
Most recent builds (built by CI from the 'master' branch)

Now I'll go through project's history and highlight some of its features.

Reverse engineering
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

Bugfixes
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

Performance optimizations
"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:
  1. Let you now about this project.
  2. Collect community's feedback.
  3. Find people who are able and want to help me with testing.

FAQ
Which OSes are supported?
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

Last edited by DreamStalker; 01-12-2017 at 05:33. Reason: Updated links to artifacts
DreamStalker is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 06-20-2015 , 17:58   Re: ReHLDS, Reverse-engineered HLDS
Reply With Quote #2

Only the official Steam version of HLDS is supported/advertised here.
__________________
fysiks is offline
CryWolf
Senior Member
Join Date: Jul 2008
Location: Germany, Ulm
Old 06-20-2015 , 18:17   Re: ReHLDS, Reverse-engineered HLDS
Reply With Quote #3

Quote:
Originally Posted by fysiks View Post
Only the official Steam version of HLDS is supported/advertised here.
Do you ever take a break from this forum ? you are helping with nothing here just seek to argue with everyone, omg get a life please and stop being continiosly like this.

He just posted a modded version of HLDS just for testing and for people who want to test something new he mentioned that he doesnt support no.steam

Great i shall look into the engine too
__________________
I dont walk trough this world with fear in my heart.

Last edited by CryWolf; 06-20-2015 at 18:18.
CryWolf is offline
Send a message via MSN to CryWolf Send a message via Yahoo to CryWolf
asherkin
SourceMod Developer
Join Date: Aug 2009
Location: OnGameFrame()
Old 06-20-2015 , 18:23   Re: ReHLDS, Reverse-engineered HLDS
Reply With Quote #4

Neat.
__________________
asherkin is offline
Spirit_12
Veteran Member
Join Date: Dec 2012
Location: Toronto, CA
Old 06-20-2015 , 20:43   Re: ReHLDS, Reverse-engineered HLDS
Reply With Quote #5

I would love to test this. If your claim of this being 2 x faster than original HLDS is true. Then you might put some life back into this dying game.
__________________
Spirit_12 is offline
Spirit_12
Veteran Member
Join Date: Dec 2012
Location: Toronto, CA
Old 06-20-2015 , 21:23   Re: ReHLDS, Reverse-engineered HLDS
Reply With Quote #6

Code:
Distributor ID: Ubuntu
Description:    Ubuntu 15.04
Release:        15.04
Codename:       vivid
My OS is up do date with the latest Ubuntu release. It seems that your project requires ppa release.

PHP Code:
Error:./libstdc++.so.6version `GLIBCXX_3.4.20' not found (required by /home/user/hlds/engine_i486.so)
Unable to load engine, image is corrupt. 
__________________
Spirit_12 is offline
fysiks
Veteran Member
Join Date: Sep 2007
Location: Flatland, USA
Old 06-21-2015 , 00:48   Re: ReHLDS, Reverse-engineered HLDS
Reply With Quote #7

Quote:
Originally Posted by CryWolf View Post
Do you ever take a break from this forum ? you are helping with nothing here just seek to argue with everyone, omg get a life please and stop being continiosly like this.

He just posted a modded version of HLDS just for testing and for people who want to test something new he mentioned that he doesnt support no.steam

Great i shall look into the engine too
It's not that the community doesn't support no-steam, it's that the community does not support any HLDS that is not the official HLDS. Are you sure it's not a copyright violation to reverse engineer HLDS?
__________________

Last edited by fysiks; 06-21-2015 at 01:03.
fysiks is offline
meTaLiCroSS
Gaze Upon My Hat
Join Date: Feb 2009
Location: Viņa del Mar, Chile
Old 06-21-2015 , 01:39   Re: ReHLDS, Reverse-engineered HLDS
Reply With Quote #8

Quote:
Originally Posted by fysiks View Post
It's not that the community doesn't support no-steam, it's that the community does not support any HLDS that is not the official HLDS. Are you sure it's not a copyright violation to reverse engineer HLDS?
Copyright violation? Well, you saw Alfred's response on last OpenHLDS thread, who started an user time ago.

https://forums.alliedmods.net/showpo...9&postcount=10

What's going to happen is: Alfred will ask for dreamstalker's purpose on doing this, and that can be solved by just looking up thread's introduction. gg

So, get all those damnit things out of here, this is actually insane and really nice. Also, he did it with the same restrictions as default HLDS.

In case of allowing no-steam clients, would be easier to install dproto on a legit server? So what is the complain? Is someone here "supporting" this? Is he forcing users to test it? He's providing a nice link which is out of this forum, and everybody here is able to be friendly (like you) with him and help to test him, posting or not here. I mean, I appreciate his work, and also, Valve should do it, since it's providing a lot of fixes that original HLDS should implement. That's more than a valid reason.
__________________
Quote:
Originally Posted by joropito View Post
You're right Metalicross
meTaLiCroSS is offline
DreamStalker
Junior Member
Join Date: Jun 2015
Old 06-21-2015 , 03:22   Re: ReHLDS, Reverse-engineered HLDS
Reply With Quote #9

All, thank you for your answers!
fysiks, It may violate copyright law, but I'm not going to have discussion about this, because I'm not a lawyer. I'm a developer, who wants to create amazing things. If admins/moders decide that this topic violates something, it will be deleted/trashed.

Quote:
Originally Posted by Spirit_12 View Post
Code:
Distributor ID: Ubuntu
Description:    Ubuntu 15.04
Release:        15.04
Codename:       vivid
My OS is up do date with the latest Ubuntu release. It seems that your project requires ppa release.

PHP Code:
Error:./libstdc++.so.6version `GLIBCXX_3.4.20' not found (required by /home/user/hlds/engine_i486.so)
Unable to load engine, image is corrupt. 
I'm pretty sure I fixed this issue about a week ago. Have you tried the latest build?
DreamStalker is offline
TjaardA
Junior Member
Join Date: Jul 2011
Location: Netherlands
Old 06-21-2015 , 07:02   Re: ReHLDS, Reverse-engineered HLDS
Reply With Quote #10

hi DreamStalker,

Just don't understaind your issues on the current HLDS version: v1.1.2.7Stdio 6153 secure (10)
FPS drops obviously as a high-latency player connects, where the FPS previously were more stable.
While on the original HLDS everybody got a LAG problem, when a high-latency player connected.
JIT compilation needs extra layers software like JAVA installed.
Also Implementing SSE math. will make ReHLDS less compatible,

Please explain: ReHLDS should produce data that bit-to-bit equal to data
produced by original HLDS when both apps are fed with similar incoming data.

TjaardA

Last edited by TjaardA; 06-21-2015 at 07:04.
TjaardA is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 12:33.


Powered by vBulletin®
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Theme made by Freecode