Ma question est de savoir si je dois ou non utiliser des fichiers texte pour enregistrer mes données de jeu. J'ai quelques préoccupations fondamentales à ce sujet:
Il n'y a vraiment aucun moyen de protéger les données, et donc, l'utilisateur pourrait tout gâcher s'il les touchait et je ne veux pas que cela se produise.
Ce n'est probablement pas le moyen le plus efficace de stocker mes données (il y en aura beaucoup)
Je sais comment analyser / écrire efficacement dans des fichiers texte, donc pour le prototypage, ils ont été fantastiques. Je veux juste regarder vers l'avenir pour savoir ce que je devrais penser à changer pour qu'il ne me frappe pas au visage vers la fin du développement.
Si je ne dois pas utiliser de fichiers texte, que dois-je utiliser? J'ai besoin de quelque chose de compatible C ++.
la source
Réponses:
Pour l'instant, puisque vous ne faites que commencer, les fichiers texte sont probablement OK. Il y a quelques préoccupations dans votre question que je vais aborder.
La protection des données n'est pas aussi cruciale que vous le pensez probablement. Si votre jeu est multijoueur, vous aurez quand même les données enregistrées côté serveur. Si votre jeu est en solo, que se passe-t-il si les joueurs modifient les données? S'ils cassent quelque chose, c'est vraiment de leur faute et ils peuvent réinstaller.
La performance est également autre chose que nous échouons souvent à planifier correctement. Vous ne devriez pas vraiment optimiser avant d'avoir réellement mesuré un problème de performances. Je suppose que vous aurez probablement une quantité de données qui n'est pas si grande et que les fichiers texte iront très bien.
Cela étant dit, votre meilleur pari est d'abstraire au mieux vos routines d'enregistrement et de chargement de données. Par exemple, vous pouvez avoir une classe de base, par exemple
DataWriter
, puis fournir différentes implémentations de ses différentes méthodes. Un exemple très basique ressemblerait à:Lorsque vous profilez votre jeu et réalisez que le goulot d'étranglement des performances se trouve dans la routine d'écriture de fichier, vous pouvez fournir une autre implémentation de cette classe (par exemple pour écrire dans une base de données à la place) avec un minimum de modifications du code appelant.
la source
Le mot Game Data peut signifier beaucoup de choses, par exemple
Pour chaque catégorie, vous pouvez adopter une autre approche.
Par exemple, vous pouvez utiliser SQLite pour les trucs de localisation, binaire pour les cartes, les textures, les sons, etc.
Pour la configuration, vous devez utiliser des fichiers xml faciles à modifier.
Comme toujours, la bonne réponse est "ça dépend".
Il existe de nombreux analyseurs xml avec une liaison c ++ et une liaison c ++ pour SQLite existe également.
la source
Vous pouvez enregistrer vos données en tant qu'objet blob binaire et diffuser les données lorsque vous accédez à ce fichier. Cela résoudrait vos deux problèmes. Assurez-vous simplement que le code de sérialisation est exactement le même que la désérialisation.
Le streaming dans le blob binaire est relativement rapide et empêche également l'utilisateur de voir les données et de les modifier.
Vous pouvez réaliser tout cela en utilisant les flux de bibliothèque standard.
la source
float
membre à un seul ), les anciennes sauvegardes deviennent complètement invalides. C'est difficile à gérer pendant le développement, mais si vous êtes à la hauteur, alors certainement.