При хостинг поддержке Интернет-сообщества VBIOS CS-Mapping.com.ua
Вернуться   CS-Mapping.com.ua > Forum > Общалка > Офф-Топик
Ник
Пароль
Регистрация Правила форума FAQ Пользователи Администрация Календарь Поиск За 24 часа Пометить все разделы прочитанными

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.08.2014, 20:59  #1
2010kohtep
2010kohtep
Новобранец
Регистрация: 07.08.2014
Сообщения: 4


По умолчанию 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
2010kohtep вне форума Ответить с цитированием
Старый 10.08.2014, 21:04  #2
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

У меня такой вопрос. Проект сознательно переводили на паскаль?
Потому что оригинал был на С++, тоже весьма кривой и нестабильный.
Дядя Миша вне форума Ответить с цитированием
Старый 10.08.2014, 21:21  #3
Torcie
Torcie
Рядовой
Регистрация: 18.02.2014
Сообщения: 18


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: У меня такой вопрос. Проект сознательно переводили на паскаль?
Потому что оригинал был на С++, тоже весьма кривой и нестабильный.
А там есть voice_recorder?
Дядя Миша: Я так понимаю вы больше любите одиночную игру, раз xash3d имеет другой протокол?
Torcie вне форума Ответить с цитированием
Старый 10.08.2014, 21:25  #4
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

2 Torcie: эти два события не очень сильно связаны. Протокол у меня другой, потому что я вводил всякие ништяки, которые не смогли бы работать на оригинальном. Например, поддержка больших карт, но не только.
Дядя Миша вне форума Ответить с цитированием
Старый 10.08.2014, 21:41  #5
Torcie
Torcie
Рядовой
Регистрация: 18.02.2014
Сообщения: 18


Video

[ Цитата ] Сообщение от Дядя Миша: 2 Torcie: эти два события не очень сильно связаны. Протокол у меня другой, потому что я вводил всякие ништяки, которые не смогли бы работать на оригинальном. Например, поддержка больших карт, но не только.
Проект на плюхах раз кривой значит, он с нуля писался?
Torcie вне форума Ответить с цитированием
Старый 10.08.2014, 22:34  #6
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

2 Torcie: что сказать-то хотел?
Дядя Миша вне форума Ответить с цитированием
Старый 10.08.2014, 22:44  #7
Torcie
Torcie
Рядовой
Регистрация: 18.02.2014
Сообщения: 18


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: 2 Torcie: что сказать-то хотел?
То что там отсутствует код Xash3D.
Torcie вне форума Ответить с цитированием
Старый 10.08.2014, 22:52  #8
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

2 Torcie: а я где-то утверждал, что он там присутствует?

Дядя Миша, подумав, добавил 10.08.2014 в 23:50
Я поясню в чём дело, чтобы было понятнее. В незапамятные времена существовал такой проект OSHLDS, написанный какими-то западными программистами. Сам по себе этот проект представлял обычный декомпил swds.dll и писали его люди, которые больше понимают в асемблере и смещениях, нежели во внутреннем устройстве движка халфы. Поэтому в коде встречались забавные ошибки (обнаруженные лично мной). Ну и конечно то самое падение на pSoundEnt, которое предлагалось лечить выключением FramePointer в оптимизациях студии. Потом эта страничка благополучно исчезла, про проект все забыли и вот через полгода появляются никому не известные ребята с исходниками того самого проекта, но в целях конспирации переписанного на паскаль. И технично намекают, что этот проект был написан ими с нуля, цитирую:
[ Цитата ] Начиная с обыкновенной адаптации структур оригинального HLDS от Valve, за 4 месяца разработки этот проект перерос в рабочий и играбельный сервер.
Я полагаю даже самим вальвовцам понадобилось куда больше времени, чтобы написать приличный HLDS. Это во первых. Во вторых я бегло проанализировал код на паскале и убедился, что да, это именно тот самый проект, просто переделанный на паскаль. Там даже ошибки и ляпы совпадают 1 в 1.
В аттаче - оригинал.
Лишний раз убеждаюсь, что делфисты вообще ничего написать не в состоянии, только только портировать с С++ на свой любимый язык.
[ Вложения ]
Тип файла: rar OSHLDS_06152008--0300.part01.rar (293.0 Кбайт, 118 просмотров)
Тип файла: rar OSHLDS_06152008--0300.part02.rar (293.0 Кбайт, 100 просмотров)
Тип файла: rar OSHLDS_06152008--0300.part03.rar (143.5 Кбайт, 100 просмотров)

Последний раз редактировалось Дядя Миша, 10.08.2014 в 23:50.
Дядя Миша вне форума Ответить с цитированием
Старый 11.08.2014, 22:40  #9
2010kohtep
2010kohtep
Новобранец
Регистрация: 07.08.2014
Сообщения: 4


По умолчанию

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

Последний раз редактировалось 2010kohtep, 11.08.2014 в 22:58.
2010kohtep вне форума Ответить с цитированием
Старый 11.08.2014, 23:08  #10
Torcie
Torcie
Рядовой
Регистрация: 18.02.2014
Сообщения: 18


По умолчанию

[ Цитата ] Сообщение от 2010kohtep: Извиняюсь за опоздание, я здесь.
Дядя Миша,
Проект на Object Pascal был полностью написан с нуля. В официальном источнике сказано, что oshlds был обнаружен на полпути разработки openhlds, так что первый не имеет абсолютно ничего общего с последним.
Что по поводу цитирования сообщения из первого поста темы: существуют такие проекты, как CSXGuard, FTPHook и BaseHook, которые тоже написаны на Bornald Delphi 7, к слову. Чтобы заставить эти проекты работать вместе с движком игры, необходимо было сделать некоторый реверсинг, в частности те же таблицы функций и структуры, которые используются в движке. Автор подразумевал именно это, когда говорил "Начиная с обыкновенной адаптации структур оригинального HLDS от Valve". Он просто взял некоторые уже готовые наработки и, базируясь на них, начал свой новый проект.
Кроме этого, однажды мне выпала возможность наблюдать за созданием этого самого кода с помощью видеотрансляции, так что я более чем уверен, что oshlds не использовался в качестве опоры для перевода исходного кода.
Плюс ко всему, структуризация кода openhlds во многом отличается от oshlds. Под структуризацией я понимаю предпочитаемое распределение и разветвление потока кода, и отсутствие всяких unk000, unk004.
Ну и наконец, оба проекта есть перевод оригинального HLDS. Само собой, что они совпадают во многом.
Запись трансляции есть?
Torcie вне форума Ответить с цитированием
Старый 11.08.2014, 23:11  #11
2010kohtep
2010kohtep
Новобранец
Регистрация: 07.08.2014
Сообщения: 4


По умолчанию

Torcie,
Зачем мне нужно было делать запись трансляции, если она предназначалась для одноразового использования? В этом вряд ли есть какой-то смысл.
2010kohtep вне форума Ответить с цитированием
Старый 11.08.2014, 23:16  #12
Torcie
Torcie
Рядовой
Регистрация: 18.02.2014
Сообщения: 18


Лампочка, гори!

[ Цитата ] Сообщение от 2010kohtep: Torcie,
Зачем мне нужно было делать запись трансляции, если она предназначалась для одноразового использования? В этом вряд ли есть какой-то смысл.
Почти все сервисы делают запись.
Torcie вне форума Ответить с цитированием
Старый 11.08.2014, 23:21  #13
2010kohtep
2010kohtep
Новобранец
Регистрация: 07.08.2014
Сообщения: 4


По умолчанию

Torcie,
Такие сервисы, как твитч и justin.tv делают, это так. Но join.me, через который и проводилась трансляция, не поддерживает такой функции. Мне жаль.
2010kohtep вне форума Ответить с цитированием
Старый 11.08.2014, 23:22  #14
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

[ Цитата ] Проект на Object Pascal был полностью написан с нуля
Естественно, т.к. тот проект был на другом языке.
[ Цитата ] В официальном источнике сказано, что oshlds был обнаружен на полпути разработки
Что за источник такой?
[ Цитата ] необходимо было сделать некоторый реверсинг, в частности те же таблицы функций и структуры, которые используются в движке
Не некоторый, а самый что ни на есть полный. Либо смотреть в код OSHLDS.
[ Цитата ] Он просто взял некоторые уже готовые наработки и, базируясь на них, начал свой новый проект.
Я это же самое и говорю. Взяли OSHLDS и переписали на делфи зачемто.
[ Цитата ] Кроме этого, однажды мне выпала возможность наблюдать за созданием этого самого кода с помощью видеотрансляции
Это всё равно что снять репортаж о стройке элитного дома и на свой непроффесиональный взгляд похвалить работу строителей. А через год тот дом пойдет трещинами. Ну это я пример привёл.
[ Цитата ] Плюс ко всему, структуризация кода openhlds во многом отличается от oshlds
Вообще-то всё совпадает с пугающей точностью. Я за свою жизнь проанализировал сотни движков, устроенных на базе первой второй и третьей кваки и хорошо знаю о чём говорю. Совпадает вообще всё, вплоть до бага с Frame Pointer.
[ Цитата ] предпочитаемое распределение и разветвление потока кода
Что такое поток кода?
[ Цитата ] отсутствие всяких unk000, unk004
Хорошо, хоть что-то было сделано. Но не показатель.
Дядя Миша вне форума Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 06:33.


Designed by FT-502, [email protected] Originally by Ulric Spaak
Hosted by: VBIOS.COM, Powered by: vBulletin
copyright © 2002 - 2021 by CS-Mapping.com.ua Community