Часть 1. Как я делаю backend для браузерной игры три в ряд: server-driven контент, транзакции и идемпотентность
gilbertfrost 6 минут назад Часть 1. Как я делаю backend для браузерной игры три в ряд: server-driven контент, транзакции и идемпотентность Простой 18 мин 29 TypeScript * Node.JS * VueJS * JavaScript * PostgreSQL * Кейс...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
В сфере искусственного интеллекта произошло заметное событие. gilbertfrost 6 минут назад Часть 1. Как я делаю backend для браузерной игры три в ряд: server-driven контент, транзакции и идемпотентность Простой 18 мин 29 TypeScript * Node. JS * VueJS * JavaScript * PostgreSQL * Кейс Привет, Хабр.
Я frontend-разработчик и большую часть времени работаю с Vue и TypeScript. В последнее время мне стало интересно глубже разобраться с backend-разработкой, но делать для этого отдельный учебный CRUD-проект не хотелось. Я уже сделал свою первую игру и написал о ней в этой статье.
Технические детали
Новая игра задумывалась уже сложнее по механикам и без серверной работы в ней было не обойтись. Таким образом серверную часть я решил добавить в свою новую игру — 3D-игру три в ряд с персонажами, способностями, прокачкой и PvP. Первоначальная задача была довольно простой: я хотел иметь возможность менять персонажей, способности и баланс уже после публикации игры, не собирая для каждого изменения новую версию клиента.
Но вокруг этого довольно быстро появились дополнительные задачи:как описывать способности данными, а не функциями в клиенте;как проверять полученный с сервера игровой контент;как версионировать персонажей и баланс;как не отдавать игрокам наполовину обновлённые данные;как хранить прогресс игрока;как безопасно списывать ресурсы;что делать с повторными запросами;как обрабатывать несколько одновременных запросов;как управлять всем этим через админку. В итоге backend перестал быть просто API, которое возвращает JSON с героями. Ниже расскажу о том, как сейчас устроена серверная часть проекта и с какими проблемами я столкнулся во время её разработки.
С чего всё началосьИгра представляет собой 3D-вариацию механики «три в ряд». Игровое поле состоит из кубов пяти элементов:огонь;лёд;земля;свет;тьма. Игрок собирает комбинации и получает за них боевые ресурсы.
Отраслевые последствия
Эти ресурсы используются в PvP и взаимодействуют со способностями персонажа. У каждого персонажа есть характеристики, уровень, ранг пробуждения, активная способность, пассивная способность и Ultimate. При этом способность может одновременно влиять и на поле игры три в ряд, и на боевую часть.
Например:Превратить три куба в огненные + увеличить огненный урон на 25% до конца раунда На этапе прототипа персонажи и способности хранились прямо на frontend. Это было удобно: я мог быстро менять числа, добавлять новые механики и сразу проверять результат. Но такой подход плохо подходит для уже опубликованной игры.
Если после релиза я решу изменить стоимость способности с 40 до 35, не хочется ради одной цифры менять TypeScript, собирать игру, создавать новый архив, загружать его в Яндекс Игры и ждать публикацию новой версии. Особенно если речь идёт о балансе, который может меняться довольно часто. Поэтому я решил сделать игровой контент server-driven.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.




