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

DOK-26-RUS

Участник
Сообщения
264
Реакции
40
билды на гитхабе лежат, не нужно самому компилить
Хорошо, я это видел. Другой вопрос, я не пользователь гитхаба, знать его функционал и значения, подразумевать под артефактами билды проекта. Название и размер. Дальше что пользователю делать?
Пропуская пункт "You may need to be logged into GitHub to gain access to the downloads." который я видел.
Я не с агрессией, не поймите не правильно, получается, чтобы готовый скачать надо зарегистрироваться? По факту. Как много держателей пользователей на это пойдет? Или вариант 2: скомпилировать по инструкции.
Как Вы это видите?
 
Последнее редактирование:

Muinez

Участник
Сообщения
132
Реакции
120
скачать надо зарегистрироваться? По факту. Как много держателей пользователей на это пойдет
2: скомпилировать по инструкции
Думаю проще зарегаться, чем самому компилить + на сайте есть инструкция как устанавливать и на гитхабе есть ссылка на сайт
 

Вложения

  • 1698693208531.png
    1698693208531.png
    24.4 КБ · Просмотры: 235
  • 1698693242916.png
    1698693242916.png
    3.2 КБ · Просмотры: 212

DOK-26-RUS

Участник
Сообщения
264
Реакции
40
Думаю проще зарегаться, чем самому компилить + на сайте есть инструкция как устанавливать и на гитхабе есть ссылка на сайт
Интересно, но всё же спрошу, а что запрещает или мешает продублировать билды на hlmod-е для общего доступа или на гите открыть доступ для общего пользования? если вы для пользователей поддерживаете свой проект.
 

xtance

Участник
Сообщения
513
Реакции
743
@DOK-26-RUS, сейчас практически всё что есть для кс2 на этапе активной разработки, поэтому не стоит ожидать что будет легко как в го - закинул всё что захотел и оно заработало. Ещё и сама игра по сути в бета версии, если не в альфа, и каждый день фиксят потешные баги. Лучше порадоваться что кто-то вообще что-то пилит в паблик, а не в приват. А удобства придут со временем
 

DOK-26-RUS

Участник
Сообщения
264
Реакции
40
@DOK-26-RUS, сейчас практически всё что есть для кс2 на этапе активной разработки, поэтому не стоит ожидать что будет легко как в го - закинул всё что захотел и оно заработало. Ещё и сама игра по сути в бета версии, если не в альфа, и каждый день фиксят потешные баги. Лучше порадоваться что кто-то вообще что-то пилит в паблик, а не в приват. А удобства придут со временем
а я спорил что ли? или предъявил кому то? Всего лишь внести ясность почему так и как это видят разработчики своих проектов. Так как все то в дискорд или гитхаб.
 

L1MONENKO

Добрая душа
Сообщения
655
Реакции
600
а я спорил что ли? или предъявил кому то? Всего лишь внести ясность почему так и как это видят разработчики своих проектов. Так как все то в дискорд или гитхаб.
Вам сложно создать учетную запись GitHub? Контроль версий неотъемлемая часть любого взаимодействия с информационными технологиями...
 

DOK-26-RUS

Участник
Сообщения
264
Реакции
40
Вам сложно создать учетную запись GitHub? Контроль версий неотъемлемая часть любого взаимодействия с информационными технологиями...
я ответ увидел ранее, который хотел увидеть, дальше дискуссию со мной можно не продолжать 😄 , а тем более не являетесь разработчиком в том проекте.
 
Последнее редактирование:

Black_Yuzia

Зарабатываю на жизнь Мемами про Крузю.
Сообщения
693
Реакции
372
не понимаю зачем в 2023 году люди пользуются форумами
В 99% случаев это лучше для SEO / поиск по поисковикам (google / bing / duckduckgo) чем всякие дискорды и тд.
Условный гугл не выведет тебе информацию по твоему запросу из какого-нибудь закрытого (по инвайтам) канала в дискорде / телеграме.
Хотя, с последним, вроде, по лучше будет в плане поисковиков. Если канал открытый конечно.
Вообще, форумы все еще удобны для пользователей. Задать вопрос или найти решение.
Форумы даже в дискорде есть. Информирую.
 

Сергей68

Неуместный юмор
Сообщения
420
Реакции
377
Я так понимаю это умерло не родившись? CSS уже вышел, s2m на подходе. Сарай все еще строится? 🥶
Оффтоп
 

xtance

Участник
Сообщения
513
Реакции
743
@Сергей68, скам это если был сбор денег или что-то в этом духе, но такого нет.
А так, ну кто его знает, может релиз задерживается, может человек занят чем-то другим. Всякое случается.
Кстати последние новости в дс меньше месяца назад, что даёт надежду.
 
  • Мне нравится
Реакции: Kult

Kult

Повелитель костылей
Сообщения
667
Реакции
874
А какой скам? Вроде все без крауда и тд. Да, добровольные поддерживания были, но это личное желание людей, которое особо ни к чему не обязывает.
Не забываем, что это довольно сложная задача и держится она на альтруизме фактически.
Даже если и не выйдет, это так сильно парит? Люди активно пишут на шарпе и их устраивает вроде.
Я даже уверен, что с выходом см2 некоторые так и останутся на шарпе. Да на том же метамоде, как Страйкер.
Гадать смысла мало, как и ждать. Хотите сервер? Делайте, сейчас есть большая часть необходимого (исключая сложные моды по типу вкс, рпг и тд)
 

Twelvee

Участник
Сообщения
75
Реакции
147
Фух, давно не заходил в этот тред)
Мы релизнули Alpha версию ResourceMod +- недели 2-3 назад, нашли миллиард ошибок в работе. Но самое главное - я нашел способ нативно выполнять код в NodeJS окружении.
Сейчас работаю над beta-версией resourcemod с полностью новым API для разработчиков и полной поддержкой node_modules и npm.

Ну и конечно она будет стабильнее, чем мой собственный рантайм на v8.
 

Twelvee

Участник
Сообщения
75
Реакции
147
Бета релизнута, nodejs, npm пакеты, снапшоты серверов и полное server as a code описание.
Для установки рекомендуется воспользоваться скриптом `npx create-resourcemod-app@latest .`

ResourceMod documentation | ResourceMod - документация
 

L1MONENKO

Добрая душа
Сообщения
655
Реакции
600
Бета релизнута, nodejs, npm пакеты, снапшоты серверов и полное server as a code описание.
Для установки рекомендуется воспользоваться скриптом `npx create-resourcemod-app@latest .`

ResourceMod documentation | ResourceMod - документация
Насколько проект далек от функционала того же cs#?
 

Twelvee

Участник
Сообщения
75
Реакции
147
Насколько проект далек от функционала того же cs#?
Смотря в чем. Полноценная поддержка модулей ноды в разы превосходит все возможности cs sharp в плане взаимодействия с реальным миром. Полный IaaC вообще не интересует CS#, а у нас он есть. CS# вероятнее всего впереди в плане взаимодействия с Source 2, но это их не сложно догнать. Сейчас работаю на билдом под linux, думаю на неделе его релизну. После этого начну дорабатывать интерфейсы взаимодействия с Source2. Вообще проект опенсорс, если есть конкретные предложения - буду ждать pull-реквестов

Из ближайших после линукс билда возможностей буду реализовывать мут игроков и взаимодействие с оружием. Resourcemod получился очень простым в плане кода, я думаю любой из вас сможет его поднять и собрать, как минимум под windows (потому что под linux даже я не могу его сейчас собрать).
 

darkspice

Участник
Сообщения
21
Реакции
0
На счет typescript не проблема. Кому нужны типы пускай пользуются JSDoc. Тот же VSCode из коробки имеет typescript LSP который умеет считывать JSDoc, для других редакторов не проблема найти тот же LSP и будет подстветка типов.

Вот как пример:
1710955277670.png


1710955344811.png


1710955387669.png
 
Сверху Снизу