This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

RAGE Framework — Визуальный конструктор скриптов для GTA V RAGE:MP

meolex

Гуру
BackEnd developer
FrontEnd developer
30 Апр 2025
28
125
38

Сделал визуальный конструктор скриптов для RAGE:MP — хочу отдать на потестить​


Привет. Короч я давно сижу в RAGE:MP и меня всегда раздражало одно — порог входа для новых разрабов и владельцев серверов просто неадекватный. Простые вещи типа playerJoin с записью в базу или кастомный HUD — это часы гугления и копипасты чужого кода.

Поэтому я сел и сделал штуку которую давно хотел видеть в нише. Называется RAGE Framework.



Что это такое​


Визуальный редактор нод в браузере — как Blueprints в Unreal Engine, только для RAGE:MP скриптов. Соединяешь блоки мышкой, нажимаешь Generate — и у тебя в папке сервера лежит готовый .js файл.



Никакой магии — просто берёт граф и компилирует в обычный JavaScript. Можно открыть сгенерированный файл и читать его как любой другой скрипт.



Как это работает​


Устанавливаешь маленький CLI на свою машину:

Код:
rage init my-server
rage link <projectId>
rage daemon

Daemon висит в терминале и смотрит на сокет. Когда жмёшь Generate в браузере — он получает граф, запускает генератор и пишет файлы прямо в папку твоего RAGE:MP сервера. Никаких облаков, никакого доступа к твоим файлам без твоего ведома.

Отдельно про совместимость: CLI и API общаются через протокол с версией. Если платформа обновится и твой CLI стал несовместим — он не зависнет молча и не начнёт генерить кривой код. Daemon сразу напишет в терминал Версия CLI устарела. Обновите: npm install -g @rage/cli и завершится. Никаких скрытых сюрпризов.





Что уже есть​


Больше 100 нод из коробки. Вот основное:

  • Events — playerJoin, playerDeath, playerChat, keyDown, playerCommand, playerEnterVehicle и ещё куча
  • Player — getHealth, setHealth, teleport, spawn, freeze, kick, ban, giveWeapon, setModel...
  • CEF — createBrowser, showBrowser, setUrl, навигация между экранами
  • Remote Events — call.clientEvent, call.serverEvent, on.remoteEvent, proc с динамическими аргументами
  • Database — getRecord, createRecord, updateRecord, deleteRecord
  • Logic — if, forEach, delay, interval, compare, and, or, isNull
  • Math, String, Variables, Utility — базовые вещи которые нужны в каждом скрипте

Редактор знает контекст — если ты пишешь клиентский скрипт, серверные ноды просто не показываются. Не получится случайно сломать.





База данных​


Отдельно хочу рассказать про работу с БД, потому что тут не просто «ноды которые делают SQL».

Сначала описываешь схему своей игровой базы прямо в платформе:

Код:
Entity: Player
  ├── socialclub   (string, unique)
  ├── passwordHash (string)
  ├── money        (number, default: 0)
  └── level        (number, default: 1)

Есть готовый шаблон Player — берёшь и добавляешь свои поля. После этого Database-ноды в редакторе уже знают твои сущности, ты просто выбираешь что и откуда брать. Генератор сам делает параметризованные запросы, с инъекциями не паришься.




К примеру playerJoin → getRecord → если нет записи → createRecord → spawn



Конфиг сервера прямо из браузера​


Небольшая но удобная штука — conf.json твоего сервера редактируется прямо в Dashboard. Название сервера, maxPlayers, порт, язык — меняешь в форме, жмёшь Save. Если daemon онлайн — файл сразу пишется в папку сервера. Не надо открывать проводник, искать файл, следить чтобы не сломать JSON.

Если нужно что-то нестандартное — есть переключатель «Edit as JSON» и правишь руками. Всё равно синхронизируется через daemon.





Сервер — прямо из браузера​


Это наверное самое удобное что есть в платформе для ежедневной работы.

В тулбаре редактора есть три кнопки: запустить сервер, остановить, перезапустить. Нажал — daemon поднимает процесс ragemp-server на твоей машине. Там же статус в реальном времени: starting → ready → stopped → crashed.



Весь вывод сервера — stdout и stderr — стримится прямо в панель логов в браузере. С подсветкой по уровню: ошибки красным, предупреждения жёлтым. Последние 500 строк хранятся, можно очистить кнопкой.

Панель логов: вывод сервера в реальном времени прямо в браузере[/CENTER]

Флоу выглядит так: поменял граф → нажал Build → файлы сгенерировались → сервер автоматически перезапустился через секунду. Ничего руками. Папку с игрой вообще не трогаешь.

Если сервер крашнулся — видишь статус crashed и последние логи с ошибкой. Не надо переключаться в терминал чтобы понять что пошло не так.



CEF без боли​


Для тех кто делал CEF интерфейсы — вы знаете что это отдельный ад. package://, кривые скрипты, синхронизация состояния с сервером.

В платформе есть отдельный CEF Generator. Описываешь структуру интерфейса нодами — UIScene, UIScreen, UIElement — и получаешь готовый статичный HTML бандл для client_packages/cef/.






Кастомные ноды​


Если какой-то ноды не хватает — делаешь свою. Это не сложно: в разделе /my-nodes задаёшь название, категорию, входные/выходные пины и пишешь шаблон кода. Для этого есть встроенный шаблонизатор на Handlebars — он помогает правильно описать что именно должно генерироваться. Справа сразу показывается живой preview как нода выглядит в редакторе и что она генерирует на выходе — видишь результат до того как что-то опубликовал.

Созданная нода сразу доступна тебе в твоих проектах. Если хочешь поделиться — отправляешь на ревью. Я смотрю, проверяю что шаблон нормальный и не ломает генератор, и если всё ок — нода попадает в общий каталог и становится доступна всем пользователям платформы.

Со временем это должно стать основным способом роста каталога нод — не я один придумываю что добавить, а сообщество само закрывает то чего не хватает.



Создание кастомной ноды: форма слева, превью справа, сгенерированный код снизу[/CENTER]



Script Library​


Это библиотека готовых модулей от сообщества. Идея простая — ты собрал систему авторизации, или инвентарь, или систему штрафов, и хочешь дать её другим. Публикуешь в библиотеку, и любой другой пользователь платформы может поставить её к себе одной кнопкой.

Конкретно: нашёл нужный скрипт → нажал Install → он появляется в твоём проекте и сразу доступен в редакторе. Либо Fork — берёшь чужой скрипт как основу и дорабатываешь под свой сервер. Граф при этом полностью редактируемый, ничего не залочено.

Сейчас библиотека только начинает наполняться, но принцип именно такой: не каждый с нуля пишет одно и то же, а берёт готовое и адаптирует. Авторизация, регистрация, базовые системы — это должно быть в библиотеке, а не в сотнях копипастных скриптов по серверам.

Script Library: карточки скриптов с кнопками Install и Fork[/CENTER]



Версионирование скриптов​


Когда ты публикуешь скрипт в библиотеку — он выходит под конкретной версией в формате 1.0.0. Можно добавить changelog — что изменилось по сравнению с прошлым релизом.

Зачем это нужно: если кто-то установил твой скрипт версии 1.0.0, и ты потом выпускаешь 2.0.0 с кучей изменений — у них на сервере ничего не ломается. Они сидят на своей версии пока сами не решат обновиться. Никаких ситуаций «автор что-то поменял и у меня сервер упал».

Каждая версия хранит полный снапшот графа на момент публикации — не diff, а именно всё целиком. Плюс флаги isStable и isDeprecated — автор может пометить версию как устаревшую если нашёл баг, или наоборот как рекомендуемую.



Минификация и обфускация​


Когда скрипт готов и ты хочешь его задеплоить — есть два флага в настройках экспорта проекта.

Минификация — убирает пробелы, переносы, сокращает имена переменных. Файл становится меньше, грузится быстрее. Для продакшн-сервера это норма.

Обфускация — делает сгенерированный JS нечитаемым. Полезно если ты публикуешь скрипт и не хочешь чтобы конкуренты просто скопировали логику. Открыть файл можно, понять что там — уже нет.

Оба флага включаются один раз в настройках и применяются к каждому билду автоматически. Не надо помнить про них каждый раз.





Безопасность подключения​


Раз уж daemon имеет доступ к папке твоего сервера и может запускать процессы — вопрос безопасности важный.

Каждый проект получает свой daemon token — отдельный JWT, который не имеет ничего общего с твоим аккаунтом на сайте. Он хранится локально в .rage/credentials.json (git-ignored) и передаётся при каждом WebSocket-подключении daemon'а к API.

На сервере токен верифицируется: тип должен быть daemon, и projectId в токене должен совпадать с проектом к которому пытается подключиться daemon. Если что-то не так — тихий дисконнект, никаких подсказок.

Токен живёт 30 дней. Если считаешь что он скомпрометирован — в настройках проекта есть кнопка ротации. Ротация rate-limited: не больше 5 раз за 5 минут, только для владельца проекта.

Итого: даже если кто-то знает твой логин на платформе — без daemon token он не подключится к твоему серверу. Это разные уровни доступа.



Честно про текущее состояние​


Я один разрабатываю это. Баги точно есть — инструмент молодой. Но фикшу быстро, не по-корпоративному. Если что-то сломалось — пишешь мне, через час-два смотрю.

Сейчас хочу дать первым людям попробовать и услышать что реально не работает или чего не хватает. Не продать, не собрать деньги — просто проверить на живых людях.



Если интересно потестить — пиши в ЛС или сюда в тред. Добавлю в список первых тестеров.

Ну и вопросы сюда — отвечу на всё.

Еще делал стрим сегодня, но как обычно когда надо чтобы работало, оно выкаблучивалось, но уже все пофиксил, если хотите можете чисто моменты глянуть что и как работает:




И последнее — то что описано выше это далеко не всё. Много мелочей которые уже не хотел описывать, ахах, многое зависит от того насколько это вообще интересно людям. Если вижу что проект живёт, что им пользуются — буду вкладывать в него всё больше. Думаю вы сами понимаете как это работает. Так что пишите фидбеки, может это вообще гиблое дело и зря делал и тратил время, а так спасибо если читали это полотно.
 

Вложения

  • 1777056770980.png
    71.2 KB · Просмотры: 24

jungledev

Мастер
16 Янв 2026
422
189
50
ахуеть
 

meolex

Гуру
BackEnd developer
FrontEnd developer
30 Апр 2025
28
125
38
Ну анриал прям хочет все покрыть. А тут по сути с апишкой рейджа робота и джс. Я в плане того что, не надо уже писать свою физику, и прочие низкоуровневые штуки.
 

Grigory

Активный участник
7 Дек 2024
53
32
60
В целом идея и на словах, и на практике выглядит очень интересно. Однако не совсем понятно, на какую аудиторию она рассчитана.

Если рассматривать новичков, которые хотят попробовать себя в разработке, то перспективы здесь выглядят довольно ограниченными. Сегодня вход в эту сферу зависит не только от навыков программирования, но и от финансовых возможностей. Те, кто действительно готов инвестировать в запуск собственного сервера, скорее предпочтут нанять опытных разработчиков, работающих без подобных фреймворков. Это дает больше гибкости, лучшую масштабируемость и избавляет от зависимости от ограничений сторонней архитектуры. Рано или поздно любой фреймворк упирается в свои функциональные рамки, а дальнейшее развитие и поддержка проекта могут стать заметно сложнее.

Если же цель — не создание собственного сервера, а получение опыта для последующего трудоустройства в уже существующие проекты, то и здесь ценность такого подхода сомнительна. Современные крупные проекты, как правило, не используют готовые фреймворки, предпочитая собственные решения и архитектуру, разработанную под конкретные задачи. Поэтому опыт работы исключительно с подобным инструментом может оказаться мало востребованным на рынке и вряд ли станет значимым преимуществом при трудоустройстве
 
Реакции: Farko

meolex

Гуру
BackEnd developer
FrontEnd developer
30 Апр 2025
28
125
38
Ну не скажу, накидать какой то прототип? Легче тут, нак дать какой то флоу и глянуть исходники чтобы понять принцип работу, тоже да. Если делать какие то функции, модули и публишить их в библиотеку чтобы другие скачали и делали под себя тоже подходит, ну и просто для обучения, новички не знают пользоваться доками, а так тут написано к примеру "выдать оружие", "получить скорость авто" он сбилдил файл, зашел и видит код чистого апи рейджа. Тип такого плана, понятно что не будуть там делать крупные проекты на таком. Но прототип, черновик, почему нет?)
 

Grigory

Активный участник
7 Дек 2024
53
32
60
Ну у рейджа и у альтв тем более с документацией конечно есть проблемы. Как будто проще сделать просто нормальную документацию.

Помню в SAMP официальная была хорошая, все параметры описаны, примеры использования и тд
 
Реакции: UchihaMadara

Similar threads