Найти тему
1289 подписчиков

Хочется сказать ещё пару слов про управление.


Есть игра, где есть персонаж, которым надо управлять и другие, уже игровые, персонажи. Например, гоночный болид, которым управляет игрок и ещё несколько гоночных болидов, которыми могут управлять как другие игроки, так и компьютер.

Самая большая головная боль возникает во время создания управления. Нажатие кнопок и движение мышки довольно легко обрабатывать и, даже, использовать эти данные для изменения состояния игрового персонажа на экране (например, перемещать).

Однако, когда речь заходит про управление прочими игровыми персонажами проблема и вскрывается: они-то должны управляться как-то по другому. А если управление основным персонажем изначально завязано на IO (ввод-вывод доступных интерфейсов), то повторно использовать данный подход уже не получится и понадобится создавать какой-то другой способ управления, что гарантировано приведёт к растущей в геометрической прогрессии куче сложностей (и, пожалуй, самой большой сложность будет разрастание размера и сложности кодовой базы), потому что изначально выбрана крайне неоднозначная стратегия управления.

Чтобы проект мог не только существовать, но и развиваться с относительно небольшими трудозатратами, следует максимально унифицировать все схожие операции. В том числе такие, как управление.

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

Все персонажи находятся на экране, приходит набор управляющих воздействий, адресно применяется и состояние персонажей изменяются (увеличивается скорость, меняется траектория итд).

Пожалуй главным "слепым пятном" данного подхода является тот факт, что некоторым сущностям экрана требуется "постоянный приказ", который будет действовать на ней непрерывно (например, выпущенная пуля летит до соприкосновения с препятствием) и это надо как-то обрабатывать. Но я над этим ещё подумаю.
Хочется сказать ещё пару слов про управление. Есть игра, где есть персонаж, которым надо управлять и другие, уже игровые, персонажи.
1 минута