Warum wird XNA nicht als Spiele-Engine angesehen?

13

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?

Ali1S232
quelle
19
@Miro Das macht keinen Sinn.
Die kommunistische Ente
2
Was ist der Sinn? Wenn es die Arbeit erledigt, die Sie benötigen, verwenden Sie es. Wenn nicht, dann nicht. Wen interessiert es, wie die Leute es nennen? Es ist sowieso nur ein Etikett, das hauptsächlich von Marketing-Affen verwendet wird;)
Maik Semder
Es ist nur, weil der Kommentar Die kommunistische Ente antwortete auf meinen Kommentar in dieser Frage
Ali1S232
4
@Maik Semder Es ist überhaupt kein Label. Eine Engine und ein Framework sind zwei verschiedene und separate Dinge, und XNA ist das letztere. Es ist nützlich zu unterscheiden und zu verstehen, dass XNA keine Engine ist, da Sie sonst möglicherweise sehr verwirrt sind, wenn Sie feststellen, dass Sie tatsächlich eine Engine in XNA erstellen müssen, oder dass es keine Plug-in-some-bits-and- Spielfähigkeiten wie die tatsächlichen Motoren.
Doppelgreener
3
@Maik Dies ist ein Teil unserer Arbeitsweise. Ich sage Fahrer , Sie wissen, was es ist und was nicht, was es tut und wie Sie es verwenden können. Ähnliches sollte passieren, wenn ich Framework sage - aber nur, wenn Sie erkennen, was ein Framework ist und was nicht (eine Engine). In Anbetracht dieser praktischen Implikationen
lehne

Antworten:

28

Microsoft XNA ist eine Reihe von Tools mit einer von Microsoft bereitgestellten verwalteten Laufzeitumgebung, die die Entwicklung und Verwaltung von Computerspielen erleichtert. XNA versucht, Spieleentwickler vom Schreiben von "Repetitive Boilerplate Code" zu befreien und verschiedene Aspekte der Spieleproduktion in einem einzigen System zu vereinen.

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.

Die kommunistische Ente
quelle
Ich bin damit einverstanden, dass Sie die Einstellungen zum Zeichnen und Aktualisieren überschreiben müssen, aber das bedeutet nicht, dass es keine Rendering-Engine gibt. Der springende Punkt ist, dass alles für Sie bereit zum Zeichnen ist, und dies sind nicht nur abstrakte Zeichnungsaufrufe, die nur das Beispiel betrachten es hat nichts weniger als eine 2d GameEngine (ich habe 3d-sachen nicht wirklich überprüft), und soweit ich mich erinnern kann, hat es Eingabecontroller, und ich meine, ist es nur ein Framework, weil Microsoft es so benannt hat oder hat es einen logischen Grund ?
Ali1S232
1
@Gajet: Bedenken Sie für einen Moment, dass es im Netz Diskussionen darüber gibt, wie man eine Engine in XNA erstellt, aber nicht für Unreal Engine oder CryEngine. Ich denke, ein gemeinsames Merkmal einer Game-Engine ist, dass man einfach die Bits einstecken kann und etwas geht ( TV Tropes behauptet, dass Engines in dieser Hinsicht ziemlich datengesteuert sein können ). Im Gegensatz dazu können Sie mit XNA praktisch jede Unze der Arbeit selbst erledigen. Sie müssen lediglich keine Middleware für die Schnittstelle zu Geräten erstellen.
doppelgreener
1
Außerdem glaube ich noch nicht, dass ich eine klare Definition für eine Spiel-Engine gefunden habe, aber ich weiß, dass es Spiel-Engines gibt und XNA einfach keine der Dinge tut, die sie tun (außer Middleware und einige sehr einfache Low-Level-Komponenten).
Doppelgreener
@Jonathan Hobbs: Jetzt kann ich sehen, wovon du sprichst, aber ich habe GameBryo (NetImmerse) ausprobiert und das ist eine Spielmaschine, aber bis zur Lichtgeschwindigkeit hatte sie weniger Funktionen als XNA selbst, es war nur eine Mittlere Sache, also denke ich, wir kann den what makes an sdk to be called a GameEngine?
Fragentitel
1
Sie könnten jedoch eine Engine entwickeln, die eine vorhandene Engine als Framework verwendet, wenn Sie wirklich pedantisch sein möchten. Viele Leute nahmen Quake 3 Tech und machten dann einen Motor, der benutzerfreundlicher war. Andererseits können Sie auch ein Spiel ohne "Engine" machen, wenn Sie es wirklich wollten. Es ist richtiger, xna als Framework zu bezeichnen, aber ich weiß nicht, wie man eine "Engine" unterscheidet, da sie nicht so stark definiert ist wie "Framework".
Tetrad
5

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.

Ingenieur
quelle
2

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?

user29569
quelle