Qu'est-ce que la conception basée sur les données? [fermé]

11

J'ai lu de nombreux articles sur la conception de jeux basée sur les données. Cela semble se résumer à:

  • Pas de codage en dur
  • Aucun code spécifique au jeu dans le moteur
  • Scripting pour AI, cinématiques, et cetera.
  • Généraliser le code pour la réutilisabilité
  • Conception des composants
  • Modularité
  • Couplage bas
  • Éditeurs (pour les données, les cartes, les scripts)
  • Récupération de données externes
  • Constantes conservées dans des fichiers texte ( .iniou autre)
  • Exposer les données via des éditeurs pour les scripts et la manipulation par les concepteurs

Maintenant, ma question est, cette compréhension est-elle correcte?

OmniOwl
la source
3
Bienvenue sur le site. Vous avez deux questions ici (en général, vous ne devriez poser qu'une seule question par message), et la deuxième question sur "comment commencer" est considérée comme hors sujet, donc je l'ai éditée et j'ai réduit la question. Si vous souhaitez avoir des discussions sur la façon de commencer avec quelque chose, pensez à visiter le chat de développement de jeu .
@JoshPetrie Mais c'était le plus important car je suis allé sur de nombreux sites maintenant et je n'ai eu aucune réponse. Pas même un coup dans une direction. Il doit y avoir QUELQUES personnes qui ont eu un peu de perspicacité sur ces sujets.
OmniOwl
1
C'est peut-être le plus important pour vous, mais c'est hors sujet ici (voir la FAQ ). J'aurais également pu clore la question. Visitez le chat de développement de jeu ou un véritable forum de discussion comme GDNet si vous souhaitez poser des questions de mise en route.
1
@Vipar Entrez dans le chat si vous voulez de l'aide avec la question hors sujet. Cela ne garantit pas que vous obtiendrez de l'aide, mais beaucoup de gens intelligents traînent là-bas.
ClassicThunder

Réponses:

10

Je dirais que ce n'est pas correct. Je crois que l'idée la plus importante dans la conception basée sur les données est de séparer vos données de ce qui modifie (ou met à jour) les données .

Donc, en partant d'une hiérarchie profonde OO standard comme celle-ci:

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

vers un état et un système séparés

class CreatureState{
    vector postion;
}

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

L'un des paradigmes DDD les plus influents en ce moment est Entity Systems. Quelques bonnes ressources à rechercher sont:

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

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

Bien sûr, comme avec tous les paradigmes / idées, il n'y a pas de définition exacte et tout le monde ne comprend pas la même idée en parlant DDD, mais c'est ce que je crois le plus important.

Roy T.
la source
Oui j'ai oublié de mentionner la partie séparation. Et c'est exactement le genre de chose que j'aimerais voir. Je ne peux lire que beaucoup de théorie. J'ai besoin de voir des exemples concrets. Je vous remercie. Va aussi jeter un œil aux articles!
OmniOwl
Oh attendez enfin trouvé la meilleure explication que j'ai lue il y a un moment. Il s'est avéré que c'était une réponse à une question que j'ai posée ici gamedev.stackexchange.com/questions/48971/… : D
Roy T.
4

Je pense que vous compliquez trop la définition. Certes, bon nombre des principes contenus dans votre liste à puces de points sont bons du point de vue de l'ingénierie logicielle, mais ils ne font pas tous nécessairement partie de la définition de «axé sur les données». Beaucoup d'entre eux ont un certain chevauchement, ou sont mieux mis en œuvre en utilisant une approche basée sur les données, mais ne constituent pas l'acte de conduire des données.

La définition réelle du développement de logiciels piloté par les données est généralement assez simple: un programme effectue des actions principalement basées sur des informations externes (un élément de données de niveau, des données de script, etc.) au lieu d'avoir une série d'étapes prédéfinies et fixes dans le code lui-même qui déterminent le flux de contrôle.


la source
Vous avez très probablement raison de trop compliquer les choses. C'est quelque chose que j'ai tendance à faire. Mais je ne peux pas comprendre comment commencer à coder cela.
OmniOwl
1
J'ai posté une réponse à votre question sur GDNet . Le nœud du problème est: arrêtez d'essayer si dur, choisissez un seul aspect simple de ce que vous voulez finalement et construisez un petit jeu avec.
J'ai vu et j'ai également répondu. Merci d'avoir pris le temps de m'en parler.
OmniOwl