Microsoft XNA - це набір інструментів із керованим середовищем виконання, що надається Microsoft, що полегшує розробку та управління комп'ютерними іграми. XNA намагається звільнити розробників ігор від написання "повторюваного кодового коду" та об'єднання різних аспектів виробництва ігор в єдину систему.
Він розроблений як рамка - насправді XNA - це Microsoft XNA Framework - технічно це не назва двигуна за назвою.
Немає "двигуна" - якщо ви помітили, ви отримуєте свій основний клас від XNA.Framework.Game і вам належить самостійно переосмислити функції малювання та оновлення. Немає центральної системи візуалізації, системи введення або аудіосистеми, яка не готова. Є класи SpriteBatch і вершини, є KeyboardState, і є деякі аудіокласи .. але вони є лише абстракціями над кодом малювання низького рівня.
EDIT: Для корисності, чому щось має значення, якщо його позначають як двигун, рамку, бібліотеку чи набір інструментів?
Щоб дещо з'ясувати: я розробляю двигун у XNA. Очевидно, я не можу зробити це в чомусь на зразок нереального, як згадував Джонатан. Однак є кілька речей, які я вважаю важливими, що у XNA просто немає:
Plug-n-play: Я хочу мати можливість зробити якийсь шаблон - майте цю HP, цю сітку, цю анімацію та BOOM! У мене в грі є NPC.
Прихований низький рівень - XNA це вже робить, але я не хочу заганятися з GameServiceProviders. Я просто хочу підсунути речі разом.
Гра відокремлена від двигуна - Можливо, є клас «гра», але я хочу відокремити свою логіку та свій код від базової системи. Я не хочу if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)
змішуватись з оновленням буферів мого графічного рендерінгу.