Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 

Repository files navigation

leave-game - Выход игроков из игры и таблица рекордов

Проект для портфолио | C++20 | CMake | Boost | PostgreSQL

Проект расширяет существующий игровой сервер на 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.

🔹 REST эндпоинт

  • GET /api/v1/game/records возвращает отсортированный и постранично разделённый список рекордсменов.

🔹 Умная сортировка

  • записи упорядочиваются по:

    • Убыванию очков.
    • Возрастанию игрового времени.
    • Лексикографическому порядку имени.

🔹 Гибкая настройка

  • Время бездействия задаётся в конфигурационном JSON‑файле свойством dogRetirementTime (в секундах). По умолчанию – 60 секунд.

🔹 Автоматическое создание таблицы

  • при запуске сервер проверяет наличие таблицы retired_players и, при необходимости, создаёт её вместе с индексами.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages