Выбор дизайна для Систем моего ECS (Не связано с языком) - PullRequest
0 голосов
/ 28 сентября 2019

В настоящее время я работаю над очень маленькой и простой (~ 400 строк кода) Entity Component System на C ++.В последнее время я подошел к тому моменту, когда сработали основные требования к базовой структуре, и я хотел начать внедрение Систем.В настоящее время у меня есть системы RenderSystem, MovementSystem, CameraSystem и EventSystem.

Допустим, я хочу создать JoystickComponent, который просто перемещает все сущности с этим компонентом.У меня будет только одна сущность, а именно игрок, у которого есть этот компонент.Плеер должен всегда стоять на месте, а камера должна двигаться.
Поэтому, когда джойстик перемещается, CameraOffset должен измениться.Это довольно легко реализовать, но в идеале Система никогда не должна напрямую взаимодействовать с другой.
Но как быть с отбрасыванием или препятствиями, например?Это означает, что CameraOffset должен быть связан со скоростью игрока-сущности.Просто для этого мне нужно добавить идентификатор сущности, которая будет управлять камерой, в CameraSystem и записать там логику, а также метод проверки, был ли этот субъект добавлен или удален. Что, если у этого объекта нетеще не создано?Поэтому я должен проверить, существует ли этот контроллер сущности.

Это довольно неприятно, негибко и добавляет ненужную сложность.Что является более простым решением?Действительно большие проекты ECS, очевидно, должны иметь дело с гораздо большей сложностью.Каков общий подход к подобным ситуациям?

Заранее спасибо за ответы!

...