24-02-2013, 12:07 AM
Exemple:
Sur eclerd, j'ai la liste des batiments que le joueur peut construire. Pour chaque batiment, il existe 1 à 4 générations (la génération 1 est celle de base, la 2eme est un batiment un peu meilleur, etc).
Ces bâtiments consomment et produisent des ressources. Il y a 26 ressources. J'aurai donc du faire au moins 53 colonnes (26 colonnes pour les consommations, 26 colonnes pour les productions, 1 colonne pour l'id du bâtiment), ou, au pire, 27 colonnes (1 colonne d'id, 26 colonnes de ressources, si >0, c'est une production, si <0, c'est une consommation). En pratique, j'ai tout rassemblé, car les consommations/productions ne sont pas les seules données.
Je me suis donc retrouvé avec 3 colonnes: l'id, la consommation, la production. Chaque ligne était alors sous la forme suivante:
Maintenant, j'attaque la version 2 de ce jeu... j'ai besoin d'enlever des ressources: j'suis bien mal barré avec ces sérialisations, ca va être pas pratique...
De plus, si je veux ajouter une ressource sur uniquement l'une des planètes de jeu, ca va coincer...
Pareil pour les salariés ou les niveaux de recherche requis avant de pouvoir utiliser ce bâtiment.
Mais au fait, elles sont dans quel ordre ces ressources?!
Finalement, ca a été rapide à faire, j'ai pas eu besoin de créer les 26 colonnes, mais maintenant, je dois tout reprendre, et c'est bien moins drôle.
Quand à l'option "il suffisant, au lieu de faire 8348486/0/0/0..., d'utiliser Pétrole=8348486/Charbon=0/Minerai=0/...", cela implique qu'il m'aurait fallu répérer plusieurs fois les noms des ressources, et la quantité de données aurait explosée (à l'époque, c'était une BDD limitée à... 20Mo!"
Quand à l'idée "alors utilise l'id de la ressource au lieu du nom: ca prendra moins de place", on se heurte au même soucis de clarté ("1=8348486/2=0/3=0/..." ouais, c'est pas toujours évident à lire ce 2=0..)
Donc, ca gagne du temps de sérialiser ainsi, mais sur des jeux un peu velus ou dont la maintenance se fait sur du long terme (on a le temps d'oublier comment on avait pensé son jeu), c'est souvent malvenu.
Sur eclerd, j'ai la liste des batiments que le joueur peut construire. Pour chaque batiment, il existe 1 à 4 générations (la génération 1 est celle de base, la 2eme est un batiment un peu meilleur, etc).
Ces bâtiments consomment et produisent des ressources. Il y a 26 ressources. J'aurai donc du faire au moins 53 colonnes (26 colonnes pour les consommations, 26 colonnes pour les productions, 1 colonne pour l'id du bâtiment), ou, au pire, 27 colonnes (1 colonne d'id, 26 colonnes de ressources, si >0, c'est une production, si <0, c'est une consommation). En pratique, j'ai tout rassemblé, car les consommations/productions ne sont pas les seules données.
Je me suis donc retrouvé avec 3 colonnes: l'id, la consommation, la production. Chaque ligne était alors sous la forme suivante:
Citation :Id: 1
Groupe: 1
Generation : 1
Nom :Extraction Pétrole
PrerequisRecherche : 0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0
Multiplicatifs_Terrain: 1/1/1/1/1/0.7/0/1/0.8
Salaries: 218254/72166/12150/0/0/0
Production: 8348486/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/12000/17045
Consommation: 0/0/0/0/0/0/0/0/0/0/0/0/0/0/26030/0/0/0/0/0/0/0/0/0/0/0
PointsVie: 27800
TypeSousSol: 1
Maintenant, j'attaque la version 2 de ce jeu... j'ai besoin d'enlever des ressources: j'suis bien mal barré avec ces sérialisations, ca va être pas pratique...
De plus, si je veux ajouter une ressource sur uniquement l'une des planètes de jeu, ca va coincer...
Pareil pour les salariés ou les niveaux de recherche requis avant de pouvoir utiliser ce bâtiment.
Mais au fait, elles sont dans quel ordre ces ressources?!
Finalement, ca a été rapide à faire, j'ai pas eu besoin de créer les 26 colonnes, mais maintenant, je dois tout reprendre, et c'est bien moins drôle.
Quand à l'option "il suffisant, au lieu de faire 8348486/0/0/0..., d'utiliser Pétrole=8348486/Charbon=0/Minerai=0/...", cela implique qu'il m'aurait fallu répérer plusieurs fois les noms des ressources, et la quantité de données aurait explosée (à l'époque, c'était une BDD limitée à... 20Mo!"
Quand à l'idée "alors utilise l'id de la ressource au lieu du nom: ca prendra moins de place", on se heurte au même soucis de clarté ("1=8348486/2=0/3=0/..." ouais, c'est pas toujours évident à lire ce 2=0..)
Donc, ca gagne du temps de sérialiser ainsi, mais sur des jeux un peu velus ou dont la maintenance se fait sur du long terme (on a le temps d'oublier comment on avait pensé son jeu), c'est souvent malvenu.