Проект расширяет существующий игровой сервер на C++ реализацией автоматического ухода на покой при бездействии игрока, а также вывода таблицы рекордов, сохраняемой в PostgreSQL.
- C++20
- CMake 3.11
- Boost 1.78.0
- PostgreSQL
git clone https://github.com/Rinalii/leave-game.git
cd serializing-state/solution
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .
bin/game_server -c ../data/config.json -w ../static/ -t <tick-period> --st <state-file> --sv <save-state-period>
- Собака автоматически удаляется из игры, если её скорость остаётся нулевой в течение заданного времени (например, при остановке у края дороги или после команды {"move": ""}).
- После ухода на покой токен игрока становится недействительным, сервер отклоняет последующие запросы с этим токеном.
- Данные ушедших собак (имя, набранные очки, общее время в игре) сохраняются в таблицу PostgreSQL.
- GET /api/v1/game/records возвращает отсортированный и постранично разделённый список рекордсменов.
-
записи упорядочиваются по:
- Убыванию очков.
- Возрастанию игрового времени.
- Лексикографическому порядку имени.
- Время бездействия задаётся в конфигурационном JSON‑файле свойством dogRetirementTime (в секундах). По умолчанию – 60 секунд.
- при запуске сервер проверяет наличие таблицы retired_players и, при необходимости, создаёт её вместе с индексами.