# Why is XNA not considered a game engine?

I'm just wondering what XNA is missing, to be considered as a game engine. It does all the things a game engine should do (except the physics part); it also has support for every aspect defined in the Wikipedia article on game engines.

Why is XNA not considered a game engine?

• @Miro That makes no sense. – The Communist Duck May 25 '11 at 10:45
• What's the point? If it does the job that you need, use it. If not, then don't. Who cares how people call it? It's just a label anyway, mostly used from marketing monkeys ;) – Maik Semder May 25 '11 at 11:05
• it's just becuase the comment The Communist Duck responded to my comment in this question – Ali1S232 May 25 '11 at 11:12
• @Maik Semder It isn't a label at all. An engine and a framework are two distinct and separate things, and XNA is the latter. It's useful to distinguish and understand that XNA is not an engine, otherwise you might get very confused when you discover you actually might need to create an engine in XNA, or that it does not offer any plug-in-some-bits-and-play capabilities like actual engines do. – doppelgreener May 25 '11 at 11:15
• @Maik This is part of how we work out what it does. I say driver, you know what it is and isn't, what it does and how you can use it. Something similar should happen when I say framework - but only if you recognise what a framework is, and what it isn't (an engine). Considering those practical implications I mainly object to you saying "Who cares how people call it? It's just a label anyway" – doppelgreener May 25 '11 at 11:33

Microsoft XNA is a set of tools with a managed runtime environment provided by Microsoft that facilitates computer game development and management. XNA attempts to free game developers from writing "repetitive boilerplate code" and to bring different aspects of game production into a single system.

It is designed as a framework - in fact, XNA is the Microsoft XNA Framework - so technically it's not an engine by name.

There is no 'engine' - if you notice, you derive your main class from XNA.Framework.Game and have to override the draw and update functions yourself. There is no central rendering system, or input system, or audio system ready out of the box. There is SpriteBatch and the vertex classes, there is KeyboardState, and there are some audio classes..but they are only abstractions over the low level drawing code.

EDIT: For the sake of usefulness, why does something matter if it's labelled as an engine, framework, library, or toolset?

To clear things up somewhat: I am developing an engine in XNA. Obviously I can't do that in something like Unreal, like Jonathan has mentioned. However, there are a few things I feel are important that XNA just doesn't have:

Plug-n-play: I want to be able to make some kind of template - have this HP, this mesh, this animation and BOOM! I have an NPC in my game.

Hidden low level - XNA does this already, but I don't want to fiddle around with GameServiceProviders. I just want to shove stuff together.

Game separated from engine - There may be a 'game' class, but I want to separate my logic and my code from the base system. I don't want if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS) mixed with updating the buffers on my graphics renderer.

• I accept taht you have to override you draw and update settings but that doesn't mean it has no rendering engine, the point is it makes every thing ready for you to draw, and those are not only abstract draw calls just looking at it's sample it has nothing less than a 2d GameEngine (i didn't check 3d stuff realy), and as far as i can remember it has input controllers , and I mean is it just framework because microsoft named it so or does it have some logical reason? – Ali1S232 May 25 '11 at 10:56
• @Gajet: Consider for a moment that there is discussion on the net of how to create an engine in XNA but not for Unreal Engine or CryEngine. I think a common characteristic of a game engine is that you can just plug in the bits and something will go (TV Tropes asserts engines can be fairly data-driven in this regard). By contrast, XNA leaves you to do basically every ounce of the work yourself - you just don't have to create the middleware to interface with devices. – doppelgreener May 25 '11 at 11:10
• Furthermore I don't believe I've found a clear definition of a game engine yet, but what I do know is that there are game engines, and XNA simply does not do any of the things they do (except provide middleware, and some very simple low-level components). – doppelgreener May 25 '11 at 11:12
• @Jonathan Hobbs: now I can see what you are talking about but again i've tried GameBryo(NetImmerse) and that's considered a gameengine but until lightspeed it had less features than XNA itself, it was just a mere middlewere, so i think we can change the question title to what makes an sdk to be called a GameEngine? – Ali1S232 May 25 '11 at 11:16
• But you could develop an engine using an existing engine as a framework if you really wanted to be pedantic. Lots of people took quake 3 tech then made an engine that was more usable. Then again you can also make a game without an "engine" at all if you really wanted to. It is more correct to call xna a framework, but I don't know about making the distinction from an "engine", as it isn't as strongly defined as "framework". – Tetrad May 25 '11 at 14:06

A framework provides a minimal architecture built for a specific type of application. It minimises assumptions about implementation details beyond the stated goals of the architecture. While a cross-platform game development framework might have the goal of providing "what is common to (nearly) all computer games, irrespective of platform", and might implement only such abstract factors as timing and entity management, the XNA Framework (implicitly) has a goal of providing "what is common to (nearly) all computer games written for execution on the XNA CLR". Given that this focus is so narrow, they have been able to included engine features with impunity. They bundle it all under the heading of "Framework", since this indicates a certain freedom of implementation which you as the game developer will enjoy.

Roughly speaking, a framework should be as unrestrictive as possible while still providing useful foundations. An engine, on the other hand, is typically more focused toward specific features, and in using it, you accept that there are certain limitations which you will be tied to.

I’ve never used a ‘game engine’ but my understanding of this is more as a pre-defined set of tools bundled with a pre-defined skeletal game-structure for the development of a specific type of game. And surely that structure for the development of a specific type of game is the main defining factor in a games engine, it certainly seem to be what the aforementioned Wikipedia article is alluring to. To me the XNA framework is more akin to a third-party library set, like AJAX, in that it adds pre-built routines to the existing bare-boned programing language. It does not put any restrictions or guidelines on what you, as the programmer, can and cannot do with these library routines. In my mind that is not akin to an engine in any way. Then I come from a business software/web centric background, so maybe the view if this is slightly askew for a dyed-in-the-wool games dev.

I’ve built the framework for a game idea using XNA and it definitely feels like I’m using just another library over C#. I’m going to use the processes I’ve hacked out in the test program to produce two or three games for windows and possibly Xbox.

So, as I said, In my mind this is far away from what I understood to be a ‘Games Engine’ so when I came across this post I had no idea why someone would make that comparison. Am I wrong?