Une manière traditionnelle d'atteindre cet objectif dans le développement de jeux consiste à utiliser une architecture basée sur les données pour les systèmes de jeux.
En substance, cela signifie que le code n'implémente pas un type particulier d'arme (un pistolet) avec des valeurs explicitement définies pour sa portée / dégâts / pénétration, mais qu'il remplit les concepts génériques d'une arme à distance (portée / dommages / pénétration ...) à partir d'une source de données externe (au code). Cette source externe peut varier de fichiers analysables (peut-être XML) lus depuis le disque, à des fichiers binaires ou des éléments de base de données générés via des outils internes ou externes au moteur de jeu lui-même.
Définissant quelque chose comme un ennemi, le système d'IA peut être conçu pour prendre en charge un certain nombre de comportements génériques (agressifs, défensifs, de soutien, lâches) qui sont ensuite peaufinés par des éléments pilotés par les données.
My New Enemy, commence par le comportement agressif de l'IA de base avec des valeurs basées sur les données pour: -ignorer les joueurs> mon niveau + X -poursuivre les joueurs jusqu'à X unités au-delà du point d'apparition -fuir quand la santé <X -les priorités des capacités rangées -les priorités des capacités de mêlée (pour les joueurs trop proches)
Un schéma basé sur des données plus compliqué pourrait permettre la définition de points de données spécifiques (événements) où un état AI passe (machine à états finis) à un autre état (ou même une chance de passer à l'un des N autres états) permettant à vos utilisateurs de définir un hiérarchie compliquée des comportements.
Tout cela est bien sûr plus de travail que le simple codage explicite d'un comportement, mais c'est un défi amusant pour permettre aux utilisateurs de produire du contenu sans modification de la source.
Il y a des points bonus à atteindre:
- si vous pouvez mettre à jour dynamiquement les données et que les modifications soient reflétées dans le moteur de jeu sans redémarrer l'application
- si vous créez des interfaces utilisateur conviviales sur les données permettant aux utilisateurs d'utiliser une interface pour interagir avec les données plutôt que de modifier directement des fichiers texte (xml ou autre)
Pour un jeu de didacticiel ciblé comme une foule plus technique, la plupart du travail se fait à la place dans des classes / objets conçus qui exposent des interfaces propres pour les utilisateurs à étendre, qui à leur tour peuvent également être basées sur les données.