Хуки и sourcemod на cs2

Twelvee

Участник
Сообщения
75
Реакции
147
Привет!
Прошел уже месяц с прошлого треда про скриптинг в cs2 и я решил актуализировать информацию + рассказать чем занимается комьюнити AlliedModders в данный момент.

Начнем с главного - Sourcemod не портирован в кс2 и вероятно не будет. Активная разработка Sourcemod в кс2 не ведется, достаточно посмотреть коммиты и пулл-реквесты в репозитории sourcemod.
Metamod все так же работает на source2, что позволяет создать свой sourcemod сообществу, но судя по диалогам в дискорд сервере AlliedModders информации о таких наработках крайне мало, в основном люди просто спрашивают когда будет sourcemod.

Текущие проблемы, почему sourcemod и metamod до сих пор не портировали

1. Metamod и Sourcemod работают на библиотеке SourceHooks, которая в свою очередь позволяет цепляться к публичным интерфейсам Source (memory hook) через декларацию интерфейсов Valve в их SDK.
Самая последняя версия SDK позволяющая цепляться к cs2 серверу находится вот тут Update Dota & CS2 support by GAMMACASE · Pull Request #125 · alliedmodders/hl2sdk, за что огромное спасибо GAMMACASE
В данный момент ребята еще продолжают над ней работать.

2. Архитектура х64. Это критичное изменение для Sourcemod и Metamod, так как куча инструментов была написана под х86 архитектуру. В целом с этой проблемой начали знакомиться еще во времена перехода доты на source2, именно поэтому metamod можно установить к себе на сервер (достаточно сложно, но можно). С SourceMod все сложнее.

3. VSP (Valve Server Plugin). Подробнее обо всех вещах от которых Valve избавились во второй версии Source я напишу чуть ниже, но отказ от Valve Server Plugins становится критичным для AlliedModders проектов. Установка metamod больше не возможна с помощью обычного .vdf файла.

4. Поддержка других игр. Metamod и Sourcemod рассчитаны на множество игр Source, практически все игры Source, если быть точнее. Это добавляет кучу проблем с обратной совместимостью Source и Source2.

5. Мало людей, которые действительно готовы вносить вклад в портирование Sourcemod&Metamod в CS2. За время моего присутствия на сервере AlliedModders я заметил лишь 3-4 человека, которые что-то ковыряют в Metamod. Никто из них не портирует Sourcemod&Metamod в CS2.


Я начал строить сарай
Изначально я увидел что xtance пытался прикрутить к текущей системе скриптинга Javascript.
Меня действительно заинтересовала эта идея и я начал реализовывать свою версию Sourcemod, друзья в тимспике придумали идеальное название - SORAI (Вроде бы как "Небо" на японском, но на русском звучит забавно).
Название вероятно временное :)

Задумка была такой:
Я создаю dll, внутри которой использую metamod и сверху на это все пишу интерфейсы на Javascript для плагинов.
Вскоре узнаю что метамод это слишком жирная штука (она рассчитана сразу на все игры Source) и решаю использовать SourceHook.

Спустя несколько дней у меня получается подключить SourceHook и подписаться на интерфейсы Valve.
Sorai сейчас это dll пакет, который мы подключаем через кастомный dll-injector внутрь процесса cs2. В нем есть возможность подписываться на игровые события и прочие интерфейсы от Valve (CvarChanged, ServerInit, итд).
Проект на очень ранней стадии, его код - это набор тестов работы с движком Source2.

Различия от решений AlliedModders:
1. В Source2 полностью выпилили старую систему игровых событий (igamevents). На смену пришла новая - IGameEventSystem. Любимый и простой FireEvent больше не thing в новом Source. Ивенты теперь отправляются через grpc(?) в Protobuf формате.
2. х64 архитектура. Тут и добавить нечего, кс2 требует x64 dll.
3. Поддержка только CS2, для остальных игр есть Sourcemod.
4. Установка сарая через кастомный dll иньектор. Это временно, пока не придумал лучшего решения с учетом отказа Valve от valve server plugin.

Проблемы с которыми я столкнулся можно и не начинать считать, их действительно море. Однако самая главная, которую я не знаю как решить - отсутствие VGUI интерфейса во втором соурсе.
Менюшек - нет. Это критичная часть любого плагина, никто не любит писать все команды в чат или консоль. Если есть идеи как реализовать меню в cs2 - буду рад слышать.

Что в планах:

1. Я решил отказаться от идеи с простыми интерфейсами Javascript, так как по сути это будет являться socket-based архитектурой плагинов (общение через IPC), в дискорде AlliedModders мне дали понять что это не тру.
Поэтому я буду добавлять в сарай движок v8, чтобы дать возможность нативно разрабатывать плагины на Javascript.
2. Создать публичный репозиторий и простенький сайт с базовой информацией о статусе разработки.
3. Доделать базовый функционал ивентов (проверить работу компиляции protobuf).
4. Сделать возможным hot-reload плагинов на яваскрипте.
5. Сделать возможным на уровне движка проверки подлинности плагина. Чтобы облегчить жизнь создателям приватных плагинов.
6. Пакетный менеджер для плагинов. Установка плагинов через cli? Звучит интересно.

Если есть идеи по развитию данного проекта - буду рад их услышать. У нас появилась возможность избавиться от проблем Sourcemod и я знаю далеко не о всех этих проблемах.
Для c++ разработчиков:
Я открою исходный код Sorai как только добавлю в него v8. Сейчас и поддерживать его невозможно, так как не существует основной архитектуры. Просто куча кода которая тестирует взаимодействие с движком Source2.
Оффтоп

Для всех остальных:
Подскажите название, что ли. Я ж реально назову его сараем.

Ну и конечно же хотел бы сказать огромное спасибо сообществу AlliedModders, ребята всегда готовы прийти на помощь. Особенные благодарности двум людям - Core Team AlliedModders psychonic и создателю плагинов, активному участнику актуализации SDK - GAMMACASE
 
Последнее редактирование:

Deluks

Верховное DNO|
Сообщения
1,853
Реакции
812
Однако самая главная, которую я не знаю как решить - отсутствие VGUI интерфейса во втором соурсе.
Менюшек - нет. Это критичная часть любого плагина, никто не любит писать все команды в чат или консоль. Если есть идеи как реализовать меню в cs2 - буду рад слышать.

В консоли нельзя менюшки "рисовать"?
Например, в чат пишешь !vip, в ответ сервер пишет/рисует в консоль "менюшку", в ответ на менюшку выбрать пункт (символ цифру по счету пункта меню), это будет команда серверу на дальнейшее отображение, которое он при обработке выведет в консоль опять же в виде меню...

Подскажите название, что ли. Я ж реально назову его сараем.

Назови САРА или SARA, вроде бы и не сарай, но напоминет, ну и женское имя более благозвучно будет звучать нежели ветхая постройка! =)
 

panikajo

Участник
Сообщения
866
Реакции
231
dll-injector внутрь процесса cs
С этим осторожно античит валв забанит за любой инжект в игру .
Менюшек - нет. Это критичная часть любого плагина, никто не любит писать все команды в чат или консоль. Если есть идеи как реализовать меню в cs2 - буду рад слышать.
Как вариант попробовать использовать меню команд который на буквы Z,X,C либо пошаманить и сделать графическое командное меню, а также насколько я знаю (но могу ошибаться) они вроде оставили планшет с данжер зоны , его так же можно использовать как меню , так как там вроде панорама вшита .
Подскажите название, что ли. Я ж реально назову его сараем.
Я останусь стариком и назвал бы sourcemod2,source2mod,smtwo, ну просто не вижу смысла изобретать дикое название если есть старое нормальное , завтра какой-то дядя Юзя @Black_Yuzia сделай свой и назовет его smkeykruzya…
И будет как с кс1.6 миллион модов
 
Последнее редактирование:

MaZa

Участник
Сообщения
1,732
Реакции
980
Привет!
Прошел уже месяц с прошлого треда про скриптинг в cs2 и я решил актуализировать информацию + рассказать чем занимается комьюнити AlliedModders в данный момент.

Начнем с главного - Sourcemod не портирован в кс2 и вероятно не будет. Активная разработка Sourcemod в кс2 не ведется, достаточно посмотреть коммиты и пулл-реквесты в репозитории sourcemod.
Metamod все так же работает на source2, что позволяет создать свой sourcemod сообществу, но судя по диалогам в дискорд сервере AlliedModders информации о таких наработках крайне мало, в основном люди просто спрашивают когда будет sourcemod.

Текущие проблемы, почему sourcemod и metamod до сих пор не портировали

1. Metamod и Sourcemod работают на библиотеке SourceHooks, которая в свою очередь позволяет цепляться к публичным интерфейсам Source (memory hook) через декларацию интерфейсов Valve в их SDK.
Самая последняя версия SDK позволяющая цепляться к cs2 серверу находится вот тут Update Dota & CS2 support by GAMMACASE · Pull Request #125 · alliedmodders/hl2sdk, за что огромное спасибо GAMMACASE
В данный момент ребята еще продолжают над ней работать.

2. Архитектура х64. Это критичное изменение для Sourcemod и Metamod, так как куча инструментов была написана под х86 архитектуру. В целом с этой проблемой начали знакомиться еще во времена перехода доты на source2, именно поэтому metamod можно установить к себе на сервер (достаточно сложно, но можно). С SourceMod все сложнее.

3. VSP (Valve Server Plugin). Подробнее обо всех вещах от которых Valve избавились во второй версии Source я напишу чуть ниже, но отказ от Valve Server Plugins становится критичным для AlliedModders проектов. Установка metamod больше не возможна с помощью обычного .vdf файла.

4. Поддержка других игр. Metamod и Sourcemod рассчитаны на множество игр Source, практически все игры Source, если быть точнее. Это добавляет кучу проблем с обратной совместимостью Source и Source2.

5. Мало людей, которые действительно готовы вносить вклад в портирование Sourcemod&Metamod в CS2. За время моего присутствия на сервере AlliedModders я заметил лишь 3-4 человека, которые что-то ковыряют в Metamod. Никто из них не портирует Sourcemod&Metamod в CS2.


Я начал строить сарай
Изначально я увидел что xtance пытался прикрутить к текущей системе скриптинга Javascript.
Меня действительно заинтересовала эта идея и я начал реализовывать свою версию Sourcemod, друзья в тимспике придумали идеальное название - SORAI (Вроде бы как "Небо" на японском, но на русском звучит забавно).
Название вероятно временное :)

Задумка была такой:
Я создаю dll, внутри которой использую metamod и сверху на это все пишу интерфейсы на Javascript для плагинов.
Вскоре узнаю что метамод это слишком жирная штука (она рассчитана сразу на все игры Source) и решаю использовать SourceHook.

Спустя несколько дней у меня получается подключить SourceHook и подписаться на интерфейсы Valve.
Sorai сейчас это dll пакет, который мы подключаем через кастомный dll-injector внутрь процесса cs2. В нем есть возможность подписываться на игровые события и прочие интерфейсы от Valve (CvarChanged, ServerInit, итд).
Проект на очень ранней стадии, его код - это набор тестов работы с движком Source2.

Различия от решений AlliedModders:
1. В Source2 полностью выпилили старую систему игровых событий (igamevents). На смену пришла новая - IGameEventSystem. Любимый и простой FireEvent больше не thing в новом Source. Ивенты теперь отправляются через grpc(?) в Protobuf формате.
2. х64 архитектура. Тут и добавить нечего, кс2 требует x64 dll.
3. Поддержка только CS2, для остальных игр есть Sourcemod.
4. Установка сарая через кастомный dll иньектор. Это временно, пока не придумал лучшего решения с учетом отказа Valve от valve server plugin.

Проблемы с которыми я столкнулся можно и не начинать считать, их действительно море. Однако самая главная, которую я не знаю как решить - отсутствие VGUI интерфейса во втором соурсе.
Менюшек - нет. Это критичная часть любого плагина, никто не любит писать все команды в чат или консоль. Если есть идеи как реализовать меню в cs2 - буду рад слышать.

Что в планах:

1. Я решил отказаться от идеи с простыми интерфейсами Javascript, так как по сути это будет являться socket-based архитектурой плагинов (общение через IPC), в дискорде AlliedModders мне дали понять что это не тру.
Поэтому я буду добавлять в сарай движок v8, чтобы дать возможность нативно разрабатывать плагины на Javascript.
2. Создать публичный репозиторий и простенький сайт с базовой информацией о статусе разработки.
3. Доделать базовый функционал ивентов (проверить работу компиляции protobuf).
4. Сделать возможным hot-reload плагинов на яваскрипте.
5. Сделать возможным на уровне движка проверки подлинности плагина. Чтобы облегчить жизнь создателям приватных плагинов.
6. Пакетный менеджер для плагинов. Установка плагинов через cli? Звучит интересно.

Если есть идеи по развитию данного проекта - буду рад их услышать. У нас появилась возможность избавиться от проблем Sourcemod и я знаю далеко не о всех этих проблемах.
Для c++ разработчиков:
Я открою исходный код Sorai как только добавлю в него v8. Сейчас и поддерживать его невозможно, так как не существует основной архитектуры. Просто куча кода которая тестирует взаимодействие с движком Source2.
Оффтоп

Для всех остальных:
Подскажите название, что ли. Я ж реально назову его сараем.

Ну и конечно же хотел бы сказать огромное спасибо сообществу AlliedModders, ребята всегда готовы прийти на помощь. Особенные благодарности двум людям - Core Team AlliedModders psychonic и создателю плагинов, активному участнику актуализации SDK - GAMMACASE
Зачем JS когда есть c#, поумнее смотреться будет. Можно будет подобное как в расте реализовать, правда там игра на юнити поэтому все гораздо проще)
 

Black_Yuzia

Зарабатываю на жизнь Мемами про Крузю.
Сообщения
693
Реакции
372

Twelvee

Участник
Сообщения
75
Реакции
147
С этим осторожно античит валв забанит за любой инжект в игру .

Как вариант попробовать использовать меню команд который на буквы Z,X,C либо пошаманить и сделать графическое командное меню, а также насколько я знаю (но могу ошибаться) они вроде оставили планшет с данжер зоны , его так же можно использовать как меню , так как там вроде панорама вшита .

Я останусь стариком и назвал бы sourcemod2,source2mod,smtwo, ну просто не вижу смысла изобретать дикое название если есть старое нормальное , завтра какой-то дядя Юзя @Black_Yuzia сделай свой и назовет его smkeykruzya…
Панорама является сейчас чуть ли не единственным решением, однако интерфейса к ней нет. Хотелось бы оставить возможность управлять игровым процессом с помощью меню, тот же props мод - отличный пример.
Если каждый раз придется использовать планшет из Danger Zone чтобы поставить один проп на карту - это явно сократит кол-во возможностей для создателей модов и плагинов. Даже с учетом этого минуса я бы с радостью реализовал такой подход для некоторых вещей, я гляну в эту сторону, спасибо.

По сути сейчас есть 3 варианта меню:
1 - чат/консоль - выглядит ну так себе, не функционально, не красиво
2 - панорама - вообще не представляю как это должно выглядеть, но активно копаю в эту сторону
3 - спрайты. Вот тут интересно, в ноде существует инструмент позволяющий рендерить контент страницы вне контекста окна. Если каким-то образом получится сделать динамическую загрузку спрайтов - можно будет писать интерфейсы для серверов на vuejs. Маловероятно, но буду уточнять еще возможность.
 

MaZa

Участник
Сообщения
1,732
Реакции
980
Я думаю после выхода с бетки валв, что то да завезут дополнительно, раз они предусмотрели кнопку под сервера )
 

Black_Yuzia

Зарабатываю на жизнь Мемами про Крузю.
Сообщения
693
Реакции
372
Никто не будет колхозить так ради серверов в кс2
жопаскриптеры javascript-еры и не такое могут...
Сообщения автоматически склеены:

- можно будет писать интерфейсы для серверов на vuejs.
Привет GTA 5

Но вообще, думаю сейчас лучше просто подождать.
Мб вальве выпустят все что надо ближе к релизу (или после релиза игры) и не придется костылить...
 

Twelvee

Участник
Сообщения
75
Реакции
147
Я думаю после выхода с бетки валв, что то да завезут дополнительно, раз они предусмотрели кнопку под сервера )
Предполагаю что они не станут такого делать, по общему мнению о новом SDK могу сделать вывод что они хотят сделать систему "кастомок" как в доте. Pulse (визуальный скриптинг) и прочие инструменты Source2 позволяют это реализовать. Однако да, сервера останутся, кнопка есть
 

Twelvee

Участник
Сообщения
75
Реакции
147
resourcemod по аналогии с rehlds ))
по-русски - ресурсмод, ресорсмод, ресмод, неплохо звучит.
resourcemod звучит классно, но представь как cli команды будут выглядеть, если все же будет пакетный менеджер для плагинов)

bash:
rm install plugin_name
rm -rf /
 

DeathScore13

пирожок. пирожочек.
Сообщения
738
Реакции
408
в кс2 остался хинт? должны же куда-то подсказки по гейплею вылазить. туда можно выводить меню я полагаю. их даже красить можно. ну а пункты через команды slot1, slot2, ...
 

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #19
resourcemod звучит классно, но представь как cli команды будут выглядеть, если все же будет пакетный менеджер для плагинов)

bash:
rm install plugin_name
rm -rf /
remod, resm для него можно же сделать краткий name
 

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
Пихнуть название технологии - v8 и делов то.
- cs2v8 (можно произнести, как cs to wait, что приживётся, как cs для ждунов, ну или "cs2, ну погоди"), тоже самое и с v8cs2

- v8mod (можно ассоциировать с wait mod, движком V8 и @White Wolf (можно добавить его контакты, чтобы его доставали вопросами)). Если постараться, то закосить под ви эй модс (с пафосом, как "и эй спортс")

- JustSource2V8 - тут понятно, что JS, ну или просто соус 2 версии 8.

Чуть позже ещё чего накидаю
 
Сверху Снизу