Мне просто интересно, чего не хватает в XNA, чтобы считаться игровым движком. Он делает все то, что должен делать игровой движок (кроме части физики); он также поддерживает все аспекты, определенные в статье Википедии об игровых движках .
Почему 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)
смешивать с обновлением буферов на моем графическом рендерере.источник
what makes an sdk to be called a GameEngine?
Фреймворк предоставляет минимальную архитектуру, созданную для определенного типа приложений. Это сводит к минимуму предположения о деталях реализации за пределами заявленных целей архитектуры. В то время как кросс-платформенная среда разработки игр может иметь целью предоставить «то, что является общим (почти) для всех компьютерных игр, независимо от платформы», и может реализовывать только такие абстрактные факторы, как синхронизация и управление объектами, XNA Framework (неявно) имеет целью предоставить «то, что является общим (почти) для всех компьютерных игр, написанных для исполнения на XNA CLR». Учитывая, что этот фокус настолько узок, они смогли безнаказанно включить функции двигателя. Они объединяют все это под заголовком «Framework», поскольку это указывает на определенную свободу реализации, которой вы, как разработчик игры, будете наслаждаться.
Грубо говоря, структура должна быть максимально неограниченной, но при этом обеспечивать полезную основу. С другой стороны, движок, как правило, больше ориентирован на конкретные функции, и при его использовании вы соглашаетесь с определенными ограничениями, с которыми вы будете связаны.
источник
Я никогда не использовал «игровой движок», но мое понимание этого заключается скорее в предопределенном наборе инструментов в комплекте с предопределенной скелетной игровой структурой для разработки игры определенного типа. И, конечно же, то, что структура для разработки игр определенного типа является основным определяющим фактором в игровом движке, наверняка, похоже, привлекает вышеупомянутая статья в Википедии. Для меня платформа XNA больше похожа на набор сторонних библиотек, таких как AJAX, в том смысле, что она добавляет готовые подпрограммы к существующему языку программирования с открытым исходным кодом. Он не накладывает никаких ограничений или указаний на то, что вы, как программист, можете и не можете делать с этими библиотечными процедурами. На мой взгляд, это никак не похоже на двигатель. Тогда я пришел из бизнеса, ориентированного на программное обеспечение / веб-фон,
Я создал платформу для игровой идеи с использованием XNA, и мне определенно кажется, что я использую еще одну библиотеку на C #. Я собираюсь использовать процессы, которые я взломал в тестовой программе, чтобы создать две или три игры для Windows и, возможно, для Xbox.
Итак, как я уже сказал, на мой взгляд, это далеко от того, что я понимал как «игровой движок», поэтому, когда я наткнулся на этот пост, я понятия не имел, почему кто-то может сделать такое сравнение. Я ошибаюсь?
источник