Почему XNA не считается игровым движком?


13

Мне просто интересно, чего не хватает в XNA, чтобы считаться игровым движком. Он делает все то, что должен делать игровой движок (кроме части физики); он также поддерживает все аспекты, определенные в статье Википедии об игровых движках .

Почему XNA не считается игровым движком?


19
@Miro Это не имеет смысла.
Коммунистическая утка

2
В чем смысл? Если он делает ту работу, которая вам нужна, используйте ее. Если нет, то не надо. Кого волнует, как люди называют это? В любом случае, это всего лишь ярлык, в основном используемый маркетинговыми обезьянами;)
Maik Semder

это просто потому что комментарий Коммунистическая утка ответила на мой комментарий в этом вопросе
Ali1S232

4
@Maik Semder Это вообще не лейбл. Движок и фреймворк - это две разные и разные вещи, а XNA - последняя. Полезно различать и понимать, что XNA не является движком, в противном случае вы можете сильно запутаться, когда обнаружите, что вам на самом деле может понадобиться создать движок в XNA или что он не предлагает никаких плагинов «некоторые биты и…». игровые возможности, как у реальных двигателей.
doppelgreener

3
@Maik Это часть того, как мы работаем над тем, что он делает. Я говорю « водитель» , вы знаете, что это такое, а что нет, что он делает и как его использовать. Нечто подобное должно произойти, когда я говорю « фреймворк», но только если вы понимаете, что такое фреймворк, а что нет (движок). Учитывая эти практические последствия, я в основном возражаю против того, чтобы вы говорили: «Кого волнует, как люди называют это? В любом случае, это всего лишь ярлык»
doppelgreener

Ответы:


28

Microsoft XNA - это набор инструментов с управляемой средой выполнения, предоставляемый Microsoft, который облегчает разработку компьютерных игр и управление ими. XNA пытается освободить разработчиков игр от написания «повторяющегося стандартного кода» и объединить различные аспекты производства игр в единую систему.

Он спроектирован как фреймворк - на самом деле XNA - это Microsoft XNA Framework - так что технически это не движок по имени.

Механизма не существует - если вы заметите, вы извлекаете свой основной класс из XNA.Framework.Game и должны самостоятельно переопределить функции рисования и обновления. Нет готовой центральной системы рендеринга, или системы ввода, или аудиосистемы. Есть SpriteBatch и классы вершин, есть KeyboardState, и есть некоторые классы аудио ... но они являются только абстракциями над кодом рисования низкого уровня.

РЕДАКТИРОВАТЬ: Ради полезности, почему что-то имеет значение, если оно помечено как движок, каркас, библиотека или набор инструментов?

Чтобы прояснить ситуацию: я разрабатываю движок в XNA. Очевидно, я не могу сделать это в чем-то вроде Unreal, как упоминал Джонатан. Однако есть несколько вещей, которые я считаю важными, которых у XNA просто нет:

Plug-n-play: я хочу иметь возможность создать какой-то шаблон - есть этот HP, этот меш, эта анимация и БУМ! У меня есть NPC в моей игре.

Низкий уровень скрыт - XNA уже делает это, но я не хочу возиться с GameServiceProviders. Я просто хочу собрать вещи вместе.

Игра отделена от движка - может быть класс «игра», но я хочу отделить свою логику и код от базовой системы. Я не хочу if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)смешивать с обновлением буферов на моем графическом рендерере.


Я согласен с тем, что вам нужно переопределить рисование и обновить настройки, но это не значит, что у него нет движка рендеринга, дело в том, что он готовит все для рисования, а это не только абстрактные вызовы рисования, просто глядя на его образец у него есть не что иное, как 2d GameEngine (я действительно не проверял 3D-вещи), и, насколько я помню, у него есть контроллеры ввода, и я имею в виду, что это просто фреймворк, потому что Microsoft так его назвала или у него есть логическая причина ?
Ali1S232

1
@Gajet: Подумайте на минуту, что в сети обсуждается, как создать движок в XNA, но не для Unreal Engine или CryEngine. Я думаю, что общей характеристикой игрового движка является то, что вы можете просто подключить биты, и что- то пойдет ( TV Tropes утверждает, что движки в этом отношении могут быть достаточно управляемыми данными ). В отличие от этого, XNA позволяет вам выполнять практически каждую унцию работы самостоятельно - вам просто не нужно создавать промежуточное программное обеспечение для взаимодействия с устройствами.
doppelgreener

1
Более того, я не верю, что нашел четкое определение игрового движка, но я знаю, что существуют игровые движки , и XNA просто не делает ничего из того, что они делают (за исключением обеспечения промежуточного программного обеспечения и некоторых очень простые низкоуровневые компоненты).
doppelgreener

@ Джонатан Хоббс: теперь я понимаю, о чем ты говоришь, но снова я попробовал GameBryo (NetImmerse), и это считается игровым движком, но до световой скорости у него было меньше возможностей, чем у самой XNA, это было просто посредничество, так что я думаю, что мы можно изменить название вопроса наwhat makes an sdk to be called a GameEngine?
Ali1S232

1
Но вы можете разработать движок, используя существующий движок в качестве основы, если вы действительно хотите быть педантичным. Многие люди приняли Quake 3 Tech, а затем сделали двигатель, который был более удобным. Опять же, вы также можете сделать игру без «движка», если вы действительно этого хотите. Правильнее называть xna фреймворком, но я не знаю, как отличить его от «движка», поскольку он не так сильно определен, как «фреймворк».
Тетрад

5

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

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


2

Я никогда не использовал «игровой движок», но мое понимание этого заключается скорее в предопределенном наборе инструментов в комплекте с предопределенной скелетной игровой структурой для разработки игры определенного типа. И, конечно же, то, что структура для разработки игр определенного типа является основным определяющим фактором в игровом движке, наверняка, похоже, привлекает вышеупомянутая статья в Википедии. Для меня платформа XNA больше похожа на набор сторонних библиотек, таких как AJAX, в том смысле, что она добавляет готовые подпрограммы к существующему языку программирования с открытым исходным кодом. Он не накладывает никаких ограничений или указаний на то, что вы, как программист, можете и не можете делать с этими библиотечными процедурами. На мой взгляд, это никак не похоже на двигатель. Тогда я пришел из бизнеса, ориентированного на программное обеспечение / веб-фон,

Я создал платформу для игровой идеи с использованием XNA, и мне определенно кажется, что я использую еще одну библиотеку на C #. Я собираюсь использовать процессы, которые я взломал в тестовой программе, чтобы создать две или три игры для Windows и, возможно, для Xbox.

Итак, как я уже сказал, на мой взгляд, это далеко от того, что я понимал как «игровой движок», поэтому, когда я наткнулся на этот пост, я понятия не имел, почему кто-то может сделать такое сравнение. Я ошибаюсь?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.