Создаем игру на Unity DOTS #4 Архитектура игры

preview_player
Показать описание

Сегодня поработаем над архитектурой игры. В этом видео не будет DOTS, так как он предназначен для реализации производительной игровой логики, но не подходит для создания пользовательского интерфейса и управления состоянием всей игры. Для начала подключим библиотеку Zenject – удобный способ управления зависимостями. Далее реализуем внедрение зависимостей в системы ECS. Также реализуем глобальную машину состояний игры.

0:00 Введение
0:37 Zenject
1:16 Установка Zenject
1:27 Внедрение зависимостей в системы ECS
3:50 Перенос схем управления в сервис
5:51 Реализация машины состояний
9:10 Реализация состояний игры
18:03 Подготовка сцен и экрана загрузки
21:59 Заключение
Рекомендации по теме
Комментарии
Автор

Круто рассказываешь и делаешь! Продолжай!

romansmartlogic
Автор

Артур, спасибо, отличный материал.

Как решаете вопрос неоднозначности нейминга для классов стейтов машины состояний? Имя GameState можно воспринять и как класс с данными, и как класс состояния машины состояний.

Часто хочется иметь параметризованные тригеры. В вашем проекте было бы удобно передать имя уровня через тригер. Есть идеи, как это сделать в C#?

Интерфейс IState может иметь событие Fired. Машина состояний может подписываться на это событие для активного стейта. Возможно, инвок события - более удобный способ переключать стейты.

Rigo
Автор

привет,

для каждой сцены, в которой свой набор компонентов и систем будет требоваться свой ecs world?

ildarsharafutdinov
Автор

Так сам ECS сам по себе уже является архитектурным паттерном

HelloWorld-lncy
Автор

Привет! Заметил что у тебя view связан с моделью state. Разве это хорошая практика? Не лучше их отделить?

brickman
Автор

Использует ли ninject кодогенерацию? Если да, то как это отразится на IOS устройствах?. Что по производительности, не режет ли этот инструмент ее особенно на мобилках?

HelloWorld-lncy