[MY-AL] Quelle méthode de Data Persist pour un jeu de gestion ?

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Avatar de l’utilisateur
Yazza
Messages : 31
Inscription : 21 Avr 2015 10:45
Localisation : Paris

[MY-AL] Quelle méthode de Data Persist pour un jeu de gestion ?

Message par Yazza » 13 Jan 2020 21:24

Bonjour à tous !

Je suis en train de réfléchir au développement d'un petit jeu de gestion / basebuilder en C# avec Unity.
Quel est selon vous la meilleure pratique/architecture à adopter pour garder un code clair et évolutif ? Je suis surtout perdu dans les choix à faire pour garder en mémoire sur le disque dur les nombreuses données que comporte ce genre de jeu (Liste des bâtiments construits ou en construction, les taches, les succés etc...). Je suis persuadé qu'une architecture type MVC ou MVVM (J'ai encore du mal à comprendre les nuances) sont indispensables pour ce genre de projet, même si beaucoup disent qu'Unity ne se prête pas à ce genre de pattern. Qu'en dites vous ?

Pour la persistence, j'ai commencé à coder quelques lignes pour sauvegarder dans un fichier binaire à l'aide du BinaryFormatter. Cela fonctionne très bien, mais je trouve ça rapidement fastidieux en vu de la masse de data que j'ai à enregistrer. Est-ce quelque chose de courant d'utiliser une base de donnée en parallèle type MySQL ou même SQLite pour sauvegarder ces datas, et est-ce suffisamment sécurisés pour éviter les hacks ?

Merci d'avance pour vos retours et expériences !

Yazza
Je me contredis toujours, voire jamais.

Avatar de l’utilisateur
Yazza
Messages : 31
Inscription : 21 Avr 2015 10:45
Localisation : Paris

Re: [MY-AL] Quelle méthode de Data Persist pour un jeu de gestion ?

Message par Yazza » 15 Jan 2020 14:14

Pour le moment, je suis rester sur l'idée du Binary File. J'ai totalement isolé les données du jeu, chaque classes "data" hérite d'une classe mère "GameData" qui possède deux méthodes abstraites :
Serialize(), qui retourne un SerializedData
Deserialize(), qui réinjecte les données dans l'objet et le remet en place.

Ensuite je garde une liste complète de tout les GameData pour pouvoir Save ou Load quand je le souhaite.
Pour accéder à mes données j'utilise une classe DataAccess (Celle qui possède la liste), et je retrouve mon GameData via un ID unique, le même utilisé pour retrouver les datas sérialisées.

Et enfin pour simplifier les échanges entre le DataAccess et les contrôleurs ou MonoBehaviors, je créé des classes Repository qui se charge de récupérer ou envoyer les données au DataAccess.

J'attend vos retours pour connaître vos amis sur ce genre de manipulations !
A très bientôt
Je me contredis toujours, voire jamais.

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

Re: [MY-AL] Quelle méthode de Data Persist pour un jeu de gestion ?

Message par jmhoubre » 16 Jan 2020 19:59

Bonjour,

je réponds juste sur l'aspect sécurité de
Est-ce quelque chose de courant d'utiliser une base de donnée en parallèle type MySQL ou même SQLite pour sauvegarder ces datas, et est-ce suffisamment sécurisés pour éviter les hacks ?
La sécurité est un tout. Pour prendre une image, ce n'est pas la peine d'avoir une porte blindée, si les murs qui l'entourent sont en papier. Donc savoir si une base de donnée est assez sécurisée pour éviter le piratage (un hacker n'est pas un pirate, mais un bidouilleur curieux) n'est pas une bonne question (ou au moins ce n'est pas la seule). Il y a plusieurs bonnes questions :
- j'ai besoin d'une base de donnée pour mon application, j'ai besoin de sécuriser [les données | les accès | les fonctions] en [Confidentialité | intégrité | disponibilité]. Quel produit correspond à mon besoin de sécurité ? Quelle confiance j'ai dans le produit ? (par exemple MySQL a fait l'objet le 15 janvier d'un avis pour de multiples vulnérabilités) ? Qui héberge la BD et quelle confiance ?
- quelle architecture, quelles configurations logicielles, quelles mesures organisationnelles choisir pour atteindre le niveau de sécurité souhaité ?

Bref, ce n'est pas simple.

Répondre

Revenir vers « (C#) CSharp »