Comment créer un système de mot de passe pour un jeu solo comme ceux utilisés dans les anciens jeux sur console?
Par exemple, Mega Man X enregistre le travail en vous donnant une série de chiffres que vous pourrez saisir plus tard pour charger votre sauvegarde.
Réponses:
Tout d'abord, décomposez votre état de jeu (ou plutôt, les aspects de l'état que vous souhaitez enregistrer). Dans le cas d'un jeu de style Mega Man, vous pouvez suivre lequel des boss de niveau final que vous avez tués, le nombre de bonus de type réservoir d'énergie que vous avez, etc.
Emballez toutes ces données dans un champ de bits, c'est-à-dire affectez un nombre approprié de bits à chaque valeur:
Notre exemple a un total de 8 bits, ce qui signifie qu'un seul caractère peut représenter un mot de passe. En pratique, votre jeu est susceptible d'avoir plus d'état et donc de nécessiter plus de bits au total et donc plus de caractères. Comme indiqué dans les commentaires ici et ailleurs dans cette question, cette approche fonctionne pour les jeux "rétro" ou d'autres jeux où la taille de l'état de jeu capturé est raisonnable. Au-delà d'un certain point, vous découvrirez peut-être que la complexité des mots de passe nécessaires pour encoder votre état est trop importante.
Pour diminuer la probabilité d'une observation occasionnelle de fissuration du mot de passe, vous pouvez transformer la disposition des bits afin d'introduire des bits fictifs (qui n'ont aucun effet sur l'état du jeu mais qui rendent le mot de passe différent lorsque vous interprétez tous les bits en tant que caractères) ou exécutez à travers une opération de hachage réversible pour brouiller les bits afin que tous les bits de la "boîte X tuée " ne soient pas côte à côte, ce qui rend les mots de passe à état séquentiel correspondants très différents ou introduisent des valeurs de somme de contrôle.
Si vous fouillez, il y a pas mal d'informations sur les systèmes utilisés pour certains des jeux avec mot de passe les plus populaires:
Vous pouvez les lire pour plus d'inspiration.
la source
Ces jeux n'ont sauvé qu'un état, je crois. Le mot de passe fait simplement référence à un niveau à charger. Utilisez simplement un dictionnaire pour quelque chose comme ça.
Si c'est un peu plus complexe, comme avoir une certaine arme ou un booster, vous pouvez crypter l'état en un code de hachage court (mais assez long).
Mais je vous conseille fortement de ne pas l'utiliser. Le mot de passe se répandra rapidement sur Internet et bientôt tout le monde aura gagné votre partie.
la source
Eh bien, vous pouvez le faire de cette façon:
Boss tués = 7
Nombre de pièces = 36
Possède une épée = 0 (non)
Possède un cœur = 1 (Oui)
Niveau actuel = 6
Monde actuel = 9
Santé = 100
Code = 7V36R0A1T6O9A100
Fondamentalement, chaque lettre sépare les types
la source
Bien que des solutions comme le système de personnage à état de Josh Petrie présentent des avantages (petite taille d'enregistrement, fonctionne sur toutes les copies du jeu), elles associent la conception des jeux et le système d'état pour être intrinsèquement au système de mot de passe. Toute modification du mot de passe, de l'état ou de la conception et de l'ensemble du système s'effondre.
Une solution beaucoup plus simple serait de construire votre système de sauvegarde comme d'habitude, et d'ajouter simplement un système de mot de passe par-dessus. Cela peut être aussi simple que d'enregistrer le mot de passe dans la sauvegarde (éventuellement doubler en tant que nom de fichier) et de le valider à la charge, ou aussi complexe que d'utiliser l'une des nombreuses bibliothèques de chiffrement (ce qui est assez trivial).
Il semble y avoir une certaine confusion autour de cette réponse.
1) L'op a simplement demandé un mot de passe qui leur permet de charger une sauvegarde ... il n'y a aucune exigence que le mot de passe soit la sauvegarde.
2) De nombreux jeux nécessitent aujourd'hui un stockage important, nous venons de construire un système de sauvegarde / chargement rapide en interne qui produisait des fichiers de 10 Mo ... pour un jeu de quiz! Le système de sauvegarde de Josh Petrie , bien que valide, est très limité - dès que le système de magasin devient non trivial, les mots de passe doivent être d'une longueur énorme pour conserver toutes les données pertinentes.
Par exemple, que se passe-t-il s'il y a 30 patrons? 20 réalisations? Sommes-nous à mi-chemin d'une réalisation? À quel niveau est-il? Combien de bits mettons-nous de côté pour la santé, la vie, les pièces, xp? Et si l'instantané n'est pas d'état entre les niveaux ... mais à mi-chemin d'un niveau - les positions du joueur, des ennemis, des projectiles, du terrain détruit / altéré ajoutent soudainement à beaucoup d'état qui doit être stocké.
Pour la perspective, en supposant un alphabet de 30 caractères et un mot de passe de dix lettres, nous avons environ 50 bits d'informations à stocker. Il n'est pas rare de voir un jeu / moteur utiliser jusqu'à 320 bits uniquement pour stocker la position, la rotation et la mise à l'échelle d'un seul objet. Bien sûr, vous pouvez faire toutes sortes de trucs d'optimisation pour en faire plus avec moins ... mais en fin de compte, vous utilisez le temps consacré à rendre le jeu amusant - l'une des pires optimisations que vous puissiez faire.
la source