Multiplayer-Roguelike – это многопользовательская кооперативная игра в жанре roguelike с видом сверху. Игроки сражаются с волнами зомби, используя различное оружие. Проект реализован с разделением на выделенный сервер и клиентную часть на Unity.
Проект разработан с упором на чистую архитектуру и производительность сетевого кода.
- Backend (Сервер): MVP (Model-View-Presenter) – четкое разделение данных (Model), логики представления (Presenter) и сетевого взаимодействия.
- Frontend (Клиент): ECS (Entity Component System) – высокопроизводительная архитектура для обработки множества игровых объектов.
- Unity 6 (6000.3.9f1)
- C# / .NET 8
- ENet – библиотека для надежного UDP-взаимодействия
- DotRecast – библиотека для навигации и построения NavMesh (аналог Recast/Detour)
Multiplayer-Roguelike.Shared– Общая библиотека (netstandard2.1). Содержит модели данных, команды и протоколы, используемые и клиентом, и сервером.Multiplayer-Roguelike.Backend– Выделенный сервер (.NET 8 Console App). Управляет игровой сессией, логикой врагов и обработкой команд.Multiplayer-Roguelike.Unity– Клиентская часть (Unity). Отвечает за ввод, отрисовку, UI и отправку команд на сервер.
- Различное оружие: Ближний бой (бита) и дальнобойное (пистолет).
- Тактическое взаимодействие: Кооперативная стрельба и смена позиций.
- Волны врагов: Система спавна, которая адаптируется под количество игроков и номер волны.
- Архитектура "Авторитетный сервер": Вся игровая логика (урон, смерть, перемещение врагов) рассчитывается на сервере.
- Система команд (Command Pattern): Клиент отправляет команды (Move, Attack, SwitchWeapon), сервер их валидирует и исполняет.
- Синхронизация состояний: Использование бинарного протокола для передачи только изменившихся данных (Delta Compression через
IsDirtyфлаги).
- Server-Side Navigation: Использование библиотеки DotRecast для расчета пути врагов на сервере.
- NavMesh: Загрузка предрассчитанного NavMesh (
base.navmesh) для передвижения врагов. - Crowd Simulation: Использование Detour Crowd для обработки столкновений и скоплений врагов.
- Кастомный ECS на клиенте: Реализован легковесный ECS для управления сущностями без накладных расходов DOTS.
- Объекты пула (Pooling): Использование пулов для партиклов (стрельба, кровь, смерть) для оптимизации производительности.
- Интерполяция: Сглаживание движения сетевых объектов (
PositionInterpolationSystem) для компенсации задержки.
- Unity 6000.3.9f1 или новее
- .NET 8 SDK
- Сервер:
- Открыть решение
Multiplayer-Roguelike.Backend.sln. - Собрать и запустить проект
MultiplayerRoguelike.Backend.
- Открыть решение
- Клиент:
- Открыть папку
Multiplayer-Roguelike.Unityв Unity Hub. - Открыть сцену
MainScene. - Запустить игру.
- Открыть папку
Итог: Multiplayer-Roguelike демонстрирует подход к разработке сетевых игр с использованием паттернов Command и MVP на сервере и ECS на клиенте.
