Bonjour,
Je souhaiterai pouvoir inclure dans mon jeu un système de chargement et sauvegarde des données, pour que le joueur puisse sauvegarder et reprendre sa partie.
En me renseignant j'ai trouver différentes façons de faire (playerpref, encodage binaire, json, utilisation d'assets, ...). Et je suis un peu perdu.
Pourriez vous me conseiller, car j'imagine que c'est une feature utilisée dans beaucoup de jeux? Sur une façon de faire récente, pratique, facile à mettre en place pour un certain volume de données, robuste, ...
De plus, le jeu à pour vocation à être publier sur Steam (si je parviens jusque là ^^). Si certains ont publiés récemment sur cette plateforme, je ne sais pas si il y a des fonctions prévues à cet effet par des packages propres à Steam ?
Merci
Système de sauvegarde/chargement de données
Re: Système de sauvegarde/chargement de données
Bonjour,
cela dépend pas mal des données que tu souhaites sauvegarder, voir du contexte.
Si cela se limite à quelques éléments (position de départ, numéro du niveau par exemple), le plus simple reste les PlayerPrefs.
Pour un volume plus importants et des sauvegarde plus complexes, alors le système JSON est une des solutions les plus conseillée.
Certains passent aussi par des sauvegarde par fichier texte.
cela dépend pas mal des données que tu souhaites sauvegarder, voir du contexte.
Si cela se limite à quelques éléments (position de départ, numéro du niveau par exemple), le plus simple reste les PlayerPrefs.
Pour un volume plus importants et des sauvegarde plus complexes, alors le système JSON est une des solutions les plus conseillée.
Certains passent aussi par des sauvegarde par fichier texte.
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ
Re: Système de sauvegarde/chargement de données
Bonjour, merci de ta réponse Max !
Par exemple, si je veux sauvegarder la position du joueur (coordonnées, level en cours, hp, ...), l'état actuel du niveau en cours (monstres présents et leur position, ...) ainsi que les éventuels objets qu'à récupérer le joueur (c'est un jeu où il faut collecter des choses), cela te semble trop pour des PlayerPrefs ? J'ai un peu de mal à me faire une idée de ce qui est beaucoup ou non ^^"
Et en plus de la sauvegarde propre au run en cours du joueur, je voudrais que le jeu retienne ce qu'à accompli le joueur au cours de ces différents run afin de débloquer du contenu (un peu à la "Binding of Isaac" pour ceux qui connaissent), j'imagine que je dois donc réaliser 2 systèmes de sauvegardes différents ?
Par exemple, si je veux sauvegarder la position du joueur (coordonnées, level en cours, hp, ...), l'état actuel du niveau en cours (monstres présents et leur position, ...) ainsi que les éventuels objets qu'à récupérer le joueur (c'est un jeu où il faut collecter des choses), cela te semble trop pour des PlayerPrefs ? J'ai un peu de mal à me faire une idée de ce qui est beaucoup ou non ^^"
Et en plus de la sauvegarde propre au run en cours du joueur, je voudrais que le jeu retienne ce qu'à accompli le joueur au cours de ces différents run afin de débloquer du contenu (un peu à la "Binding of Isaac" pour ceux qui connaissent), j'imagine que je dois donc réaliser 2 systèmes de sauvegardes différents ?
Re: Système de sauvegarde/chargement de données
Effectivement, PlayerPrefs semble peu adapté dans ton cas. Pour t'en convaincre, regarde la documentation. En gros, pour chaque donnée, il faut définir une clé. Par exemple, sauvegarder le score du jeu se fait comme ceci, en supposant que le score soit dans un int nommé score :
De plus, PlayerPrefs ne peut sauver que des int, des float et des string. Pas de Vector3, de List, donc ces types nécessitent un peu de travail supplémentaire.
Json semble mieux adapté (mais comme le précise Max, cela dépend de ce que tu cherches à faire), mais la librairie d'Unity est limitée. J'utilise un package plus complet : Newtonsoft.Json for Unity.
Pour la deuxième partie de ta question, je pense que Json convient également pour sauvegarder des faits accomplis, et un seul fichier est suffisant, c'est le développeur qui maîtrise ce que le fichier de sauvegarde contient.
Code : Tout sélectionner
// Sauvegarde
PlayerPrefs.SetInt(PlayerScore, score);
// Lecture.
score = PlayerPrefs.GetInt(PlayerScore)
Json semble mieux adapté (mais comme le précise Max, cela dépend de ce que tu cherches à faire), mais la librairie d'Unity est limitée. J'utilise un package plus complet : Newtonsoft.Json for Unity.
Pour la deuxième partie de ta question, je pense que Json convient également pour sauvegarder des faits accomplis, et un seul fichier est suffisant, c'est le développeur qui maîtrise ce que le fichier de sauvegarde contient.
Re: Système de sauvegarde/chargement de données
Bonjour,
en complément de la réponse et des indications fournis par jmhoubre, tu as pas mal de tuto qui traitent du sujet.
Exemple:
https://www.youtube.com/watch?v=XOjd_qU2Ido
en complément de la réponse et des indications fournis par jmhoubre, tu as pas mal de tuto qui traitent du sujet.
Exemple:
https://www.youtube.com/watch?v=XOjd_qU2Ido
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ
Re: Système de sauvegarde/chargement de données
Merci de ces réponses, je vais donc me pencher davantage sur l'utilisation de Json alors (merci pour le package recommandé je vais y jeter un oeil).
Et effectivement il y a pas mal de tutos (j'ai par exemple visionné celui que tu as mis Max), mais justement je ne savais pas vers où me diriger (par exemple dans ce tuto Brackeys dit que les playerPref ne sont pas adaptés si on à "beaucoup" de données à sauvegarder, mais quand on à aucune idée de ce que c'est que "beaucoup" pour un jeu vidéo, ça ne veut rien dire.. d'où ma demande d'éclaircissement ^^). Je vais donc m'orienter vers des tutos Json, merci
Et effectivement il y a pas mal de tutos (j'ai par exemple visionné celui que tu as mis Max), mais justement je ne savais pas vers où me diriger (par exemple dans ce tuto Brackeys dit que les playerPref ne sont pas adaptés si on à "beaucoup" de données à sauvegarder, mais quand on à aucune idée de ce que c'est que "beaucoup" pour un jeu vidéo, ça ne veut rien dire.. d'où ma demande d'éclaircissement ^^). Je vais donc m'orienter vers des tutos Json, merci
Re: Système de sauvegarde/chargement de données
Bonjour,
voici une série de liens que j'ai retrouvé dans mes notes :
voici une série de liens que j'ai retrouvé dans mes notes :
- En introduction, l'article de Wikipédia ;
- Un article de 2015 très clair d'Alsacréations : le stockage léger et pratique de données multi-types ;
- Si tu aimes aller au fond des choses, le standard ECMA-404 est pour toi ;
- Des tutoriels d'introduction de l'excellent CodeMonkey : What is Json ? et Simple Saving and Loading with Json to a File.
Re: Système de sauvegarde/chargement de données
Merci pour ces liens je regarde ça de suite