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?
Answer
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.
No comments:
Post a Comment