Sistemi di oggetti di gioco basati su componenti in pratica [chiuso]


43

Vediamo la storia del successo. Quali giochi popolari (e motori di gioco) sono stati creati utilizzando il sistema di oggetti di gioco basato su componenti ? Ogni risposta dovrebbe contenere:

  1. Titolo del gioco (uno per risposta)
  2. Autore / Azienda
  3. Anno
  4. Tempo di sviluppo (opzionale)
  5. Link a postmortem (opzionale)
  6. Collegamenti a documenti / codice sorgente (facoltativo)

7
-1, praticamente ogni gioco scritto nell'ultimo decennio utilizzerà un sistema componente da qualche parte, e non un sistema componente da qualche altra parte che avrebbe potuto avere.

5
Tui hai torto. Molti motori utilizzano ancora gerarchie statiche. Ed è interessante raccogliere e leggere documenti / postmortems / frammenti di codice di giochi e motori che utilizzano davvero i sistemi componenti.
piedi il

4
Non ho detto che i motori non usano gerarchie statiche. Ho detto che sarebbe difficile trovare un motore che utilizza solo gerarchie statiche, proprio come si farebbe per trovarne uno che utilizza solo componenti.

2
Tui hai torto. Le entità di gioco (cuore della logica di gioco), gli effetti visivi, il motore di gioco e l'infrastruttura dell'editor sono basati su componenti o no.
piedi il

2
@topright: indipendentemente dal fatto che Joe abbia ragione o torto, iniziare i tuoi commenti due volte di seguito con un semplice e personale 'Ti sbagli' non è molto delicato, non lo pensi anche tu? Scommetto che i tuoi commenti non perderebbero nessuna informazione rilevante senza quelle tre piccole parole, ma ometterle contribuirebbe molto di più a una conversazione gentile ed educata. Per favore, considera questo :)
Michael Klement

Risposte:


19

Dungeon Siege di Gas Powered Games

Scott Bilas ha rilasciato molte informazioni su Dungeon Siege che presentava, tra le altre cose, sistemi basati su componenti.

Dungeon Siege è stato rilasciato nel 2002.


Caspita, ottimo collegamento. Il suo intervento sui sistemi componenti mi ha davvero aiutato a comprendere meglio l'implementazione dei sistemi basati su componenti. Discorsi chiari su come è stato fatto il mondo continuo anche in DS. Mi chiedo se tecniche simili siano ancora in uso in altri grandi giochi del mondo. Penso che la maggior parte tende ad usare qualcosa di più simile a regioni o blocchi (Minecraft, qualunque cosa di Bethesda).
CodexArcanum,

19

Resistance 1-2 (forse 3) (2006-2008) di Insomniac Games

Terrance Cohen elenca questi giochi nella sua conferenza A Dynamic Component Architecture for High Performance Gameplay di GDC Canada 2010.

Non sono sicuro che sia stato applicato ai recenti giochi di Ratchet & Clank.


Sai se l'audio per quella presentazione è dietro il paywall di GDC Vault? Le diapositive da sole sono piuttosto interessanti, ma ci sono alcune domande che sospetto abbiano una risposta nella presentazione.

Non sapevo di questa presentazione, grazie mille!
topright

13

Unity3D utilizza un sistema basato su componenti per impostazione predefinita. È eccellente per la creazione di entità di gioco da un file di testo e dall'iniezione di dipendenze.

function createEnemy() {

   // extract AI type for enemy
   // definition is a custom structure holding parameters to create the enemy
   var aitypename = definition.ai;

   // AIType can be an interface or abstract class
   // you can create a component from a string or from a type
   var ai : AIType = this.gameObject.AddComponent(aitypename);
   ai.setup(definition.ai_settings);

   // set rule for enemy when it is destroyed
   this.gameObject.AddComponent(definition.when_destoryed); 


}

Quei componenti potrebbero assomigliare a questo

class AI_Scout extends AIType
{
  // called per update-frame on the game-object with this script
  public function Update() {
    // run Scout AI here
   }
}


class Spawn_Ammo_On_Destroyed extends When_Destroyed
{
   // automatically called by the engine when the game object this script is attached to is
   // destroyed
   public function OnDestroyed() {
    // spawn ammo
    }
}


8

Tony Hawk Pro Skater 3
Sviluppatore: Neversoft
Anno: 2001
Tempo: circa due anni
Post Mortem: Evolve Your Hierarchy (probabilmente l'articolo basato sui componenti più collegato)


1

Per quanto ne so, il miglior progetto che ho visto è Burger Engine. jst scarica il codice e controlla quanto sono stati implementati. Il tutto è guidato dai dati da XML e hanno usato molto bene l'architettura basata su entità.

http://code.google.com/p/burger-engine/source/browse/


2
-1, quel codice sembra davvero dilettantesco, dall'ortografia errata di "Abstract" all'enumerazione del tipo di componente statico, un numero enorme di funzioni virtuali, l'inclusione di 28 byte di dati di posizione su ciascun componente ... Se questo è il migliore che hai visto, guarda altrove.

triste che non ti sia piaciuto. L'intero codice è guidato dai dati e non ho trovato alcuna implementazione open source che possa svolgere questo compito con tanta facilità.Se hai qualche link a buon codice, per favore pubblica i link. a errori di ortografia, funzioni virtuali: è una buona risorsa per le persone che non conoscono l'architettura basata su componenti. Serve allo scopo di fornire preziose informazioni sul funzionamento pratico della progettazione basata sui dati.
Ayyappa,

2
Non so del codice, ma evidenziare errori di ortografia è un argomento non valido, considerando che ci sono anche molti programmatori provenienti da paesi non di lingua inglese.
Rajavanya Subramaniyan,
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.