2015-11-27 6 views
1

Я работаю над RTS-игрой, и я хочу иметь возможность строить структуры, а это значит, что строитель будет ходить в целевое местоположение и, как только там, начнет строить. Я хочу реализовать statemachine в каждом модуле, где состояния могут быть добавлены по мере ввода пользователем, потому что это может пригодиться позже, когда единицы охраняют положение и прочее. Мой вопрос: полезно ли создавать statemachine для каждого пользователя, принадлежащего пользователю, или это ловушка?Statemachine в RTS

ответ

1

Государственные машины распространены в играх.

Государственная машина - это обычный подход к поведению объектов, NPC и т. Д. В играх.

Они настолько широко используются, что они часто поддерживаются игровыми системы: например .: Unity

Конечный автомат ловушка может быть потребление ресурсов наивной реализацией, например один из которых использует State Pattern, что вполне нормально, только если в нем не работает относительно немного государственных машин одновременно, в противном случае потребление ресурсов шаблона состояния будет непомерно высоким для тысяч одновременных состояний машин.

Если вы действительно хотите, чтобы тысячи отдельных состояний машины работали одновременно или нуждались в максимальной эффективности, вам придется реализовать их с помощью более простых подходов: например: вложенные операторы switch или реализации на основе таблиц examples in C.

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

Основная причина использования государственных машин заключается в том, чтобы моделировать вашу проблему с ясностью: вы можете думать о краевых условиях визуально, вытягивая конечный автомат, например. используя инструменты, такие как GraphViz или вручную. Проще видеть, что произойдет в каком сценарии, точно.

Иногда ваша проблема «просто вызывает» для представления Machine Machine: она имеет «состояния» и сложные поведения, которые зависят от прошлых событий.

Государственные машины имеют десятилетия исследований в области компьютерных наук, и известны алгоритмы их анализа, их упрощения и т. Д.

Если попытаться смоделировать государственную машину «путем добавления и удаления IF заявления», вручную, you will end up with messier code, что вы не будете в состоянии преобразовать, модель и т.д.

На «Против» сторона , если вы используете стандартные машины на основе таблиц, отладка их будет несколько сложной.

+0

Благодарим вас за разъяснение :) – GeekPeek

 Смежные вопросы

  • Нет связанных вопросов^_^