Système de sauvegarde/chargement de données

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Krafter
Messages : 63
Inscription : 11 Fév 2017 17:03

Système de sauvegarde/chargement de données

Message par Krafter » 28 Mars 2021 13:40

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

Avatar de l’utilisateur
Max
Messages : 8234
Inscription : 30 Juil 2011 13:57
Contact :

Re: Système de sauvegarde/chargement de données

Message par Max » 28 Mars 2021 16:08

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.
Image
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

Krafter
Messages : 63
Inscription : 11 Fév 2017 17:03

Re: Système de sauvegarde/chargement de données

Message par Krafter » 30 Mars 2021 12:31

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 ?

Avatar de l’utilisateur
jmhoubre
Messages : 404
Inscription : 05 Oct 2019 22:05

Re: Système de sauvegarde/chargement de données

Message par jmhoubre » 30 Mars 2021 13:39

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 :

Code : Tout sélectionner

	// Sauvegarde
	PlayerPrefs.SetInt(PlayerScore, score);
	// Lecture.
	score = PlayerPrefs.GetInt(PlayerScore)
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.

Avatar de l’utilisateur
Max
Messages : 8234
Inscription : 30 Juil 2011 13:57
Contact :

Re: Système de sauvegarde/chargement de données

Message par Max » 30 Mars 2021 14:18

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
Image
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

Krafter
Messages : 63
Inscription : 11 Fév 2017 17:03

Re: Système de sauvegarde/chargement de données

Message par Krafter » 30 Mars 2021 15:00

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 :)

Avatar de l’utilisateur
jmhoubre
Messages : 404
Inscription : 05 Oct 2019 22:05

Re: Système de sauvegarde/chargement de données

Message par jmhoubre » 30 Mars 2021 17:47

Bonjour,

voici une série de liens que j'ai retrouvé dans mes notes : Bonne lecture.

Krafter
Messages : 63
Inscription : 11 Fév 2017 17:03

Re: Système de sauvegarde/chargement de données

Message par Krafter » 07 Avr 2021 08:18

Merci pour ces liens je regarde ça de suite ;)

Répondre

Revenir vers « Unity le logiciel »