Архитектура игрового фреймворка - компоненты просмотра или MVC?

Я пытаюсь создать очень легкий фреймворк многократного использования для своих игр, вместо того, чтобы начинать с нуля каждый раз, когда я запускаю игру. У меня есть компонентная архитектура - например, Сущность состоит из компонента Position, компонента Health, компонента Ai и т. Д.

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

Я пробовал оба метода, но если кто-нибудь знает плюсы и минусы каждого подхода и который является отраслевым стандартом, было бы здорово узнать.


person Iain    schedule 04.05.2009    source источник


Ответы (4)


зависит от вашей аудитории, разработчики игр, в том числе и я, не очень привыкли к модели MVC, хотя большинство ее знает, из-за потерь при разработке (а не по серьезным техническим причинам) не так просто поддерживать ее в чистоте. Итак, по опыту я видел, как десятки игровых фреймворков начинались как MVC, но только пара смогла сохранить его до конца. Моя теория заключается в том, что MVC добавляет слишком много сложности и мало преимуществ для небольших одноразовых игр (обычно с несколькими разработчиками), и очень сложно сохранить действительно четко разделить большинство игровых объектов на эти уровни для больших / сложных игр. А поскольку у игр есть дата выпуска, они часто приносят в жертву ясность кода и возможность повторного использования ради производительности и быстрых специальных решений (которые при необходимости будут переписаны в сиквеле (если они есть)).

Тем не менее, с оговоркой выше, лучше целиться высоко, потому что, если у вас получится, это лучше :) а если вы потерпите неудачу, от хорошего к плохому. Так что вам, вероятно, стоит попробовать MVC, но не волнуйтесь, если он потерпит неудачу, профессиональные разработчики игр терпели неудачу в этой задаче много раз :)

person Robert Gould    schedule 04.05.2009
comment
отличный ответ - есть ли на самом деле какие-то преимущества у MVC для игр? Вы все еще можете иметь несколько представлений через компоненты, так что это добавляет? - person Iain; 04.05.2009
comment
Теоретически это позволило бы разделить задачи, позволяя другому разработчику работать с представлениями, в то время как один моделирует, а другой контролирует. Проблема в том, что игровые задачи обычно делятся по вертикали (AI, физика, карты, персонажи и т. Д.). Так что обычно за создание стека MVC отвечает один и тот же разработчик. Но в идеале дизайнер должен моделировать, программировать, визуализировать художника. Таким образом, потенциальная выгода есть, если слои моделирования и визуализации можно будет превратить в удобные для пользователя инструменты. - person Robert Gould; 05.05.2009
comment
Но для программиста-одиночки это приводит к накладным расходам на изучение инструментов, поэтому имеет тенденцию разбиваться на компоненты. Другой вариант - посмотреть на миксины, которые тоже могут работать, по крайней мере, я однажды видел, как они хорошо работают. - person Robert Gould; 05.05.2009

Я бы конечно проголосовал за модель, чтобы она ничего не знала о ее взглядах. Слабая связь - это хорошо: более простой код модели, более легкое тестирование, больше возможностей выбора.

person zoul    schedule 04.05.2009

Я знаю, что этот вопрос может быть устаревшим, но мне нужно ответить на него. Собственно, я начал программировать игру на Lua (с LÖVE) и начал программировать для нее MVC - Framework. Во-первых, использование MVC действительно зависит от того, чего вы хотите. Я знаю свои проблемы с программированием игр, когда программа становится больше, и в большинстве случаев структура становится слишком сложной, чтобы ее можно было поддерживать. Следующее, что я знаю, я изменю всю графику, когда найду художника, который захочет над этим работать. Но до тех пор я буду использовать свою собственную фиктивную графику. Я хочу, чтобы художник мог свободно делать то, что он хочет, без каких-либо ограничений по разрешению или цвету. Значит, мне, возможно, придется изменить весь (!) Код презентации. Может быть, даже способ взаимодействия объектов (обнаружение столкновений, например). Логика игры отражена в моделях, поэтому я могу сосредоточиться на ней. И я считаю, что игровая логика - самая важная часть создания игры. Не так ли? Надеюсь, вы понимаете мою точку зрения.

Но если у вас есть все вместе: вся графика, звуки, все это; тогда вы можете писать код прямо вперед.

Мой MVC - это конфигурируемая по соглашению задница, которая немного замедляет создание прототипов. НО (!) Итерации разработки сделать намного проще. Тестирование, особенно модульное, выполняется намного быстрее. Я бы сказал, что MVC превращает вашу кривую скорости разработки (которая обычно является антиэкспоненциальной кривой) в экспоненциальную кривую. Медленно вначале, но все быстрее и быстрее в конце.

person Stephan    schedule 26.07.2010

MVC действительно хорошо работает для игр, по крайней мере, для моих игр, которые предназначены для кроссплатформенности. Это действительно зависит от того, как вы это реализуете, чтобы получить выгоду.

person Ramon Chan    schedule 05.08.2011