Хуки и 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
 
Последнее редактирование:

cryptopunk

Участник
Сообщения
9
Реакции
1
Привет!
Прошел уже месяц с прошлого треда про скриптинг в 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
Admin mod, как было в cs1.5
 

KRIK73 √

Участник
Сообщения
35
Реакции
5

MRUS246

Участник
Сообщения
146
Реакции
43
Я не говорю о его готовности а только о том что название уже используется
ну если только в этом загвоздка, есть куча других вариантов ну например css2 mod, ну короче понятно было бы желание проблема не в названии)....
 

Twelvee

Участник
Сообщения
75
Реакции
147
1. Добавлен внешний рантайм (подробнее о нем в дискорде, если кратко - интерфейс для параллельных вычислений для игрового сервера, реализуется на любых ЯП, по умолчанию нода)
2. Теперь мы метамод плагин (из-за конфликта в Gameinfo.gi)
3. Основной компилятор теперь AMBuild (по причине из пункта 2)

Roadmap:
  • [x] Javascript Runtime
  • [x] ECMAScript 2020
  • [x] SourceHooks impl
  • [x] Fetch / Filesystem modules
  • [x] ES Modules loader
  • [x] Async I/O (feat: External Runtime)
  • [x] NoSQL Database support (file-based) (feat: External Runtime)
  • [ ] Plugins manager (package panager)
  • [ ] Source events impl
  • [ ] Source entities workflow
  • [ ] Load plugins through http
  • [x] ResourceMod installer (metamod plugin since 10.10)
  • [ ] Base admin plugin
  • [ ] Base vote plugin
 
Последнее редактирование:

Baks

Участник
Сообщения
9
Реакции
4
1. Добавлен внешний рантайм (подробнее о нем в дискорде, если кратко - интерфейс для параллельных вычислений для игрового сервера, реализуется на любых ЯП, по умолчанию нода)
2. Теперь мы метамод плагин (из-за конфликта в Gameinfo.gi)
3. Основной компилятор теперь AMBuild (по причине из пункта 2)

Roadmap:
  • [x] Javascript Runtime
  • [x] ECMAScript 2020
  • [x] SourceHooks impl
  • [x] Fetch / Filesystem modules
  • [x] ES Modules loader
  • [x] Async I/O (feat: External Runtime)
  • [x] NoSQL Database support (file-based) (feat: External Runtime)
  • [ ] Plugins manager (package panager)
  • [ ] Source events impl
  • [ ] Source entities workflow
  • [ ] Load plugins through http
  • [x] ResourceMod installer (metamod plugin since 10.10)
  • [ ] Base admin plugin
  • [ ] Base vote plugin
В дискорде AlliedModders или у тебя отдельный дискорд своего проекта?
 

Twelvee

Участник
Сообщения
75
Реакции
147
Обновления:
  1. Работаю над ивентами (решил вернуть старые ивенты из source1, работает замечательно)
  2. Начал работу над opensource регистри для плагинов (чем-то похоже на docker registry). Любой сможет захостить свои плагины на своем железе. Архитектура описана с помощью OpenApi 3.0 спецификации. Будет готово к выходным. (ура, первый опенсорс в экосистеме).
  3. Проблемы с доменом. Исправляю.
Заметил что люди задают кучу вопросов не связанных с resourcemod в моем дискорд сервере. Все вопросы так же очень часто повторяются. Поэтому решил создать единый центр для всех вопросов по CS2, что-то вроде stackoverflow, но для создателей контента в CS2.
Пожалуйста, задавайте вопросы на этом сайте, так вы сможете получить помощь не только от меня и сообщества ресурсмода, но и от других разработчиков в CS2. + мы можем делиться ссылками, а это удобнее чем искать сообщения в дискорде.

CS2 Help: [ссылка удалена, а нужно ли ее было удалять?]
 
Последнее редактирование:

rejchev

менеджер клоунов
Сообщения
1,669
Реакции
1,291
Вы так аудиторию переманиваете с hlmod? Хотя бы согласовали свою рекламу с администрацией форума?
Пожалуйста, задавайте вопросы на этом сайте, так вы сможете получить помощь не только от меня и сообщества ресурсмода, но и от других разработчиков в CS2. + мы можем делиться ссылками, а это удобнее чем искать сообщения в дискорде.

CS2 Help:
 
Последнее редактирование модератором:

Twelvee

Участник
Сообщения
75
Реакции
147
Вы так аудиторию переманиваете с hlmod? Хотя бы согласовали свою рекламу с администрацией форума?
Это ж не реклама, проект не коммерческий, просто мой личный проект, куда можно задавать вопросы по кс2.
Если скинуть ссылку на sourcemod или resourcemod - это тоже реклама?

Я без проблем удалю ссылку, если перешел ту невидимую грань
 
Сверху Снизу