Perché XNA non è considerato un motore di gioco?


13

Mi chiedo solo cosa manca XNA, da considerare come motore di gioco. Fa tutto ciò che un motore di gioco dovrebbe fare (tranne la parte fisica); ha anche il supporto per ogni aspetto definito nell'articolo di Wikipedia sui motori di gioco .

Perché XNA non è considerato un motore di gioco?


19
@Miro Non ha senso.
L'anatra comunista

2
Qual e il punto? Se fa il lavoro che ti serve, usalo. Altrimenti, non farlo. A chi importa come lo chiamano le persone? È comunque solo un'etichetta, usata principalmente dalle scimmie di marketing;)
Maik Semder,

è solo perché il commento L'anatra comunista ha risposto al mio commento in questa domanda
Ali1S232,

4
@Maik Semder Non è affatto un'etichetta. Un motore e un framework sono due cose distinte e separate, e XNA è il secondo. È utile distinguere e comprendere che XNA non è un motore, altrimenti potresti essere molto confuso quando scopri che in realtà potresti aver bisogno di creare un motore in XNA o che non offre alcun plug-in-some-bit-and- capacità di gioco come fanno i motori reali.
doppelgreener,

3
@Maik Questo fa parte del modo in cui elaboriamo ciò che fa. Dico autista , sai cos'è e cosa non lo è, cosa fa e come puoi usarlo. Qualcosa di simile dovrebbe accadere quando dico framework - ma solo se riconosci cos'è un framework e cosa non lo è (un motore). Considerando queste implicazioni pratiche, mi oppongo principalmente al fatto che dici "A chi importa come la gente lo chiama? È comunque solo un'etichetta"
doppelgreener,

Risposte:


28

Microsoft XNA è un set di strumenti con un ambiente di runtime gestito fornito da Microsoft che facilita lo sviluppo e la gestione dei giochi per computer. XNA tenta di liberare gli sviluppatori di giochi dalla scrittura di "codice ripetitivo" e di portare diversi aspetti della produzione di giochi in un unico sistema.

È progettato come un framework - infatti, XNA è il Microsoft XNA Framework - quindi tecnicamente non è un motore per nome.

Non esiste un "motore": se noti, trai la tua classe principale da XNA.Framework.Game e devi sovrascrivere tu stesso le funzioni di disegno e aggiornamento. Non esiste un sistema di rendering centrale, né un sistema di input o un sistema audio pronto all'uso. C'è SpriteBatch e le classi di vertici, c'è KeyboardState e ci sono alcune classi audio ... ma sono solo astrazioni sul codice di disegno di basso livello.

EDIT: Per motivi di utilità, perché qualcosa importa se è etichettato come motore, framework, libreria o set di strumenti?

Per chiarire un po 'le cose: sto sviluppando un motore in XNA. Ovviamente non posso farlo in qualcosa come Unreal, come ha menzionato Jonathan. Tuttavia, ci sono alcune cose che ritengo importanti che XNA non ha:

Plug-n-play: voglio essere in grado di creare una sorta di modello: avere questo HP, questa mesh, questa animazione e BOOM! Ho un NPC nel mio gioco.

Livello basso nascosto: XNA lo fa già, ma non voglio giocherellare con GameServiceProviders. Voglio solo mettere le cose insieme.

Gioco separato dal motore - Potrebbe esserci una classe "gioco", ma voglio separare la mia logica e il mio codice dal sistema di base. Non voglio if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)mescolare con l'aggiornamento dei buffer sul mio renderer grafico.


Accetto che devi scavalcare le tue impostazioni di disegno e aggiornamento, ma ciò non significa che non abbia un motore di rendering, il punto è che rende tutto pronto per te da disegnare, e quelle non sono solo chiamate di disegno astratte solo guardando il suo campione non ha niente di meno che un GameEngine 2d (non ho controllato veramente le cose 3d), e per quanto posso ricordare ha dei controller di input, e intendo dire che è solo framework perché microsoft lo ha chiamato così o ha qualche ragione logica ?
Ali1S232,

1
@Gajet: considera per un momento che in rete si discute su come creare un motore in XNA ma non per Unreal Engine o CryEngine. Penso che una caratteristica comune di un motore di gioco sia che puoi semplicemente collegare i bit e qualcosa andrà ( TV Tropes afferma che i motori possono essere abbastanza guidati dai dati in questo senso ). Al contrario, XNA ti lascia fare praticamente ogni oncia del lavoro da solo - non devi creare il middleware per interfacciarsi con i dispositivi.
doppelgreener,

1
Inoltre, non credo di aver ancora trovato una chiara definizione di motore di gioco, ma quello che so è che ci sono motori di gioco e XNA semplicemente non fa nessuna delle cose che fanno (tranne fornire middleware, e alcuni componenti di basso livello molto semplici).
doppelgreener,

@Jonathan Hobbs: ora riesco a vedere di cosa stai parlando, ma di nuovo ho provato GameBryo (NetImmerse) e questo è considerato un motore di gioco ma fino a quando la velocità della luce non ha avuto meno funzionalità di XNA stesso, era solo un semplice punto intermedio, quindi penso che abbiamo può cambiare il titolo della domanda inwhat makes an sdk to be called a GameEngine?
Ali1S232,

1
Ma si potrebbe sviluppare un motore utilizzando un motore esistente come un quadro, se si voleva davvero essere pedanti. Molte persone hanno preso la tecnologia di Quake 3 e hanno creato un motore più utilizzabile. Poi di nuovo puoi anche fare un gioco senza un "motore" se lo desideri davvero. È più corretto chiamare xna un framework, ma non so fare la distinzione da un "motore", in quanto non è fortemente definito come "framework".
Tetrad

5

Un framework fornisce un'architettura minimale creata per un tipo specifico di applicazione. Riduce al minimo le ipotesi sui dettagli di implementazione oltre gli obiettivi dichiarati dell'architettura. Mentre un framework di sviluppo di giochi multipiattaforma potrebbe avere l'obiettivo di fornire "ciò che è comune a (quasi) tutti i giochi per computer, indipendentemente dalla piattaforma", e potrebbe implementare solo fattori astratti come il timing e la gestione delle entità, l'XNA Framework (implicitamente) ha l'obiettivo di fornire "ciò che è comune a (quasi) tutti i giochi per computer scritti per l'esecuzione su XNA CLR". Dato che questo focus è così ristretto, sono stati in grado di includere impunemente le caratteristiche del motore. Raggruppano tutto sotto l'intestazione di "Framework", poiché ciò indica una certa libertà di implementazione di cui godrai come sviluppatore del gioco.

In parole povere, un quadro dovrebbe essere il più restrittivo possibile pur fornendo basi utili. Un motore, d'altra parte, è in genere più focalizzato su funzionalità specifiche e, nell'usarlo, accetti che ci siano alcune limitazioni alle quali sarai legato.


2

Non ho mai usato un "motore di gioco", ma la mia comprensione di questo è più come un insieme predefinito di strumenti in bundle con una struttura di gioco scheletrica predefinita per lo sviluppo di un tipo specifico di gioco. E sicuramente quella struttura per lo sviluppo di un tipo specifico di gioco è il principale fattore determinante in un motore di gioco, sembra certamente essere ciò che il citato articolo di Wikipedia sta seducendo. Per me il framework XNA è più simile a un set di librerie di terze parti, come AJAX, in quanto aggiunge routine predefinite al linguaggio di programmazione esistente disossato. Non pone restrizioni o linee guida su ciò che tu, come programmatore, puoi e non puoi fare con queste routine di libreria. Nella mia mente non è in alcun modo simile a un motore. Quindi vengo da un software aziendale / web centrico,

Ho creato il framework per un'idea di gioco usando XNA e mi sento sicuramente come se stessi usando solo un'altra libreria su C #. Userò i processi che ho hackerato nel programma di test per produrre due o tre giochi per Windows e possibilmente Xbox.

Quindi, come ho detto, nella mia mente questo è molto lontano da quello che ho capito essere un "motore di gioco", quindi quando mi sono imbattuto in questo post non avevo idea del perché qualcuno avrebbe fatto quel confronto. Ho sbagliato?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.