Танковая игра: Многопользовательская онлайн-игра в терминале
Текущее состояние:
-
Серверная часть:
- Написана на Go
- Использует PostgreSQL для хранения данных игроков
- Использует Redis для кэширования и быстрого доступа к состоянию игры
- Реализован базовый игровой цикл (добавление игроков, перемещение)
- Использует Server-Sent Events (SSE) для отправки обновлений клиентам
-
Клиентская часть:
- Терминальный интерфейс на Go с использованием библиотеки tcell
- Базовое отображение игрового поля и игроков
- Управление с помощью клавиш со стрелками
-
Инфраструктура:
- Использует Docker и docker-compose для развертывания
- Включает контейнеры для сервера, PostgreSQL и Redis
Планируемые улучшения:
-
Игровая механика:
- Добавить препятствия на карту (стены, вода)
- Реализовать стрельбу и уничтожение танков
- Добавить систему очков и уровней
- Реализовать различные типы танков с разными характеристиками
-
Сетевой код:
- Улучшить обработку отключений клиентов
- Реализовать систему комнат для нескольких одновременных игр
-
Пользовательский интерфейс:
- Улучшить визуальное представление в терминале (использовать цвета)
- Добавить мини-карту
- Реализовать простое меню для выбора режима игры
-
Производительность и масштабируемость:
- Оптимизировать использование Redis для больших карт
- Реализовать шардирование базы данных для поддержки большого количества игроков
-
Безопасность:
- Добавить аутентификацию и авторизацию пользователей
- Реализовать защиту от читерства
-
Дополнительные функции:
- Добавить чат между игроками
- Реализовать систему достижений
- Добавить ботов для одиночной игры
Известные баги и проблемы:
- Сервер возвращает ошибку 500 при попытке присоединиться к игре (возможно, проблема с подключением к базе данных)
- Клиент иногда зависает при получении обновлений от сервера
- Отсутствует корректная обработка краевых случаев (например, когда игрок пытается выйти за границы карты)
- Нет обработки одновременного движения нескольких игроков к одной клетке
- Отсутствует восстановление соединения при потере связи с сервером
Приоритетные задачи:
- Исправить ошибку 500 при присоединении к игре
- Улучшить обработку ошибок и логирование на сервере
- Реализовать базовую систему столкновений и стрельбы
- Улучшить визуальное представление игры в терминале
- Добавить простое лобби для создания и присоединения к играм
Технический долг:
- Необходимо улучшить структуру проекта, разделив код на более мелкие и специализированные пакеты
- Требуется добавить юнит-тесты для ключевых компонентов
- Нужно реализовать систему миграций для базы данных
- Необходимо добавить мониторинг и профилирование для выявления узких мест производительности
Этот проект представляет собой увлекательную многопользовательскую танковую игру, работающую в терминале. Он демонстрирует использование современных технологий Go для создания распределенных систем и игр в реальном времени. Проект находится на ранней стадии разработки и имеет большой потенциал для расширения и улучшения.