Sidebar

OpenHLDS: an open-sourced HLDS

2010kohtep

New member
07.08.14
4
0
0
OpenHLDS: an open-sourced HLDS

Описание
OpenHLDS - это open-source сервер игры Half-Life 1 и ее модификаций, включая Counter-Strike. Имеется поддержка 47-48 протоколов, а также лицензионных клиентов Steam. Существующие серверные аддоны, теоретически, должны работать без проблем. Начиная с обыкновенной адаптации структур оригинального HLDS от Valve, за 4 месяца разработки этот проект перерос в рабочий и играбельный сервер.

Компиляция
Возьмите готовые файлы из ./bin или скомпилируйте сервер самостоятельно. Любой компилятор Object Pascal кода должен это осуществить. Код предназначен для Delphi (начиная с версии 6), а также FPC (начиная с версии 2.x).

Скомпилированный исполняемый файл (hlds.exe) запускается так же, как и обыкновенный HLDS сервер. Например: hlds -game cstrike -port 27017 -maxplayers 11

Статус
Присутствует возможность использования на 64-разрядной платформе, однако это не было протестировано в связи с отсутствием 64-разрядных игровых библиотек. Исполняемые файлы Linux отсутствуют в данный момент.

Некоторый функционал сервера недоступен или всё еще не разработан. Этим функционалом является:

- Возможность кика/бана
- Фильтрация IP
- Удаленное управление (RCON)
- Парсер varargs; функции varargs могут получать только первый аргумент (называемый форматируемой строкой, или "fmt"). Форматированная строка будет отправлена движку такой, какой она является. Это не является большой проблемой, однако необходимо разработать более эффективный и простой алгоритм парсинга
- Пользовательский интерфейс (пока что это неблокирующая stdin/stdout обертка)
- Поиск файлов (FindFirst, FindNext): "maps *" команда не работает

Известные баги
Список содержит баги, которые уже известны, но еще не были исправлены.

- mapcycle (необходим парсер varargs)
- Список энтити не соответствует триггерам и moveents: это вызывает "дерганное" движение по лесницам и в воде.
- Падение @ g_pSoundent->* @ gamedll OnFrame обработчик
- mp_autokick (необходима команда "kick")
- Падение при roundend при использовании последней gamedll игры Counter-Strike, причина неизвестна
- Ошибка, связанная с делением на ноль в SV_ExtractFromUserInfo (спасибо одному парню из России за ее обнаружение). Исправлена, однако исправление будет выложено позже. Причиной тому была переменная sv_defaultupdaterate, которая не регистрировалась.
- Первый fullupdate всегда будет заблокирован, если фильтр включен. Исправлено, теперь фильтр намного упрощен.
- После отключения игрока от сервера, он все еще будет виден в таблице игроков
- Проблема, связанная с клиппингом на карте de_nuke (спаун CT). Вполне возможно, что это вообще не серверная неисправность
- Сбои в HPAK при смене карты; исправлено
- Эксплойт переполнения буфера (server reliable buffer); исправлено

Если вы обнаружили какой-либо баг, то вы можете пройти по ссылке, кликнуть "New Issue" и ввести информацию о найденной неисправности: текст из консоли, инструкция по вызову бага. Каждый кусочек информации может оказаться полезным.

Лицензия
Отсутствует на данный момент.

Также были включены сторонние компоненты:

- Библиотека BZip2, BSD
- Libc заголовки для Kylix, GPL версии 2
- Немного низкоуровнего программирования из проекта FastCode

Контактная информация и благодарности
Отсутствует на данный момент.

Ссылка на скачивание
https://github.com/unnamed10/openhlds
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
У меня такой вопрос. Проект сознательно переводили на паскаль?
Потому что оригинал был на С++, тоже весьма кривой и нестабильный.
 

Torcie

New member
18.02.14
18
1
3
Дядя Миша сказав(ла):
У меня такой вопрос. Проект сознательно переводили на паскаль?
Потому что оригинал был на С++, тоже весьма кривой и нестабильный.
А там есть voice_recorder?
Дядя Миша: Я так понимаю вы больше любите одиночную игру, раз xash3d имеет другой протокол?
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 Torcie: эти два события не очень сильно связаны. Протокол у меня другой, потому что я вводил всякие ништяки, которые не смогли бы работать на оригинальном. Например, поддержка больших карт, но не только.
 

Torcie

New member
18.02.14
18
1
3
Дядя Миша сказав(ла):
2 Torcie: эти два события не очень сильно связаны. Протокол у меня другой, потому что я вводил всякие ништяки, которые не смогли бы работать на оригинальном. Например, поддержка больших карт, но не только.
Проект на плюхах раз кривой значит, он с нуля писался?
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 Torcie: а я где-то утверждал, что он там присутствует?

Post automatically merged:

Я поясню в чём дело, чтобы было понятнее. В незапамятные времена существовал такой проект OSHLDS, написанный какими-то западными программистами. Сам по себе этот проект представлял обычный декомпил swds.dll и писали его люди, которые больше понимают в асемблере и смещениях, нежели во внутреннем устройстве движка халфы. Поэтому в коде встречались забавные ошибки (обнаруженные лично мной). Ну и конечно то самое падение на pSoundEnt, которое предлагалось лечить выключением FramePointer в оптимизациях студии. Потом эта страничка благополучно исчезла, про проект все забыли и вот через полгода появляются никому не известные ребята с исходниками того самого проекта, но в целях конспирации переписанного на паскаль. И технично намекают, что этот проект был написан ими с нуля, цитирую:
Начиная с обыкновенной адаптации структур оригинального HLDS от Valve, за 4 месяца разработки этот проект перерос в рабочий и играбельный сервер.
Я полагаю даже самим вальвовцам понадобилось куда больше времени, чтобы написать приличный HLDS. Это во первых. Во вторых я бегло проанализировал код на паскале и убедился, что да, это именно тот самый проект, просто переделанный на паскаль. Там даже ошибки и ляпы совпадают 1 в 1.
В аттаче - оригинал.
Лишний раз убеждаюсь, что делфисты вообще ничего написать не в состоянии, только только портировать с С++ на свой любимый язык.
 

Вкладення

Останнє редагування:

2010kohtep

New member
07.08.14
4
0
0
Извиняюсь за опоздание, я здесь.
Дядя Миша,
Проект на Object Pascal был полностью написан с нуля. В официальном источнике сказано, что oshlds был обнаружен на полпути разработки openhlds, так что первый не имеет абсолютно ничего общего с последним.
Что по поводу цитирования сообщения из первого поста темы: существуют такие проекты, как CSXGuard, FTPHook и BaseHook, которые тоже написаны на Bornald Delphi 7, к слову. Чтобы заставить эти проекты работать вместе с движком игры, необходимо было сделать некоторый реверсинг, в частности те же таблицы функций и структуры, которые используются в движке. Автор подразумевал именно это, когда говорил "Начиная с обыкновенной адаптации структур оригинального HLDS от Valve". Он просто взял некоторые уже готовые наработки и, базируясь на них, начал свой новый проект.
Кроме этого, однажды мне выпала возможность наблюдать за созданием этого самого кода с помощью видеотрансляции, так что я более чем уверен, что oshlds не использовался в качестве опоры для перевода исходного кода.
Плюс ко всему, структуризация кода openhlds во многом отличается от oshlds. Под структуризацией я понимаю предпочитаемое распределение и разветвление потока кода, и отсутствие всяких unk000, unk004.
Ну и наконец, оба проекта есть перевод оригинального HLDS. Само собой, что они совпадают во многом.
 
Останнє редагування:

Torcie

New member
18.02.14
18
1
3
2010kohtep сказав(ла):
Извиняюсь за опоздание, я здесь.
Дядя Миша,
Проект на Object Pascal был полностью написан с нуля. В официальном источнике сказано, что oshlds был обнаружен на полпути разработки openhlds, так что первый не имеет абсолютно ничего общего с последним.
Что по поводу цитирования сообщения из первого поста темы: существуют такие проекты, как CSXGuard, FTPHook и BaseHook, которые тоже написаны на Bornald Delphi 7, к слову. Чтобы заставить эти проекты работать вместе с движком игры, необходимо было сделать некоторый реверсинг, в частности те же таблицы функций и структуры, которые используются в движке. Автор подразумевал именно это, когда говорил "Начиная с обыкновенной адаптации структур оригинального HLDS от Valve". Он просто взял некоторые уже готовые наработки и, базируясь на них, начал свой новый проект.
Кроме этого, однажды мне выпала возможность наблюдать за созданием этого самого кода с помощью видеотрансляции, так что я более чем уверен, что oshlds не использовался в качестве опоры для перевода исходного кода.
Плюс ко всему, структуризация кода openhlds во многом отличается от oshlds. Под структуризацией я понимаю предпочитаемое распределение и разветвление потока кода, и отсутствие всяких unk000, unk004.
Ну и наконец, оба проекта есть перевод оригинального HLDS. Само собой, что они совпадают во многом.
Запись трансляции есть?
 

2010kohtep

New member
07.08.14
4
0
0
Torcie,
Зачем мне нужно было делать запись трансляции, если она предназначалась для одноразового использования? В этом вряд ли есть какой-то смысл.
 

Torcie

New member
18.02.14
18
1
3
2010kohtep сказав(ла):
Torcie,
Зачем мне нужно было делать запись трансляции, если она предназначалась для одноразового использования? В этом вряд ли есть какой-то смысл.
Почти все сервисы делают запись. ;)
 

2010kohtep

New member
07.08.14
4
0
0
Torcie,
Такие сервисы, как твитч и justin.tv делают, это так. Но join.me, через который и проводилась трансляция, не поддерживает такой функции. Мне жаль.
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Проект на Object Pascal был полностью написан с нуля
Естественно, т.к. тот проект был на другом языке.
В официальном источнике сказано, что oshlds был обнаружен на полпути разработки
Что за источник такой?
необходимо было сделать некоторый реверсинг, в частности те же таблицы функций и структуры, которые используются в движке
Не некоторый, а самый что ни на есть полный. Либо смотреть в код OSHLDS.
Он просто взял некоторые уже готовые наработки и, базируясь на них, начал свой новый проект.
Я это же самое и говорю. Взяли OSHLDS и переписали на делфи зачемто.
Кроме этого, однажды мне выпала возможность наблюдать за созданием этого самого кода с помощью видеотрансляции
Это всё равно что снять репортаж о стройке элитного дома и на свой непроффесиональный взгляд похвалить работу строителей. А через год тот дом пойдет трещинами. Ну это я пример привёл.
Плюс ко всему, структуризация кода openhlds во многом отличается от oshlds
Вообще-то всё совпадает с пугающей точностью. Я за свою жизнь проанализировал сотни движков, устроенных на базе первой второй и третьей кваки и хорошо знаю о чём говорю. Совпадает вообще всё, вплоть до бага с Frame Pointer.
предпочитаемое распределение и разветвление потока кода
Что такое поток кода?
отсутствие всяких unk000, unk004
Хорошо, хоть что-то было сделано. Но не показатель.
 

Game Server

Доноры Красавчики

Користувачі онлайн

Немає користувачів онлайн.