0
votes

La meilleure façon de sauvegarder les données de jeu dans l'unité qui est Secure & Platform Independent

Je cherche un moyen de sauver les utilisateurs de progresser pour mon jeu, je cherche quelque chose qui ne peut pas être altéré / modifié. Je voudrais devoir être capable d'être indépendant de la plate-forme. Et j'aimerais que cela soit stocké dans les fichiers de jeu sur l'utilisateur puisse transférer leurs données sur différents ordinateurs (avec un lecteur flash ou quelque chose). (Corrigez-moi si je me trompe dans n'importe quelle région) mais je crois parce que je dois être sécurisé et indépendant de la plate-forme qui élimine les préfètes du joueur de l'équation. Je sais qu'il existe un moyen de sauvegarder des données en le cryptant avec binaire, mais je ne sais pas comment cela fonctionne et si l'utilisateur pouvait transférer les données de l'ordinateur à l'ordinateur. Y a-t-il un meilleur moyen d'économiser des données? Le cryptage est-il par binaire la voie à suivre? Si oui, comment je le ferais? Merci :) Si vous avez des questions, n'hésitez pas à demander.

Edit: Je ne comprends que rien n'est complètement sécurisé, je cherche quelque chose qui peut arrêter l'utilisateur moyen d'entrer dans un fichier, de changer de flotteur et d'une tonne et de tonnes d'argent dans le jeu.


3 Réponses :


1
votes

La première façon de sauvegarder des données dans l'unité est d'utiliser PlayerPrafs, en utilisant par exemple: xxx pré>

et pour obtenir, vous n'avez besoin que p> xxx pré> La seconde méthode et la manière dont vous les permettez à stocké dans un fichier indépendant utilise la sérialisation, ma préférence est une utilisation du fichier JSON pour celui-ci. p>

1) Faites une classe qui stockera les données ( pas nécessairement, il faut s'étendre de monobéhavien: p> xxx pré>

et stockez-le dans une autre classe avec p> xxx pré>

et pour lire les données P>

string json= File.ReadAllText(path);
DataStorer dataStorer = new DataStorer();
JsonUtility.FromJsonOverwrite(json, dataStorer);


6 commentaires

Votre réponse explique que l'enregistrement des données, mais cela n'est pas sécurisé. Il peut facilement être altéré avec


@Immoralité Rien n'est vraiment sécurisé, cela dépend de la mesure où vous voulez aller avec la sécurité de vos données, mais pour quelque chose comme une sauvegarde de jeu, je recon même en plaçant une somme de contrôle salée des données en tant que champ arrêterait la plupart des craquelins


PlayerPrafs est Sous-partiquement insécurisé tel qu'il est non destiné à enregistrer des données. Il est destiné à stocker options tels que le niveau de volume , Statut de sourdine, FullScreen ou fenêtré, etc. Des choses que si le joueur édite le fichier le texte clair pendant que le jeu ne fonctionne pas ne causera pas de comportement indésirable.


@MARCO Alonso Friz Palavecino OK, où serait le fichier JSON être situé sur le système et que je ne comprends rien n'est complètement sécurisé mais est-ce bien meilleur que les préfs de joueurs?


Pour où il sera sauvegardé, l'unité disposait d'un "dossier de magasin" dans chaque système, c'est le persistantdatapath . Lorsque le joueur veut obtenir son fichier pour déplacer TROW A PENDRIVE, vous pouvez demander au dossier d'être stocké à un lecteur et déplacer le fichier modifiant la chaîne chemins lorsque vous stockez le fichier. Pour ajouter de la sécurité, vous pouvez ajouter MD5 ou SH1 HASHCODE pour vérifier l'intégrité de votre fichier et vous pouvez stocker le fichier au format zip pour rendre plus difficile à changer.


Le joueur commun, ne peut pas comprendre le fichier s'il s'agit d'un fichier zip. Répondre à votre question un peu moins.



3
votes

La réponse précédente mentionne deux bonnes méthodes pour stocker des données (bien qu'il existe encore des bizarreries concernant les fichiers d'écriture sur différentes plateformes), j'aimerais ajouter du sujet de la sécurité, comme mentionné dans un commentaire ici.

Tout d'abord, rien n'est entièrement sécurisé, il y a toujours une personne plus brillante qui trouvera une faille quelque part dans votre code, peut-être que si vous ne voulez que vous ne voulez que Crypto, ce qui n'est pas trivial avec la gestion clé, etc.

Je comprends de la question qu'il souhaite empêcher les utilisateurs de déplacer des fichiers entre les machines ou de leur permettre de déplacer les fichiers entre les machines, mais de les sceller afin que les utilisateurs ne puissent pas facilement modifier les données stockées dans elles.

Cas, une solution triviale fonctionnerait: générer un hashcode à partir de votre jeu de données, manglez-le avec un peu (sel ou faire quoi que ce soit pour passer à un autre hashcode). de sorte que vous pourriez avoir quelque chose comme xxx

si le champ "Protection" est un hashcode de "John1234", il ne correspondra pas "john9999", donc si l'utilisateur ne le fait pas Sachez comment vous selez votre protection, vous pourrez savoir que la sauvegarde a été altérée avec


3 commentaires

Juste pour clarifier, je souhaite permettre aux utilisateurs de transférer des fichiers entre les machines mais ne pas altérer les fichiers. Je comprends rien n'est complètement sécurisé mais je cherche quelque chose qui peut arrêter l'utilisateur moyen d'entrer dans un fichier, en changeant un flotteur et de pouvoir faire n'importe quoi assez facilement.


Si c'est correct pour que les utilisateurs puissent lire les données, la solution que j'ai proposée sera suffisante


ils seront en mesure de modifier les fichiers, mais si la somme de contrôle ne correspond pas, vous traitez le fichier comme invalide, aucune modification simple ne sera efficace.