Танковая игра: Многопользовательская онлайн-игра в терминале

Текущее состояние:

  1. Серверная часть:

    • Написана на Go
    • Использует PostgreSQL для хранения данных игроков
    • Использует Redis для кэширования и быстрого доступа к состоянию игры
    • Реализован базовый игровой цикл (добавление игроков, перемещение)
    • Использует Server-Sent Events (SSE) для отправки обновлений клиентам
  2. Клиентская часть:

    • Терминальный интерфейс на Go с использованием библиотеки tcell
    • Базовое отображение игрового поля и игроков
    • Управление с помощью клавиш со стрелками
  3. Инфраструктура:

    • Использует Docker и docker-compose для развертывания
    • Включает контейнеры для сервера, PostgreSQL и Redis

Планируемые улучшения:

  1. Игровая механика:

    • Добавить препятствия на карту (стены, вода)
    • Реализовать стрельбу и уничтожение танков
    • Добавить систему очков и уровней
    • Реализовать различные типы танков с разными характеристиками
  2. Сетевой код:

    • Улучшить обработку отключений клиентов
    • Реализовать систему комнат для нескольких одновременных игр
  3. Пользовательский интерфейс:

    • Улучшить визуальное представление в терминале (использовать цвета)
    • Добавить мини-карту
    • Реализовать простое меню для выбора режима игры
  4. Производительность и масштабируемость:

    • Оптимизировать использование Redis для больших карт
    • Реализовать шардирование базы данных для поддержки большого количества игроков
  5. Безопасность:

    • Добавить аутентификацию и авторизацию пользователей
    • Реализовать защиту от читерства
  6. Дополнительные функции:

    • Добавить чат между игроками
    • Реализовать систему достижений
    • Добавить ботов для одиночной игры

Известные баги и проблемы:

  1. Сервер возвращает ошибку 500 при попытке присоединиться к игре (возможно, проблема с подключением к базе данных)
  2. Клиент иногда зависает при получении обновлений от сервера
  3. Отсутствует корректная обработка краевых случаев (например, когда игрок пытается выйти за границы карты)
  4. Нет обработки одновременного движения нескольких игроков к одной клетке
  5. Отсутствует восстановление соединения при потере связи с сервером

Приоритетные задачи:

  1. Исправить ошибку 500 при присоединении к игре
  2. Улучшить обработку ошибок и логирование на сервере
  3. Реализовать базовую систему столкновений и стрельбы
  4. Улучшить визуальное представление игры в терминале
  5. Добавить простое лобби для создания и присоединения к играм

Технический долг:

  1. Необходимо улучшить структуру проекта, разделив код на более мелкие и специализированные пакеты
  2. Требуется добавить юнит-тесты для ключевых компонентов
  3. Нужно реализовать систему миграций для базы данных
  4. Необходимо добавить мониторинг и профилирование для выявления узких мест производительности

Этот проект представляет собой увлекательную многопользовательскую танковую игру, работающую в терминале. Он демонстрирует использование современных технологий Go для создания распределенных систем и игр в реальном времени. Проект находится на ранней стадии разработки и имеет большой потенциал для расширения и улучшения.