Was ist datengesteuertes Design? [geschlossen]

11

Ich habe viele Artikel über datengesteuertes Design für Spiele gelesen. Es scheint zu kommen auf:

  • Keine harte Codierung
  • Kein spielspezifischer Code in der Engine
  • Skripterstellung für KI, Zwischensequenzen usw.
  • Verallgemeinern des Codes für die Wiederverwendbarkeit
  • Komponentendesign
  • Modularität
  • Niedrige Kopplung
  • Editoren (für Daten, Karten, Skripte)
  • Externer Datenabruf
  • Konstanten in Textdateien ( .inioder auf andere Weise)
  • Stellen Sie Daten über Editoren für die Skripterstellung und Bearbeitung durch Designer bereit

Meine Frage ist nun, ist dieses Verständnis richtig?

OmniOwl
quelle
3
Willkommen auf der Website. Sie haben hier zwei Fragen (im Allgemeinen sollten Sie nur eine Frage pro Beitrag stellen), und die zweite Frage zum Thema "Erste Schritte" wird als nicht zum Thema gehörend betrachtet. Daher habe ich sie bearbeitet und die Frage reduziert. Wenn Sie Diskussionen darüber führen möchten, wie Sie mit etwas beginnen können, besuchen Sie den Spieleentwicklungs-Chat .
@JoshPetrie Aber das war das Wichtigste, da ich jetzt auf vielen Websites war und überhaupt keine Antwort bekommen habe. Nicht einmal ein Stoß in eine Richtung. Es muss einige Leute geben, die ein bisschen Einblick in diese Themen haben.
OmniOwl
1
Vielleicht ist es das Wichtigste für Sie, aber es ist hier nicht zum Thema (siehe FAQ ). Ich hätte die Frage auch einfach schließen können. Besuchen Sie den Game Development Chat oder ein aktuelles Diskussionsforum wie GDNet, wenn Sie Fragen zu den ersten Schritten stellen möchten.
1
@Vipar Kommen Sie in den Chat, wenn Sie Hilfe bei der Off-Topic-Frage benötigen. Ich garantiere nicht, dass Sie Hilfe bekommen, aber viele kluge Leute hängen dort herum.
ClassicThunder

Antworten:

10

Ich würde sagen, das ist nicht richtig. Ich glaube, die wichtigste Idee beim datengesteuerten Design besteht darin , Ihre Daten von den Daten zu trennen (oder zu aktualisieren) .

Gehen Sie also von einer tiefen Standard-OO-Hierarchie wie dieser aus:

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

zu einem separaten Zustand und System

class CreatureState{
    vector postion;
}

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

Eines der derzeit einflussreichsten DDD-Paradigmen sind Entity Systems. Einige nette Ressourcen zum Nachschlagen sind:

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

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

Natürlich gibt es wie bei allen Paradigmen / Ideen keine genaue Definition und nicht jeder versteht die gleiche Idee, wenn er über DDD spricht, aber das ist meiner Meinung nach das Wichtigste.

Roy T.
quelle
Ja, ich habe vergessen, den Trennungsteil zu erwähnen. Und genau das würde ich gerne sehen. Ich kann nur so viel Theorie lesen. Ich muss einige konkrete Beispiele sehen. Vielen Dank. Werde auch einen Blick auf die Artikel werfen!
OmniOwl
Oh, warte, ich habe endlich die beste Erklärung gefunden, die ich vor einiger Zeit gelesen habe. Es stellte sich heraus, dass es eine Antwort auf eine Frage war, die ich hier gestellt habe gamedev.stackexchange.com/questions/48971/… : D
Roy T.
4

Ich denke, Sie machen die Definition zu kompliziert. Sicherlich sind viele der in Ihrer Aufzählungsliste enthaltenen Punkte aus Sicht der Softwareentwicklung gut , aber sie sind nicht unbedingt Teil der Definition von "datengesteuert". Viele von ihnen haben einige Überschneidungen oder werden am besten mit einem datengesteuerten Ansatz implementiert , stellen jedoch nicht den Vorgang dar, etwas zu steuern.

Die eigentliche Definition der datengesteuerten Softwareentwicklung ist im Allgemeinen recht einfach: Ein Programm führt Aktionen aus, die hauptsächlich auf externen Informationen (Daten auf Ebene, Skriptdaten usw.) basieren, anstatt eine Reihe vordefinierter und fester Schritte im Code zu haben selbst, die den Kontrollfluss bestimmen.


quelle
Sie haben höchstwahrscheinlich Recht, dass ich Dinge überkompliziere. Ich neige dazu, das zu tun. Aber ich kann mich nicht darum kümmern, wie ich damit anfangen soll.
OmniOwl
1
Ich habe eine Antwort auf Ihre Frage auf GDNet gepostet . Der Kern des Problems ist: Hör auf, dich so sehr anzustrengen, wähle einen einzelnen einfachen Aspekt dessen aus, was du letztendlich willst, und baue daraus ein kleines Spiel.
Ich habe gesehen und auch geantwortet. Vielen Dank, dass Sie sich die Zeit genommen haben, mit mir darüber zu sprechen.
OmniOwl