Ich frage mich nur, was XNA fehlt, um als Spiel-Engine angesehen zu werden. Es macht alle Dinge, die eine Game Engine tun sollte (außer dem Physik-Teil); Es bietet auch Unterstützung für alle Aspekte, die im Wikipedia-Artikel zu Game Engines definiert sind .
Warum wird XNA nicht als Spiele-Engine angesehen?
Antworten:
Es ist als Framework konzipiert - tatsächlich ist XNA das Microsoft XNA Framework - und technisch gesehen ist es keine Engine mit Namen.
Es gibt keine 'Engine' - wenn Sie bemerken, leiten Sie Ihre Hauptklasse von XNA.Framework.Game ab und müssen die Draw- und Update-Funktionen selbst überschreiben. Es gibt kein sofort einsatzbereites zentrales Rendering-System, Eingabesystem oder Audiosystem. Es gibt SpriteBatch und die Vertex-Klassen, es gibt KeyboardState und es gibt einige Audio-Klassen. Aber es handelt sich nur um Abstraktionen über den einfachen Zeichencode.
EDIT: Warum ist etwas aus Gründen der Nützlichkeit wichtig, wenn es als Engine, Framework, Bibliothek oder Toolset gekennzeichnet ist?
Um es etwas klarer zu machen: Ich entwickle eine Engine in XNA. Offensichtlich kann ich das in so etwas wie Unreal nicht tun, wie Jonathan es erwähnt hat. Es gibt jedoch ein paar Dinge, die für mich wichtig sind und die XNA einfach nicht hat:
Plug-n-Play: Ich möchte in der Lage sein, eine Art Vorlage zu erstellen - habe diese HP, dieses Mesh, diese Animation und BOOM! Ich habe einen NPC in meinem Spiel.
Hidden low level - XNA macht das schon, aber ich möchte nicht mit GameServiceProviders herumspielen. Ich will nur Sachen zusammenschieben.
Spiel von der Engine getrennt - Es gibt möglicherweise eine 'Spiel'-Klasse, aber ich möchte meine Logik und meinen Code vom Basissystem trennen. Ich möchte nicht
if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)
mit dem Aktualisieren der Puffer in meinem Grafik-Renderer vermischt werden.quelle
what makes an sdk to be called a GameEngine?
Ein Framework bietet eine minimale Architektur, die für einen bestimmten Anwendungstyp erstellt wurde. Es minimiert Annahmen über Implementierungsdetails, die über die angegebenen Ziele der Architektur hinausgehen. Während ein plattformübergreifendes Spieleentwicklungs-Framework das Ziel haben könnte, "was (fast) allen Computerspielen gemeinsam ist, unabhängig von der Plattform" bereitzustellen und möglicherweise nur solche abstrakten Faktoren wie Timing und Entity-Management zu implementieren, könnte das XNA-Framework (implizit) hat das Ziel, "das bereitzustellen, was (fast) allen Computerspielen gemeinsam ist, die für die Ausführung auf der XNA CLR geschrieben wurden". Da dieser Fokus so eng ist, konnten sie ungestraft Motormerkmale einbeziehen. Sie bündeln alles unter der Überschrift "Framework", da dies auf eine gewisse Implementierungsfreiheit hinweist, die Sie als Spieleentwickler genießen werden.
Grob gesagt sollte ein Rahmen so uneingeschränkt wie möglich sein und dennoch nützliche Grundlagen bieten. Auf der anderen Seite ist eine Engine in der Regel eher auf bestimmte Funktionen ausgerichtet, und bei der Verwendung akzeptieren Sie, dass es bestimmte Einschränkungen gibt, an die Sie gebunden sind.
quelle
Ich habe noch nie eine "Spiel-Engine" verwendet, aber ich verstehe dies eher als vordefinierten Satz von Tools, die mit einer vordefinierten Skelett-Spielstruktur für die Entwicklung eines bestimmten Spieltyps gebündelt sind. Und sicherlich ist diese Struktur für die Entwicklung eines bestimmten Spieltyps der wichtigste bestimmende Faktor in einer Spiele-Engine, und es scheint sicherlich das zu sein, was der oben erwähnte Wikipedia-Artikel verlockend macht. Für mich ähnelt das XNA-Framework eher einem Bibliotheks-Set eines Drittanbieters wie AJAX, da es der vorhandenen Programmiersprache vorgefertigte Routinen hinzufügt. Es enthält keine Einschränkungen oder Richtlinien für das, was Sie als Programmierer mit diesen Bibliotheksroutinen tun können und was nicht. In meinen Augen ist das in keiner Weise mit einem Motor vergleichbar. Dann komme ich aus einem Business-Software / Web-zentrierten Hintergrund,
Ich habe das Framework für eine Spielidee mit XNA erstellt und es fühlt sich definitiv so an, als würde ich nur eine andere Bibliothek über C # verwenden. Ich werde die Prozesse, die ich im Testprogramm gehackt habe, verwenden, um zwei oder drei Spiele für Windows und möglicherweise für Xbox zu erstellen.
Wie gesagt, in meinen Augen ist dies weit entfernt von dem, was ich als "Games Engine" verstand. Als ich auf diesen Beitrag stieß, hatte ich keine Ahnung, warum jemand diesen Vergleich anstellen würde. Liege ich falsch?
quelle