Шаблон разработки MVC, используемый в коммерческих компьютерных играх

Шаблон разработки MVC используется в коммерческих компьютерных играх?

Особенно относительно высокопроизводительных игр мне любопытно, если были какие-либо коммерческие пользователи MVC в игровой промышленности?

33
задан PeanutPower 5 February 2010 в 20:01
поделиться

3 ответа

Пробовали ли вы запустить Maven с помощью команды -X для печати отладочной информации?

$ mvn -?
...
 -X,--debug      Produce execution debug output

Подключаемый модуль maven-javac должен затем распечатать используемый путь к классам, исходные каталоги/путь и т.д.

-121--2705520-

Приложение, вероятно, висит, так как оно заполняется до точка, когда все активные потоки находятся в очереди. (Я предполагаю, что исходный поток ожидает завершения рабочих предметов (предметов ), которые он ставит в очередь.)

Пул потоков по умолчанию содержит 25 * (число ЦП) рабочих потоков (IIRC).

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

Лучшей конструкцией может быть наличие какой-то очереди или стека, в который несколько (2-4 в зависимости от количества ЦП) рабочих потоков добавляют предметы и выключают предметы для работы. Если предмет должен поставить в очередь новый предмет, он просто добавляет его в стек (и добавляет себя обратно в стек с каким-либо отслеживанием зависимостей, если ему нужно дождаться другого предмета).

-121--4716365-

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

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

В большинстве бизнес-приложений эти два мира отличаются друг от друга. Например, модель электронной таблицы является просто 2D сеткой значений. Он не должен думать о том, насколько широки ячейки в пикселях, где полосы прокрутки и т.д. В то же время представление электронной таблицы не знает, как вычисляются или сохраняются значения ячеек.

В игре эти два мира гораздо ближе друг к другу. Игровой мир (модель) обычно представляет собой набор объектов, расположенных в некотором виртуальном пространстве. Игровое представление также представляет собой набор объектов, расположенных в некотором виртуальном пространстве. Ограничивающие объемы, анимация, положение и т.д., все вещи, которые вы бы считали частью «вида», также непосредственно используются «моделью»: анимация может повлиять на физику и ИИ и т. д.

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

Вместо этого игры имеют тенденцию разъединять вещи вдоль границ домена: ИИ, физика, аудио, рендеринг и т.д. будут храниться как можно отдельно.

69
ответ дан 27 November 2019 в 17:51
поделиться

Это будет сильно зависеть от игры.

Например, шутер от первого лица, скорее всего, нет.

Симулятор полета, MVC очень вероятно (X-Plane и FlightGear оба на самом деле используют MVC, это видно по их API плагинов). SimCity, вы, безусловно, могли бы сделать это таким образом и иметь смысл (понятия не имею, если они на самом деле сделали). Возможно, стратегия в реальном времени. Bejeweled, кто знает.

6
ответ дан 27 November 2019 в 17:51
поделиться

Я не знаю ни одной коммерческой игры, в которой он используется; могут быть некоторые. Однако мне удалось найти статью (PDF), в которой упоминается шаблон MVC, используемый в компьютерных играх. Это может дать вам некоторое представление.

5
ответ дан 27 November 2019 в 17:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: