Игровой процесс
Автор: Denis Ignatov
Размышления:
Главное для меня это то что бы игровые обьекты наследники от ActorBase не имели никаких
контактов с другими игровыми обьектами.
Блок схема очень не детальная взаимоотношения обьектов и менеджеров
https://drive.google.com/file/d/18i1pQ9CL-hAWswNtuesTKIe_kNcQDXXV/view
TimePoolManager:
Реализовать решил на основе решений который я применял при разработки poker-server
dict<unixtime, IGameTask>
ключ это время срабатывание (в мс)
значение это наследник от интерфеса IGameTask
Это дает гибкость при создании задач на выполнения
GameManager:
Ожидает задачу от TimePoolManager если она поступила в карутине мы запускаем ее исполнение
я сделал универсальный блок задачу в которой пристутствует
1. тип (enum) задачи
2. обьект от которого пришла задачу
3. обьект к которому нужно применить (если нужно)
По моему мнению у меня получилось построить распределенную систему задач от разных обьектов.
GameObjectPoolManager:
Менеджер предоставляет сервис для создания и хранение ранее созданных обьектов.
Так как в любой системе содание/удаление обьекта является очень затратной оперецией
14 августа 2019