Git Product home page Git Product logo

rehlds's Introduction

Rehlds Build Status Download

Reverse-engineered (and bugfixed) HLDS

What is this?

ReHLDS is a result of reverse engineering of original HLDS (build 6152/6153) using DWARF debug info embedded into linux version of HLDS, engine_i486.so

Along with reverse engineering, a lot of defects and (potential) bugs were found and fixed

You can try play on one of the servers that using rehlds: http://www.gametracker.com/search/?search_by=server_variable&search_by2=sv_version

Goals of the project

  • Provide more stable (than official) version of Half-Life dedicated server with extended API for mods and plugins
  • Performance optimizations (use of SSE for vector math for example) is another goal for the future

How can use it?

Rehlds is fully compatible with latest official HLDS downloaded by steamcmd. All you have to do is to download rehlds binaries and replace original swds.dll/engine_i486.so. For windows you can also copy a swds.pdb file with a debug information.
Warning! Rehlds is not compatible with an old 5xxx or below platforms downloaded by hldsupdatetool.

Compiled binaries are available here: http://nexus.rehlds.org/nexus/content/repositories/rehlds-dev/rehlds/rehlds/

Rehlds binaries require SSE, SSE2 and SSE3 instruction sets to run and can benefit from SSE4.1 and SSE4.2.

Archive's bin directory contains 2 subdirectories, 'bugfixed' and 'pure'

  • 'pure' version is designed to work exactly as official hlds engine
  • 'bugfixed' version contains some fixes and improvements

Warning! Rehlds is not binary compatible with original hlds since it's compiled with compilers other than ones used for original hlds. This means that plugins that do binary code analysis (Orpheu for example) probably will not work with rehlds.

Configuring

Bugfixed version of rehlds contains an additional cvars:

  • listipcfgfile // File for permanent ip bans. Default: listip.cfg
  • syserror_logfile // File for the system error log. Default: sys_error.log
  • sv_auto_precache_sounds_in_models <1|0> // Automatically precache sounds attached to models. Deault: 0
  • sv_delayed_spray_upload <1|0> // Upload custom sprays after entering the game instead of when connecting. It increases upload speed. Default: 0
  • sv_echo_unknown_cmd <1|0> // Echo in the console when trying execute an unknown command. Default: 0
  • sv_rcon_condebug <1|0> // Print rcon debug in the console. Default: 1
  • sv_force_ent_intersection <1|0> // In a 3-rd party plugins used to force colliding of SOLID_SLIDEBOX entities. Default: 0
  • sv_rehlds_force_dlmax <1|0> // Force a client's cl_dlmax cvar to 1024. It avoids an excessive packets fragmentation. Default: 0
  • sv_rehlds_hull_centering <1|0> // Use center of hull instead of corner. Default: 0
  • sv_rehlds_movecmdrate_max_avg // Max average level of 'move' cmds for ban. Default: 400
  • sv_rehlds_movecmdrate_avg_punish // Time in minutes for which the player will be banned (0 - Permanent, use a negative number for a kick). Default: 5
  • sv_rehlds_movecmdrate_max_burst // Max burst level of 'move' cmds for ban. Default: 2500
  • sv_rehlds_movecmdrate_burst_punish // Time in minutes for which the player will be banned (0 - Permanent, use a negative number for a kick). Default: 5
  • sv_rehlds_send_mapcycle <1|0> // Send mapcycle.txt in serverinfo message (HLDS behavior, but it is unused on the client). Default: 0
  • sv_rehlds_stringcmdrate_max_avg // Max average level of 'string' cmds for ban. Default: 80
  • sv_rehlds_stringcmdrate_avg_punish // Time in minutes for which the player will be banned (0 - Permanent, use a negative number for a kick). Default: 5
  • sv_rehlds_stringcmdrate_max_burst // Max burst level of 'string' cmds for ban. Default: 400
  • sv_rehlds_stringcmdrate_burst_punish // Time in minutes for which the player will be banned (0 - Permanent, use a negative number for a kick). Default: 5
  • sv_rehlds_userinfo_transmitted_fields // Userinfo fields only with these keys will be transmitted to clients via network. If not set then all fields will be transmitted (except prefixed with underscore). Each key must be prefixed by backslash, for example "\name\model\*sid\*hltv\bottomcolor\topcolor". See [wiki](https://github.com/dreamstalker/rehlds/wiki/Userinfo-keys) to collect sufficient set of keys for your server. Default: ""
  • sv_rehlds_attachedentities_playeranimationspeed_fix // Fixes bug with gait animation speed increase when player has some attached entities (aiments). Can cause animation lags when cl_updaterate is low. Default: 0
  • sv_rehlds_maxclients_from_single_ip // Limit number of connections from the single ip address. Default: 5

Commands

Bugfixed version of rehlds contains an additional commands:

  • rescount // Prints the total count of precached resources in the server console
  • reslist <sound | model | decal | generic | event> // Separately prints the details of the precached resources for sounds, models, decals, generic and events in server console. Useful for managing resources and dealing with the goldsource precache limits.

Build instructions

There are several software requirements for building rehlds:

  1. Java Development Kit (JDK) 7+ (http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
  2. For Windows: Visual Studio 2013 and later
  3. For Linux: Intel C++ Compiler 13 and later or GCC 4.9.2 or later (some earlier versions might work too)

Checking requirements

JDK version

Windows

> %JAVA_HOME%\bin\javac -version
javac 1.8.0_25

Linux

$ javac -version
javac 1.7.0_65

Visual Studio

Help -> About

ICC

$ icc --version
icc (ICC) 15.0.1 20141023

GCC

$ gcc --version
gcc (Debian 4.9.2-10) 4.9.2

Building

On Windows:

gradlew --max-workers=1 clean buildRelease
  • For faster building without unit tests use this:exclamation:
gradlew --max-workers=1 clean buildFixes

NOTE: You can also use Visual Studio to build, just select from the solution configurations list Release Swds or Debug Swds

On Linux (ICC):

./gradlew --max-workers=1 clean buildRelease
  • For faster building without unit tests use this:exclamation:
./gradlew --max-workers=1 clean buildFixes

On Linux (GCC):

./gradlew --max-workers=1 -PuseGcc clean buildRelease
  • For faster building without unit tests use this:exclamation:
./gradlew --max-workers=1 -PuseGcc clean buildFixes

Also there is a task buildEngine, it builds only engine, without other parts of the project.
Compiled binaries will be placed in the rehlds/build/binaries/ directory

How can I help the project?

Just install it on your game server and report problems you faced. Merge requests are also welcome :)

rehlds's People

Contributors

a1batross avatar adidasman1 avatar afwn90cj93201nixr2e1re avatar bryant1410 avatar chuvi-w avatar dreamstalker avatar ignaciofdm avatar in-line avatar jonatan1024 avatar levshisterov avatar s1lentq avatar sh1ft0x0ef avatar souvikdas95 avatar spark512 avatar theasmodai avatar thecrock avatar wpmgprostotema avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.