Удобная разработка игры на Метапарсере-3

Недавно я написал на Метапарсере-3 небольшую парсерную игру для конкурса Контигр-2021. Я уверен, что в настоящее время нет лучше платформы для разработки русскоязычной парсерной ИЛ. Но сам по себе Метапарсер — это просто Lua-библиотека. А игру надо где-то писать, как-то запускать и каким-то образом отлаживать.

Так вот. У меня получилось так настроить среду разработки и инструменты, что этот опыт стал для меня одним из самых удачных. Мне было очень удобно писать игру. Мне удалось максимально сосредоточиться на творчестве. Мне ничего не мешало, а всё только помогало.

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

Сразу оговорюсь, что я настраивал всё под Windows. Но все инструменты существуют также и в версиях для Linux, так что пользователи этой замечательной системы совершенно точно смогут адаптироваться.

Итак, первое. Для начала нам нужен редактор кода или IDE для Lua. Для этой цели я выбрал ZeroBrane Studio. Отличный редактор, удобный, расширяемый, с кучей возможностей и сам написанный на Lua. Да что там, у него настройки — это тоже Lua-файл. Немного хардкорно, но привыкнуть можно.

Во-вторых, запускать разрабатываемую игру мы будем в свежем RE:INSTEAD. Легковесный парсерный запускач, ничего лишнего, только вы и текст. Так что скачиваем и устанавливаем (распаковываем в удобную директорию) свежую сборку этой годноты. И, что важно для разработки в Windows, добавляем путь к reinstead.exe в PATH.

Одним из главных достоинств ZBS является простота, с которой его можно поженить на любом Lua-интерпретаторе. Поэтому следующим шагом мы добавим в папку interpreters в инсталляционной директории ZBS файл reinstead.lua из архива. Теперь, если запустить ZBS, то можно будет выбрать RE:INSTEAD в качестве интерпретатора в соответствующем меню.

Выбор RE:INSTEAD в качестве интерпретатора

Теперь выбираем папку проекта (Проект → Папка проекта → Выбрать…) и начинаем писать игру! А запускать её можно обычной кнопкой на панели инструментов. Если всё настроено правильно, то при её нажатии поднимется RE:INSTEAD и запустит main3.lua из корня папки проекта. При этом библиотеку Метапарсера вам даже не надо подкладывать к проекту, потому что RE:INSTEAD носит с собой свою и использует её (это, кстати, нужно иметь в виду).

Теперь про отладку. В INSTEAD есть функция dprint, которая выводит информацию в консоль. В данной сборке весь вывод dprint перенаправляется в окошко «Вывод» ZeroBrane Studio. Так что можно пользоваться этой функцией для вывода отладочной информации в тех местах, где программа игры ведёт себя непонятно.

Но и это ещё не всё. Если в папке с игрой находится файл autoscript.txt, то при запуске игры он будет задействован. И все команды из этого файла будут последовательно проиграны. Это оказалось невероятно удобным. Мы просто «проматываем» игру до нужного места и пробуем новые команды, отрабатывая очередной кусочек функционала!

При последовательной разработке у вас получится автоскрипт полного прохождения вашей игры (открытый в одной из вкладок редактора). А вы сможете остановить проигрывание в любом месте, просто вставив команду /stop (или !stop) в нужное место автоскрипта.

Вот, собственно, и всё. Надеюсь, мой опыт будет кому-то полезен. Конечно, вместо ZeroBrane можно использовать любой другой редактор, главное — научить его запускать RE:INSTEAD и использовать автоскрипт. В целом, как раз запуск из редактора с автоскриптом и оказался для меня комбинацией, позволившей писать игру с таким удобством.