Le but de cette bibliothèque de fonction est d'avoir tous les mécanismes
nécessaires à la manipulation d'une histoire interactive dans le cadre d'un
jeu (mais si quelqu'un a d'autres idées, je suis toute ouïe:).
Par histoire interactive, on peut prendre comme exemples les jeux
d'aventure (les King Quest et les Leisure Suit Larry de Sierra ou encore
les Monkey Island de Lucas Arts). Mais d'une manière plus large tout type
de jeu où le joueur doit interagir avec une histoire.
Oublions un peu nos ordinateurs et lançons nous dans la réflexion qu'amène
une telle question. Dans un premier temps, on peut aisement remarquer
qu'une histoire s'inscrit obligatoirement dans un temps et
un espace (qu'ils soient absolu ou non importe peu). Le caractère
interactif amène à essayer d'interférer avec le cours de l'histoire.
Ces essais visant à trouver les évènements permettant de changer
son cours. On peut donc réduire une histoire à une suite
d'évènements.
Un évènement est assimilable à une action se produisant dans un
contexte donné et généralement, là où il y a une action, il y a une
réaction (ou plusieurs).
Une action est un verbe suivit de paramètres qui peuvent prendre
différentes forme (un acteur, un accessoire, un élément du décor, etc.).
Une réaction est aussi un verbe mais suivi d'un seul paramètre.
Le contexte (qui est un ensemble de circonstances) permet de
rattraper les notions d'espace (un lieu) et de temps (un moment)
évoquées au début de la réflexion et de les intégrer dans le mécanisme de
gestion d'histoire. De plus, il y a des cas où des évènements dépendent
d'autres évènements ; ce système de dépendance est aussi géré par les
circonstances.
Je me tate entre du C et du C++ car il n'y a pas de réel besoin des concepts objet
mais la structuration s'en rapprochant...
Pour ce qui est du stockage, le XML (via la libxml) convient. En effet, il est
intelligible et est manipulable au travers d'outils existants. En revanche, il ne sera
utilisé que pour le stockage, le chargement se chargeant de les convertir en une
représentation plus facilement/rapidement manipulable.
Sont fait :
- l'architecture interne ainsi que l'API publique,
- la structuration/découpage des différents fichiers décrivant l'histoire,
- les mécanismes de chargement.
À faire :
- l'implémentation =)
- un éditeur dédié.
Moins prioritaire à mes yeux, donc au point mort.