22-03-2012, 09:55 AM
Pour ma part, j'utilise ce principe:
Concrètement, j'ai une table contenant tous les éléments de mon jeu (objets, personnages, ...); cette table contient peu d'informations (le nom, la description et le type de l'élément).
A coté, j'ai une table définissant toutes les caractéristiques pouvant être portées par mes éléments (nom de la caractéristique, code unique pour utilisation dans les sources, type de la valeur)
Puis une table joignant les deux en y rajoutant la valeur de la caractéristique pour l'élément concerné.
Ainsi, pour la cruche, j'aurai une occurrence de cette table pour la caractéristique "peut contenir du liquide" avec comme valeur un booléen à vrai, une autre "peut servir d'arme" avec comme valeur un booléen à vrai, une autre "dégâts infligés" avec un nombre comme valeur, une autre "cassable" avec comme valeur un booléen à vrai,...
En partant de l'élément, un select avec les bonnes jointures donnera d'un coup l'ensemble des caractéristiques de l'objet.
Dans l'autre sens, en partant de la caractéristique, un select permet d'obtenir l'ensemble des éléments caractérisés (utilisation du code unique de la caractéristique). Ex: Si le personnage chute, il suffit de rechercher l'ensemble des éléments présents dans son équipement qui possèdent la caractéristique "cassable" puis décider, pour chacun d'eux, si il est cassé ou non suite à la chute.
Concrètement, j'ai une table contenant tous les éléments de mon jeu (objets, personnages, ...); cette table contient peu d'informations (le nom, la description et le type de l'élément).
A coté, j'ai une table définissant toutes les caractéristiques pouvant être portées par mes éléments (nom de la caractéristique, code unique pour utilisation dans les sources, type de la valeur)
Puis une table joignant les deux en y rajoutant la valeur de la caractéristique pour l'élément concerné.
Ainsi, pour la cruche, j'aurai une occurrence de cette table pour la caractéristique "peut contenir du liquide" avec comme valeur un booléen à vrai, une autre "peut servir d'arme" avec comme valeur un booléen à vrai, une autre "dégâts infligés" avec un nombre comme valeur, une autre "cassable" avec comme valeur un booléen à vrai,...
En partant de l'élément, un select avec les bonnes jointures donnera d'un coup l'ensemble des caractéristiques de l'objet.
Dans l'autre sens, en partant de la caractéristique, un select permet d'obtenir l'ensemble des éléments caractérisés (utilisation du code unique de la caractéristique). Ex: Si le personnage chute, il suffit de rechercher l'ensemble des éléments présents dans son équipement qui possèdent la caractéristique "cassable" puis décider, pour chacun d'eux, si il est cassé ou non suite à la chute.