Первый модуль
Создадим обычный клиентский модуль, который пишет сообщение в консоль и показывает текущий тик на экране. Такой пример сразу проверяет загрузку кода, hot reload и доступ к API.
1. Создайте модуль
Заголовок раздела «1. Создайте модуль»- Откройте меню модулей в игре.
- Нажмите Create.
- Введите имя
HelloDebug. - Оставьте Is Reflex выключенным.
- Теги пока не добавляйте.
- Подтвердите создание и включите модуль.
Имя не может быть пустым или содержать символ @.
Игра создаст папку Modules/HelloDebug/ и начальные файлы. Открыть её можно кнопкой Folder, а редактор — кнопкой VS Code, если он установлен.
2. Запустите игровую сессию
Заголовок раздела «2. Запустите игровую сессию»Lua-код модуля выполняется внутри игровой сессии, а не в главном меню. Для разработки удобно запустить пользовательский сервер и загрузить любую карту.
После входа в игру стандартный scripts/main.lua напечатает:
Hello world!3. Найдите лог в консоли
Заголовок раздела «3. Найдите лог в консоли»- Откройте консоль клавишей
~. - Выберите раздел или источник логов вашего модуля.
- Если сообщение скрыто, нажмите значок фильтра рядом с полем Search и включите информационные сообщения.
- Найдите строку с префиксом
[HelloDebug].
Фильтр консоли сохраняет выбранные категории. Если print() ничего не показывает, сначала проверьте именно раздел модуля и значок фильтра.
4. Замените main.lua
Заголовок раздела «4. Замените main.lua»Откройте Modules/HelloDebug/scripts/main.lua и замените содержимое:
print("HelloDebug loaded")
Scheduler:OnFrame(function() ImGui:DrawDebugText( "[HelloDebug] Tick: " .. tostring(Time.Tick) )end)Сохраните файл. Игра автоматически перезагрузит папочный модуль.
В результате:
- в консоли появится
HelloDebug loaded; - у края экрана будет обновляться номер текущего тика.
ImGui рисует содержимое только в текущем кадре, поэтому DrawDebugText() вызывается из Scheduler:OnFrame().
5. Проверьте hot reload
Заголовок раздела «5. Проверьте hot reload»Измените текст HelloDebug loaded или подпись перед тиком и снова сохраните файл. Перезапуск игры и повторное включение модуля не требуются — новое содержимое должно появиться после автоматической перезагрузки.
Если перезагрузка не произошла, последовательно проверьте:
- модуль включён;
- игровая сессия загружена;
- редактируется папка внутри текущей установки игры;
- в консоли нет Lua-ошибки или сообщения о заблокированном файле.
Что дальше
Заголовок раздела «Что дальше»- Структура модуля — куда добавлять настройки, кнопки, изображения, звуки и UI;
- Разработка и отладка — hot reload, консоль и частые ошибки;
- ImGui — быстрый HUD без UXML;
- UI и UXML — постоянные панели и окна.