FRP на игровом движке.Стоит ли оно того? - PullRequest
18 голосов
/ 30 ноября 2011

Сегодня я прочитал о FRP (функционально-реактивное программирование). Однако я не знаю, насколько это вписывается в сам двигатель.

После прочтения статьи Герольда Майзингера мой вопрос: стоит ли использовать FRP вместо компонентной архитектуры. Это ближайшее будущее дизайна архитектуры игрового движка? Это просто простой подход к решению небольших проблем, основанный на компонентных архитектурах? Буду признателен за любую статью, объяснение, личное мнение и т. Д.

Подумайте о движке для коммерческой игры, особенно шутеров или гоночных жанров (3D игры) Не думайте о 2D-платформере или других более простых (говоря о сложности движка). Я бы использовал C / C ++ (я заметил, что люди, использующие FRP, полагаются на Haskell, из-за его природы. Однако я видел этот документ и предпочел стоять на C ++, как "отраслевой стандарт").

Ответы [ 2 ]

19 голосов
/ 01 декабря 2011

C ++ не подходит для FRP;любые библиотеки, которые вы используете ( Boost.Phoenix - хорошая), несут некоторые накладные расходы, с которыми вам, скорее всего, не захочется иметь дело в коммерческой 3D-игре.

Не тольконо FRP - не очень хорошо разработанная техника для игр, даже на Хаскеле;Вы хотите создать игру или разработать методику создания игр?

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

Если вы хотите создать игру, используйте CBS.Если вы хотите помочь в разработке FRP в играх, сделайте это.

Кстати, вы очень ошибаетесь, говоря, что в 2D-играх есть простые движки.:)


2014 Обновление

С тех пор появился новый язык, широко использующий функционально-реактивные методы и предназначенный для веб-разработки, который называется Elm .Он очень похож на Haskell и поддерживается Prezi , afaik.У дизайнера языков была довольно хорошая презентация , в которой он сделал небольшую игру с использованием FRP.Любой, кто интересуется обработкой FRP, может захотеть посмотреть это видео.

3 голосов
/ 12 марта 2012

Краткий ответ: вероятно, ни один из них!

Однако я не знаю, насколько это вписывается в сам двигатель.

Я не понимаючто вы подразумеваете под этим, но каждый фрагмент кода, который включает время (т.е. использует update( float elapsedTime )), обычно подходит для FRP - теоретически.О "fit in engine", возможно, HaskellWiki Yampa - Game Engine помогает ответить на ваш вопрос (урезанная и переведенная на английский вариант моей диссертации, которая объясняет общую архитектуру).Из дискуссий о FRP и прочтения некоторых статей FRP видно, что все еще остаются нерешенные проблемы с общей теоретической концепцией, поэтому я рекомендую провести тщательное тестирование перед использованием любой библиотеки FRP в коммерческом проекте (особенно производительности и памятипроблемы).Посмотрите на видео Frag .Это шутер, написанный на FRP, и самый совершенный на сегодняшний день пример.

Подумайте о движке для коммерческой игры, особенно шутеров или гоночных жанров (3D-игр).

Хм, на чем ты сфокусирован?Вы разрабатываете коммерческую игру?Тогда используйте существующий движок и не беспокойтесь об этом!Вы разрабатываете двигатель?Тогда FRP может быть интересной концепцией.Изменение игровых объектов с компонентами не должно быть необходимым для стрелков и гоночных игр, поскольку они используют только очень мало различных игровых объектов, и слишком большое внимание к архитектуре может оказаться чрезмерным.Не сфокусироваться?Получите фокус!Вы не можете самостоятельно разработать следующий движок IdTech и следующую Doom-игру.

Я видел этот документ и предпочитаю использовать C ++ как «отраслевой стандарт»

Также есть несколько библиотек для C ++.Поиск "реактивного или временного программирования".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...