А я тоже делаю свой lua-sandbox
Всем привет. Меня зовут Валера, я go-разработчик. В какой-то момент своей карьеры(а об этом я напишу в конце статьи, что бы не выглядело рекламой или пиаром по мере чтения) я решил, что хочу сделать свой луа-движок. Да не просто движок, а со свистелками-перделками да узконаправленный. Выбор пал на пошаговые игры. И нет, я сейчас не про jagged alliance(хотя и оно тоже будет реализуемо) а про целый пласт игр, которые суммарно я назову event-oriented games. В этот список я готов внести:
Все настольные игры
Все устные игры(мафия, элиас и иже с ними)
Все пошаговые стратегии(Disciples, че бы нет)
Все тактические пошаговые игры(а вот и Jagged Alliance)
И все они имеют одно большое сходство - для любого события работает схема action -> state. Для любого. Для меня, как для разработчика это большой плюс, потому что для меня это облегчает работу. Никаких хитроумных predictive алгоритмов, никаких дельта расчетов, ничего, что заставит нагружать и без того не самую мощную Lua VM лишними расчетами.
Поэтому я делаю свой первый блин(и нет, это точно не будет комом). Если честно, то писать страшновато, но мой тех. директор убедил, что писать статьи - полезно, что лучше полная панамка, чем пустая.
Для бэкенда я выбрал обвязку go + gopher-lua(есть и другие варианты, но с этой работать намного привычнее в виду моей профессиональной деятельности) а для фронта скорее выбор без выбора. phaser + fengari. Они отлично сочетаются друг с другом, не ощущаю больших проблем в создании api бриджей между визуальным движком и луа.
Что уже сделано:
1) Выбрано название для платформы. Braca - хотелось иметь легкую отсылку к Бракаде из одной популярной игры)
2)Готовы базовый бэкенд+фронтенд
3) Реализованы мультиплеерные шахматы + пошаговая игра собственной разработки
4) Есть минималистичный фронт с необходимыми для закрытых тестов штуками
5) Функционал игровых комнат, команды, режим наблюдателя
6) Чат-каналы
7) Базовые lua-модули: ui, chat
8) Большая дока по луа, которая несёт пользу моему единомышленнику Ромычу
Что в планах:
1) Удобный интерфейс для публикации своих игр и lua-модулей(git-like, естественно:))
2) Статистика для луа-разработчиков
3) Сервис ачивок
4) Кастомизация интерфейса комнаты для луа-разработчика(то есть разработчик буквально сможет переопределять, как должна выглядеть веб-морда до запуска игры)
Пока не готов раскрывать технические детали проекта, но могу однозначно сказать, что уделяю особое внимание безопасности: луа-разработчик НЕ СМОЖЕТ повесить сервер кривым кодом, НЕ СМОЖЕТ достать какие-то данные, которые ему не предназначены, НЕ СМОЖЕТ заставить игроков выполнять свои вычисления за их счет.
Немножко моей первой игры. Цель банальна - рассекретить и уничтожить базу врага, при этом защитив свою.
А теперь о профессиональной деятельности. Начну издалека. 18 лет назад я мечтал, что вот я вырасту и как буду делать игры. Жизнь оказалась прозаичнее. Несколько лет отработал в wb на go, затем решил уйти в сторону геймдева. И ровно в этот момент мы с Pixel Quest нашли друг-друга. Я и сейчас тут, делаю отличный продукт. И в это же время получаю огромное количество экспы, т.к. пиксель находится в окологеймдеве. У нас тут, знаете ли, свой реалтайм луа-движок используется.








