Skip to content
Valerii Probrazhenskiy edited this page Feb 10, 2026 · 18 revisions

Понятийный аппарат

  • Механика (Lua Script) – скрипт, описывающий логику и поведений той или иной разновидности игры (пример механики: Пол - это лава)
  • Игра (Game Json) – конкретные начальные условия игры или уровни для обработки скриптом (пример игры: Пол - это лава #1 с конкретными этапами и рисунками лавы)
  • Конфиг игры (Config Json) – настройки, которые может поменять администратор перед стартом игры (пример: скорость анимации лавы, количество жизней)
  • Пиксель (Pixel) – светодиодная ячейка на полу, оснащенная датчиками нажатия, размерность игрового поля задается обязательными параметрами Cols & Rows
  • Кнопка (Button) – светодиодная настенная кнопка, тоже может участвовать в игре, задаются массивом Buttons и отображаются вокруг поля под номерами K1 - K78
  • Нажатие (Click, подсвечивается зеленым) – событие нажатия (true) или отпускания (false) на пиксель/кнопку, превышающее заданный порог веса
  • Дефект (Defect, подсвечивается красным) – вывод пикселя/кнопки из игры ввиду неисправности, на такие пиксели/кнопки не должны назначаться задания в играх

Доступные библиотеки

  • log – содержит функцию .print(), которая печатает сообщение в консоль разработчика в браузере
  • inspect – порт библиотеки kikito/inspect.lua для человекочитаемого вывода, например log.print(inspect(table))
  • help – содержит функции глубокого и неглубокого копирования таблицы
  • json – методы кодировани/декодирования JSON
  • time – методы получения времени в unix формате
  • audio – методы проигрывания аудио
  • smoke – методы взаимодействия с дым-машиной
  • colors – константы цветов и яркости
  • math – стандартные функции библиотеки math
  • avonlib – большая библиотека от нашего разработчика, см. avonlib.lua

Базовая структура Lua скрипта

  • Локальные переменные:

    • Таблица GameObj – заполняется из Game Json, должна обязательно содержать поля Cols x Rows для задания размера пола
    • Таблица GameConfigObj – заполняется из Config Json, настройки игры перед стартом (сложность, скорость, очки, жизни и т.д)
    • Таблица GameStats – информация для отображения на табло (время, жизни, очки, цвета)
    • Таблица GameResults – результат завершения игры, возвращается в последнем вздохе NextTick()
  • Обязательные функции:

    • StartGame(gameJson, gameConfigJson) – инициализация игры, на входе Game Json и Config Json
    • NextTick() – тик игрового мира, здесь вся основная логика
    • RangeFloor(setPixel, setButton) – забор снапшота пола, вызывается следом за NextTick()
    • GetStats() – забор статистики игры, вызывается следом за RangeFloor()
    • PauseGame() – событие паузы игры
    • ResumeGame() – событие снятия игры с паузы
    • SwitchStage() – рычаг админа для переключения этапа, может быть полезен в некоторых играх
    • PixelClick(click) – событие клика/отпускания пикселя
    • ButtonClick(click) – событие клика/отпускания кнопки
    • DefectPixel(defect) – событие дефектовки/раздефектовки пикселя
    • DefectButton(defect) – событие дефектовки/радефектовки кнопки

Часто задаваемые вопросы FAQ