Сборка кооп сервера из Valve SDK 2013 -
13.08.2016, 02:18
Не так давно меня спрашивали о проблемах кооп сервера. Поскольку я в кооп режим не играю, то неделю назад я решил собрать кооп сервер для теста карт и дабы разобраться, что к чему и почему кооп сервер вечно собирает проблемы. Поскольку я очень не уважаю стоковые сервера, скачанные со стим пайпа, было решено собирать из Valve SDK 2013. Сразу ядро сервера подверглось изменениям, о которых ниже, но оговорюсь сразу, что здесь есть отличия от популярного нынче SourceMod-расширения от некоего Даниила, в чём разница, в двух словах не отвечу, поэтому не буду вдаваться в подробности, ограничусь только тем, что сервер без сурсмода это проще, надёжнее, быстрее и вообще лучше во всём. К тому же, есть много вещей, которые просто не могут быть реализованы под сурсмодом, а те, что могут, будут не оптимальны. То есть, от использования сурсмода решено было отказаться совсем.
Теперь основные изменения в кооп режиме:
Исправлена куча общих для всех режимов багов (слишком много, чтобы описывать)
Корректно исправлен искусственный интеллект в мультиплеере (скорректирован ВЕСЬ код, который не работал в мультиплеере. Да, это создало действительно много работы)
Прописаны отношения между NPC и игроками
Работают все NPC из HL2 и эпизодов (здесь следует оговориться, что многих необходимо ещё добавлять в код сервера, но гипотетически любой из них будет работать без проблем)
NPC лагокомпенсированы (игроки из мухосрансков - добро пожаловать!)
Добавлено новое оружие (на данный момент это супер гравиган и гаусс пушка, и это не просто замена модельки, это оружие полностью реализует оригинальную логику)
Вортигонты на картах не ломаются =) (бессмертные вортигонты, я об этом)
Разблокирована часть искусственного интеллекта у различных NPC, что приводит к более похожему на синглплеер поведению
И всякие мелочи, вроде исправления спаунточек, нулевых указателей и другого, что не позволяет запускать карты с других модов (многие карты, например, с Synergy могут работать без проблем), изменения боезапаса, жизни игроков и прочие улучшения геймплея
Ближайшие планы:
Сделать возможным прохождение оригинальных карт HL2 и эпизодов в мультиплеере
Добавление остальных NPC с эпизодов
Добавление оружия (возможно, с беты HL, ещё не определился)
Автоматические чекпоинты и восстановление игрока после смерти (автоматический аналог !save)
Цель всего этого нонсенса - я хочу исправить код сервера настолько, насколько это возможно, в том числе, для кооп режима. Исправлять всякие там сервера - это моё хобби.
Суть сего поста. Мне нужна помощь с тестированием, нужны советы и корректировки по геймплею, что убрать, а что добавить. Также мне нужны списки хороших карт для кооперативного режима, ибо я не представляю, где их брать. Совершенно. Наверняка есть какие-то хорошие карты, на которых что-то не работает и это непременно надо исправить. Если кто-либо желает помочь, пишите, дам доступ на тестовый сервер, добавлю в стим и буду премного благодарен. Если желающие найдутся, готов по приведению сервера в относительную кондицию отдать server_srv.so в хорошие руки =) Ибо кооп мне не интересен, чтобы в него играть. Ну, а ежели нет, то и суда не будет.
Сегодняшний новый NPC - министрайдер (он же хантер). Любуемся и говорим "Привет!"
Многие программеры считают SourceMod гавном, которое может только свистоперделки добавить и ничего более.
Не говно. В случае стокового сервера он незаменим. А вот если доступен код игры, то от него смысла мало. Максимум, что можно использовать, это голосования и мультиязычность, которые в сурсмоде легко реализуются.
Цитата:
Сталкера. И как второстепенного врага можно добавить соетника
Разве сталкер не работает в данный момент на первом сервере? У меня они точно работают, запускал карту с сина, где они есть, буйный точно может сказать, как карта называлась, а я не помню.
Советника в принципе можно =) Только есть один момент - советники в картах не существуют. Так что либо пересобирать карты, либо писать новые. Можно и проще - просто добавить на нужные карты в нужные места в рамках сервера, но что они будут делать? Я не знаю. Они вроде как применяют какое-то неизвестное науке воздействие, в результате в сингле главный герой корчится в муках, а как это в мультиплеере? =) Я без понятия. Ну, а чтобы летали по карте, это вполне можно сделать.
буйный точно может сказать, как карта называлась, а я не помню.
я тоже не кооп задрот, карту не помню реально). но сталкеры действительно работали).
про советников больше скажу что всё что они делали в еп2 это скриптовые сцены, по крайней мере очень похоже на то. запихать всё это в AI наверное нереально).
Цитата:
Сообщение от drummer
Сталкеры редко появляются:-)
сталкеров нет потому что их и на карте нет. это уже к мапперам вопросы.
Цитата:
Сообщение от drummer
И, кстати, если это возможно, можно добавить обитателей мира Зен. Такие как: Пехотинец
Пехотинцы из Зен? ЛОЛ, спасибо, улыбнуло ... Советую подучить устройство вселенной игры HL, а лучше просто повнимательней перепройти игру (думаю там всё понятно), чтоб впредь не морозить такой чепухи =).
да и потом зачем пехотинцы из HL1 если есть комбайны и ГОшники? смысл?
Цитата:
Сообщение от drummer
гаргантюа
вот этот на синовских картах встречаюется, думаю реально. Сам просил уже VSDK2013 сделать это). Темболее это есть и в самом SYN и у Дани\Воблы.
насчёт остальных не уверен, да и опять же их нету на картах. если карт с ними нет, то нету смысла их добавлять на сервер. И скорее всего невозможно.
Цитата:
Сообщение от drummer
А как босса на некоторых картах можно добавить нихиланта.
Пехотинцы из Зен? ЛОЛ, спасибо, улыбнуло ... Советую подучить устройство вселенной игры HL, а лучше просто повнимательней перепройти игру (думаю там всё понятно), чтоб впредь не морозить такой чепухи =).
Пересматривал. Поэтому и написал. Пехотинец - — существо Зена, которое выполняет функцию солдата в цивилизации Нихиланта. Он является частым противником игрока в оригинальной игре Half-Life и всех её дополнениях. http://ru.wikipedia.org/wiki/%D0%97%...86.D0.B5.D0.B2
чёто мне кажется в оригинальном виде нормально пойдут далеко не все карты сина. Сам видишь как порой бывает, то народ респается абсолютно в разных местах карты, то освещения нет, то неба, то вообще сервак тупо крашится и на смене карты в том числе, гдето и у комбов оружия нет (если это оружие синовское а не HL2), или триггеры не срабатывают, или вообще всё чёрно-фиолетовое с кучей эрроров так как не хватает текстур. короче проблем хватает. При этом как видишь с теми же Даниными портированными картами проблем либо намного меньше, либо их вообще нет.
Или сами карты SYN придётся переделывать, или сервак целиком и полностью подстраивать под них, но во втором случае надо ещё учитывать что есть и другие карты - тупо дмовские, OC'шные и может чтото ещё, совместимость с ними тоже нужна.
надеюсь ты знаешь что делаешь. но там уже тебе видней.
хмм, довольно сложная задача полностью отказаться от sourcemod o.O. ну ты мастер.
PS. Слушай, дай ещё раз адрес тестового сервера, я потерял). спс.
Последний раз редактировалось БУЙНЫЙ; 15.08.2016 в 13:33..
а вот здесь ты ошибаешься. зайди на сервера RLS, глянь что там да как и каким образом. Там абсолютно ни единого плагина - всё тупо из исходников. Я уверен у тебя язык не повернётся назвать этот сервер гавном, сколько разных плюшек там намешали). В сурсмоде ты никогда и низачто не сможешь сделать и половины этого).
Я считаю это высший пилотаж - это совершенно другой уровень. Только нужно опупенно шарить в программировании. Многие программеры считают SourceMod гавном, которое может только свистоперделки добавить и ничего более. Отчасти они правы. хотя никто не спорит, что у SourceModа свои плюсы - в первую очередь это простота и переносимость.
Последний раз редактировалось БУЙНЫЙ; 15.08.2016 в 14:49..
Буйному. Простой вариант - убрать некоторые точки спауна в рантайм (согласен, это костыль). Оружие можно вполне заменить стандартным. Навскидку, это будет additionalequipment. Так что эти проблемы решаемы. Насчёт триггеров - верно. Тогда лучше сложный вариант - пересборка карты. Это мы тоже умеем, главное, чтобы овчинка стоила выделки.
Тестовый выключен до того момента, как я причешу код и соберу сервер под линукс. Тогда и спишемся. Сейчас мне нужно разобрать модельки и посмотреть, что из партиклов лить на фаст дл с эпизодов, дабы не грузить более полутора гигабайт того, что не нужно новым npc.
2 mOjO: не абсурд. Если можешь привести существенные аргументы, почему сурсмод must have, я готов выслушать. Но у меня имеется куча других аргументов, почему он обязан убраться с сервера, собранного из SDK. Но вдруг кто-то здесь сможет объяснить мне, зачем мне сурсмод, если всё то, что он может мне предложить, я в состоянии написать в сервере, при этом проще и быстрее, а главное, надёжнее. Если так, готов забрать свои слова обратно, но я думаю, что здесь не найдётся таких людей.
Более того, с моим сервером некоторые из расширений сурсмода уже будут просто отказываться работать по причине отсутствия валидной геймдаты (расширение либо отключится, либо будет крашить сервер). Очень простой пример - sdhooks. И я ума не приложу, зачем мне его хуки, выполняемые, говоря грубо, через Китай, если всё, что может хукнуть sdhooks, а также гораздо больше мне доступно в исходном коде сервера.
Буйному. Простой вариант - убрать некоторые точки спауна в рантайм (согласен, это костыль). Оружие можно вполне заменить стандартным. Навскидку, это будет additionalequipment. Так что эти проблемы решаемы. Насчёт триггеров - верно. Тогда лучше сложный вариант - пересборка карты. Это мы тоже умеем, главное, чтобы овчинка стоила выделки.
Тестовый выключен до того момента, как я причешу код и соберу сервер под линукс. Тогда и спишемся. Сейчас мне нужно разобрать модельки и посмотреть, что из партиклов лить на фаст дл с эпизодов, дабы не грузить более полутора гигабайт того, что не нужно новым npc.
2 mOjO: не абсурд. Если можешь привести существенные аргументы, почему сурсмод must have, я готов выслушать. Но у меня имеется куча других аргументов, почему он обязан убраться с сервера, собранного из SDK. Но вдруг кто-то здесь сможет объяснить мне, зачем мне сурсмод, если всё то, что он может мне предложить, я в состоянии написать в сервере, при этом проще и быстрее, а главное, надёжнее. Если так, готов забрать свои слова обратно, но я думаю, что здесь не найдётся таких людей.
Более того, с моим сервером некоторые из расширений сурсмода уже будут просто отказываться работать по причине отсутствия валидной геймдаты (расширение либо отключится, либо будет крашить сервер). Очень простой пример - sdhooks. И я ума не приложу, зачем мне его хуки, выполняемые, говоря грубо, через Китай, если всё, что может хукнуть sdhooks, а также гораздо больше мне доступно в исходном коде сервера.
Проще ,быстрее и надежнее - согласен, тем более, если ты шаришь, конкретно с этой игрой возможно и не нужен sm, т.к. я сам убедился как там все криво работает, а насчет плюшек, с sm так же можно любые плюшки поставить, зная язык программирования sourcepawn, у меня знакомый на свой серв ставит любые фичи
ну абсолютно любые это конечно врядли. в SDK всёравно больше возможностей когда весь код сервера как на ладони. SourceMod не резиновый.
Да и если слишком дофига всего, если навешать 100+ плагинов, это и ресурсы сожрёт, и память, и вероятность глюков высока по разным причинам. Такие сервера я видел, идеальной их работу не назовёшь).