samedi 1 février 2014

Song of the Myrne: reprise des hostilités


Salut tout le monde !

Après quelques jours pris en congés et en marketing (envoyer plein de mails aux gens pour qu'ils parlent de mon jeu sur leur site/vidéo youtube), me voilà à nouveau d'attaque pour plus de programmation, yay !

Depuis hier je m'attaque à la sauvegarde (attention la suite est technique est inintéressante, rendez-vous dans la conclusion si vous avez la flemme^^).

SotM a une fâcheuse tendance à ne pas aimer voir de petites erreurs dans les sauvegardes, il n'aime pas ça du tout !

Jusqu'ici la sauvegarde consistait en un gros fichier par niveau qui contenait un peu toutes les infos sur les PNJ, les portes, etc... Tous les trucs qui ont besoin d'être enregistrés, en gros. Le soucis de ce système c'est qu'au moindre problème (un objet qui ne trouve pas ses infos dans le fichier de save par exemple), le jeu prend trop de temps à charger la sauvegarde et il vous jette dans le niveau sans avoir pris le temps de tout charger ni d'avoir enlevé l'écran de chargement.

Ça c'est le premier problème, en général tout se passe bien donc cette erreur est rare. Mais il y a un second soucis beaucoup plus grave, c'est que la plupart des mise à jour que je fais cassent les sauvegardes. Il suffit que j'ajoute un coffre ou un mob et c'est fini (parce que le mob ne trouvera pas ses infos dans l'ancienne save).

Je suis donc en train de changer le système de save pour qu'il enregistre les infos de chaque mob, porte, coffre, etc dans des fichiers différents. De cette façon, si je fais une mise à jour qui ajoute par exemple une porte vers un nouveau donjon, la porte verra tout de suite qu'elle n'est pas mentionnée dans les anciennes sauvegardes (car elle n'aura pas de fichier à son nom) et gardera ses valeurs par défaut, sans ralentir le chargement.

Je vais également mettre en place un petit système de version du jeu pour les sauvegardes concernant le perso. Prenons un exemple concret, la dernière maj de What Lies Beneath nécessitait de refaire un perso parce que le fichier de save du perso contient maintenant des informations sur les "vanity items". Le fichier du perso se lit d'une traite et dans l'ordre, il contient des infos comme votre vie maximale, votre mana, votre équipement, etc...

Le problème c'est qu'en ajoutant les vanity items par exemple, le fichier de save ressemblerait à un truc du genre:

40 => c'est la vie
30 => mana
40 => énergie
chapeau => de l'équipement
tuniqueBrune => idem
arbaleteTropSwag => idem
chapeauBrun => vanity
armureEnCuirClouté => vanity
true => le perso peut lancer des boules de feu
false => mais pas faire un mur de feu
false => etc, etc
...

Une ancienne sauvegarde ne contiendrait donc pas les informations soulignées. Quand la nouvelle version va vouloir lire ce fichier, au moment de mettre des objets dans les vanity slots, elle va prendre le "true" comme chapeau de vanity et le "false" comme armure.

Bien entendu tout le reste de la lecture sera également décalée et ça va être un fameux bordel^^.

Avec un système de version, le jeu sera capable de voir dans quelle versions à été fait ce fichier de sauvegarde et le lire en conséquences. Il ne va pas tenter d'y trouver d'infos sur les vanity et va les laisser vides, ensuite à la prochaine sauvegarde le fichier de save sera mis à jour et contiendra les infos de vanity.

Conclusion



Pour ceux qui ont eu la flemme de tout lire, tout ce pavé signifie simplement que les prochaines mises à jour de What Lies Beneath (et forcément ça s'applique à Song of the Myrne aussi) ne nécessiteront pas de refaire un perso (bon, celle où le système sera ajouté le demandera, mais pas les suivantes si tout se passe bien).