ReHLDS: документация серверной зависимости для HLDS
О материале
Возможности
ReHLDS — результат обратного анализа оригинальных сборок HLDS 6152/6153 с использованием отладочных данных DWARF из Linux-версии engine_i486.so. В проекте также исправлены обнаруженные дефекты и потенциальные ошибки. Его цель — более стабильная, чем официальная, версия выделенного сервера Half-Life и расширенный API для модификаций и плагинов. Оптимизация производительности, в том числе с помощью SSE для векторных вычислений, названа в README будущей целью.
Зависимость добавляет настройки сервера для работы с ресурсами, сетевым трафиком и командами игроков, а также команды для просмотра кэшированных ресурсов и управления списком IP-адресов RCON.
Требования и совместимость
ReHLDS совместим с версией HLDS, загруженной через steamcmd, с версией движка не выше 8684. Старые платформы ветки 5xxx и ниже, полученные через hldsupdatetool, не поддерживаются. Для запуска бинарных файлов требуются наборы инструкций SSE, SSE2 и SSE3; SSE4.1 и SSE4.2 могут улучшить производительность.
ReHLDS не имеет бинарной совместимости с оригинальным HLDS, поскольку собран другими компиляторами. Плагины, анализирующие машинный код, в частности Orpheu, могут не работать.
Сборка из исходного кода
В Windows требуется Visual Studio 2015 с поддержкой C++14 или новее. В Linux требуется CMake версии 3.10 или новее; GCC 4.9.2+, ICC 15.0.1 20141023+ и LLVM (Clang) 6.0+ указаны как необязательные компиляторы. Это требования для сборки, а не подтверждение наличия готового плагина или бинарного файла в архиве.
Установка
README предлагает загрузить совместимую версию HLDS через steamcmd, а затем заменить оригинальный swds.dll или engine_i486.so соответствующим бинарным файлом ReHLDS. В Windows также можно скопировать swds.pdb с отладочной информацией.
app_set_config 90 mod cstrike
app_update 90 -beta steam_legacy validateВ README отдельно указаны сборки релизов и разработки. Для Linux-релизов также описана проверка подписи GPG: импортировать ключ командой gpg --import 63547829004f07716f7be4856c32c4282e60fb67.asc, а после загрузки архива и его файла .asc выполнить gpg --verify some-rehlds.zip.asc some-rehlds.zip.
Настройки
В документации перечислены следующие параметры и начальные значения:
listipcfgfile— файл постоянных IP-блокировок, по умолчанию:listip.cfg;syserror_logfile— журнал системных ошибок, по умолчанию:sys_error.log.sv_auto_precache_sounds_in_models— автоматическая предварительная загрузка звуков моделей (0);sv_delayed_spray_upload— загружать спреи после входа в игру (0);sv_echo_unknown_cmd— сообщать в консоли о неизвестной команде (0);sv_rcon_condebug— выводить отладочную информацию RCON (1).sv_force_ent_intersection— принудительное столкновение сущностей SOLID_SLIDEBOX для сторонних плагинов (0);sv_rehlds_force_dlmax— устанавливать клиентский cl_dlmax в 1024 (0);sv_rehlds_hull_centering— использовать центр hull вместо угла (0).sv_rehlds_movecmdrate_max_avg— средний порог команд move (400);sv_rehlds_movecmdrate_avg_punish— длительность наказания в минутах (5);sv_rehlds_movecmdrate_max_burst— порог всплеска команд move (2500);sv_rehlds_movecmdrate_burst_punish— длительность наказания за всплеск (5). Значение наказания 0 означает постоянный бан, отрицательное значение — кик.sv_rehlds_send_mapcycle— отправлять mapcycle.txt в serverinfo (0);sv_rehlds_stringcmdrate_max_avg— средний порог string-команд (80);sv_rehlds_stringcmdrate_avg_punish— наказание за средний порог (5);sv_rehlds_stringcmdrate_max_burst— порог всплеска string-команд (400);sv_rehlds_stringcmdrate_burst_punish— наказание за всплеск (5).sv_rehlds_userinfo_transmitted_fields— ключи userinfo, передаваемые клиентам; пустое значение означает передачу всех полей, кроме начинающихся с подчёркивания (значение по умолчанию — пустая строка). Ключи записываются с префиксом в виде обратной косой черты, например:namemodel*sid*hltvbottomcolortopcolor.sv_rehlds_attachedentities_playeranimationspeed_fix— исправление скорости gait-анимации игрока с присоединёнными сущностями (0); документация предупреждает о возможных задержках анимации при низком cl_updaterate.sv_rehlds_maxclients_from_single_ip— лимит одновременных подключений с одного IP-адреса (5);sv_rehlds_local_gametime— локальное игровое время для уменьшения задержек на долгой карте (0).sv_rehlds_allow_large_sprays— разрешить логотипы больше 64×64 (1);sv_use_entity_file— режим файлов сущностей maps/[название карты].ent: 0 использует оригинальные сущности, 1 — существующий файл .ent, 2 — использует его или создаёт, если файла нет.sv_usercmd_custom_random_seed— дополнительное случайное зерно сервера, независимое от клиента (0).sv_net_incoming_decompression— распаковывать входящие сжатые передачи файлов (1);sv_net_incoming_decompression_max_ratio— максимальное соотношение сжатых и распакованных данных, пределы 0–100 (80.0);sv_net_incoming_decompression_max_size— максимальный размер после распаковки, пределы 16–65536 (65536 байт).sv_net_incoming_decompression_min_failures— минимум ошибок до пометки подключения для возможного наказания (4);sv_net_incoming_decompression_max_failures— максимум ошибок в временном окне (10);sv_net_incoming_decompression_min_failuretime— минимальный интервал отслеживания в секундах (0.1);sv_net_incoming_decompression_punish— наказание за некорректные фрагменты bzip2, в минутах (-1; отрицательное значение означает кик).sv_tags— необязательные теги сервера через запятую (пустая строка);sv_filterban— IP-фильтрация: -1 отклоняет всех, 0 отключает проверки, 1 проверяет IP-баны (по умолчанию 1).sv_rehlds_movecmd_max_ticks— максимум команд движения от игрока за кадр (24);sv_rehlds_movecmd_max_null_streak— максимум последовательных пустых команд (0 отключает проверку);sv_rehlds_movecmd_clamp_interp— блокировать некорректный ex_interp (1);sv_rehlds_movecmdtime_samples— количество кадров для усреднения скорости (120).sv_rehlds_movecmdtime_max_error— допустимое отклонение внутренних часов клиента в миллисекундах (300);sv_rehlds_movecmdtime_max_scaleіsv_rehlds_movecmdtime_min_scale— верхний и нижний пределы скорости игры (3.0 и 0.5);sv_rehlds_movecmdtime_max_warnings— лимит предупреждений до наказания (-1 отключает обнаружение);sv_rehlds_movecmdtime_punish— наказание за ускорение или замедление (-1, кик).
Команды
rescountпоказывает общее количество предварительно загруженных ресурсов.reslist <sound | model | decal | generic | event>выводит список ресурсов выбранного типа; команда помогает контролировать ограничения GoldSrc на precache.rcon_adduser <ipaddress/CIDR>добавляет IP-адрес или диапазон в список пользователей RCON с привилегированным доступом к консоли.rcon_deluser <ipaddress> {removeAll}удаляет адрес или диапазон;rcon_usersпоказывает записи списка.
Согласно README, если пользователей RCON нет, доступ разрешён всем, у кого есть правильный пароль. ReHLDS распространяется по лицензии MIT; ранее проект имел лицензию GPLv3, а переход состоялся в июле 2025 года.
Скриншоты плагина

Загрузка
Версия: 3.15.0.896.
ZIP содержит исходный код; перед установкой может потребоваться компиляция. Файл плагина: @dependency.
Комментарии (0)