Che cos'è la progettazione basata sui dati? [chiuso]


11

Ho letto molti articoli sulla progettazione basata sui dati per i giochi. Sembra scendere a:

  • Nessuna codifica rigida
  • Nessun codice specifico per il gioco nel motore
  • Scripting per AI, filmati, ecc.
  • Codice generalizzante per riusabilità
  • Progettazione dei componenti
  • modularità
  • Accoppiamento basso
  • Editor (per dati, mappe, script)
  • Recupero di dati esterni
  • Costanti mantenute in file di testo ( .inio in altro modo)
  • Esporre i dati tramite editor per lo scripting e la manipolazione da parte dei progettisti

Ora, la mia domanda è: questa comprensione è corretta?


3
Benvenuti nel sito. Hai due domande qui (in genere dovresti fare solo una domanda per post), e la seconda domanda su "come iniziare" è considerata fuori tema, quindi l'ho modificata e ho ridotto la domanda. Se vuoi avere discussioni su come iniziare con qualcosa, considera di visitare la chat di sviluppo del gioco .

@JoshPetrie Ma quello è stato il più importante in quanto sono stato in molti siti ora e non ho ricevuto alcuna risposta. Neanche un colpo in una direzione. Ci devono essere ALCUNE persone che hanno avuto un po 'di intuizione su questi argomenti.
OmniOwl,


1
Forse è il più importante per te, ma è fuori tema qui (vedi le domande frequenti ). Avrei anche potuto chiudere la domanda. Visita la chat di sviluppo del gioco o un vero forum di discussione come GDNet se vuoi porre domande su come iniziare.

1
@Vipar Entra in chat se vuoi aiuto con la domanda fuori tema. Non garantendoti che riceverai aiuto, ma molte persone intelligenti restano in giro.
ClassicThunder,

Risposte:


10

Direi che non è corretto. Credo che l'idea più importante nella progettazione guidata dai dati sia quella di separare i tuoi dati da ciò che modifica (o aggiorna) i dati .

Quindi, passando da una gerarchia profonda OO standard come questa:

class MyCreature{
     vector position;
     void update(){ position += 1; }
}

a uno stato e un sistema separati

class CreatureState{
    vector postion;
}

class MovementSystem{
    list<CreatureState> states;
    void update() {
        for each CreatureState state in states {
            state.position += 1;
        }
}

Uno dei paradigmi DDD più influenti in questo momento sono Entity Systems. Alcune belle risorse da cercare sono:

http://gamedevrubberduck.wordpress.com/2012/12/26/a-hybrid-entity-system-component-architecture/

http://entity-systems.wikidot.com/

Naturalmente, come per tutti i paradigmi / idee, non esiste una definizione esatta e non tutti comprendono la stessa idea quando si parla di DDD, ma questo è ciò che credo sia la cosa più importante.


Sì, ho dimenticato di menzionare la parte di separazione. E questo è esattamente il tipo di cosa che mi piacerebbe vedere. Posso solo leggere tanta teoria. Ho bisogno di vedere alcuni esempi concreti. Grazie. Dai anche un'occhiata agli articoli!
OmniOwl,

Oh aspetta finalmente trovato la migliore spiegazione che ho letto qualche tempo fa. Si è scoperto che si trattava di una risposta a una domanda che ho posto qui gamedev.stackexchange.com/questions/48971/… : D
Roy T.

4

Penso che tu stia complicando troppo la definizione. Certamente, molti dei principi contenuti nel tuo elenco puntato di punti sono buoni da una prospettiva di ingegneria del software, ma non sono necessariamente tutti parte della definizione di "data driven". Molti di essi hanno alcune sovrapposizioni o sono implementati al meglio utilizzando un approccio basato sui dati, ma non costituiscono l'atto di guidare i dati su qualcosa.

La definizione effettiva di sviluppo di software basato sui dati è generalmente abbastanza semplice: un programma esegue azioni principalmente basate su alcune informazioni esterne (un dato di livello, dati di script, eccetera) invece di avere una serie di passaggi predefiniti e fissi all'interno del codice stesso che determina il flusso di controllo.


Molto probabilmente hai ragione sul fatto che io complichi troppo le cose. È qualcosa che tendo a fare. Ma non riesco a capire come iniziare a scrivere questo codice.
OmniOwl,

1
Ho pubblicato una risposta alla tua domanda su GDNet . Il punto cruciale del problema è: smetti di provare così tanto, scegli un singolo aspetto semplice di ciò che alla fine vuoi e costruisci un piccolo gioco con esso.

Ho visto e ho anche risposto. Grazie per aver dedicato del tempo a parlarmi di questo.
OmniOwl,
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.