2011-01-05 13 views
5

Recentemente ho imparato l'idea di base (nella più approssimativa delle definizioni) della programmazione di entità e vorrei saperne di più. Il concetto che ho ottenuto era praticamente un'astrazione massiccia. È giusto?Tutorial per la programmazione delle entità?

+0

TekPub ......... –

+0

Sentitevi liberi di modificare di nuovo, ma ho rimosso C++ dal momento che la domanda non lo menziona (e c'è un limite di 5 tag), e ha aggiunto lo sviluppo del gioco, dal hai citato Tony Hawk in uno dei tuoi commenti –

+0

Questo è accettabile, grazie per la considerazione. Per quanto riguarda l'aspetto di Tony Hawk, ero più interessato a qualcosa che usavo per nuove Entità. In realtà è stato un articolo che ho letto da uno dei principali sviluppatori che mi ha reso così curioso. – AedonEtLIRA

risposta

2

Entity è semplicemente un'astrazione di base per oggetti su un grafico di scena/"il tuo mondo". Niente di più.

Ogni motore di gioco definisce e utilizza le entità in modi diversi. Alcuni motori di gioco possono associare le coordinate del mondo o proprietà comuni alle entità, altre no. Dal momento che varia da gioco a gioco, non c'è molto altro da dire al riguardo.

Se non li hai letti, potrebbe essere utile leggere di più sulla programmazione delle astrazioni. Il polimorfismo, le classi base astratte, il Principio di sostituzione di Liskov (LSP) o il codice completo del libro possono essere buone cose da guardare. Oppure potrebbe essere una buona idea scavare in profondità e imparare molto di più su un motore di gioco specifico, e utilizzare un SDK per sviluppare qualcosa per esso (UDK sembra piuttosto interessante, per esempio).

+0

Grazie per quello che stavo cercando, dovrò dare un'occhiata a quei libri. Quindi questo è veramente quello che è, solo un enorme mucchio di oggetti "fisici" astratti? Con fisico intendo qualsiasi cosa occupi spazio in un mondo. E 'davvero solo un modo stravagante di astrazione di classe? ad esempio: la classe c estende l'entità. c ha tutto il necessario ma lo rappresenti con un'entità che detiene un puntatore id alla classe c? – AedonEtLIRA

+1

@AedonEtLIRA: Sì, solo un'astrazione. Alcuni giochi hanno anche entità non fisiche. Come ogni astrazione, più sono le caratteristiche dell'astrazione di base, più pezzi del motore di gioco saranno in grado di usarlo. Troppe funzioni, tuttavia, e potrebbero impedire ad alcuni pezzi di usarlo. Ad esempio, se aggiungi le coordinate del mondo, non puoi avere entità non fisiche (che potrebbero essere utilizzate per trigger AI, stato globale, script di eventi, ecc.). Ma forse le entità non fisiche non hanno senso, o l'architettura del gioco ha un modo migliore per gestirle. Tutte le cose specifiche del gioco. –

+1

@AedonEtLIRA: Riesco a vedere se riesco a trovare un tutorial per te, ma fondamentalmente è solo una grande lista (o in C++, forse std :: vector ), che devi eseguire il loop e chiamare i metodi virtuali, o ottenere/impostare membri su. Ci sarebbe probabilmente un metodo 'Update', per esempio, che gli permetterebbe di fare fisica, o di eseguire la logica di gioco. Quelle entità potrebbero avere un sacco di altre classi collegate, o esistere in più di una lista, per diverse parti del tuo motore. –

3

Da quello che posso dire, non sembra essere un metodo molto noto. L'unica informazione che ho trovato sembra confermare ciò che pensavo: programmare "Entity" significa avere un numero di oggetti che possono essere usati in modo intercambiabile in una struttura di dati (come il grafico di una scena di gioco). Inoltre, l'entità dovrebbe essere definita nei dati, il che significa che un'entità potrebbe essere costruita da, ad esempio, un file XML, o ugualmente importante, scritto in un file XML e ricaricato da esso.

Per quanto mi ricordo, Quake ha usato il termine "entità" nel giorno per riferirsi a oggetti non statici (ad esempio, tutto tranne l'albero BSP che costituiva il terreno). Cose come luci, porte, ecc.

Problemi correlati