Wie würde ich ein Passwortsystem für ein Einzelspieler-Spiel erstellen, wie es in älteren Konsolenspielen verwendet wird?
Beispielsweise spart Mega Man X Arbeit, indem Sie eine Reihe von Zahlen eingeben, die Sie später zum Laden Ihres Speichers eingeben können.
Antworten:
Zerlegen Sie zunächst Ihren Spielstatus (bzw. die Aspekte des Status, den Sie speichern möchten). Bei einem Spiel im Mega-Man-Stil können Sie beispielsweise nachverfolgen, welche End-Level-Bosse Sie getötet haben, wie viele energietankähnliche Powerups Sie haben und so weiter.
Packen Sie all diese Daten in ein Bitfeld, dh weisen Sie jedem Wert eine geeignete Anzahl von Bits zu:
Unser Beispiel hat insgesamt 8 Bits, was bedeutet, dass ein einzelnes Zeichen ein Passwort darstellen kann. In der Praxis hat Ihr Spiel wahrscheinlich mehr Status und erfordert daher mehr Gesamtbits und damit mehr Charaktere. Wie in den Kommentaren hier und an anderer Stelle in dieser Frage erwähnt, funktioniert dieser Ansatz für "Retro" -Spiele oder andere Spiele, bei denen die Größe des erfassten Spielzustands angemessen ist. Über einen bestimmten Punkt hinaus stellen Sie möglicherweise fest, dass die Komplexität der Kennwörter, die zum Codieren Ihres Status erforderlich sind, zu groß ist.
Um die Wahrscheinlichkeit zu verringern, dass zufällige Beobachtungen das Passwort knacken, können Sie das Bit-Layout so ändern, dass Sie Dummy-Bits einführen (die keine Auswirkungen auf den Spielstatus haben, das Passwort jedoch anders aussehen lassen, wenn Sie alle Bits als Zeichen interpretieren) oder ausführen Durch eine umkehrbare Hash-artige Operation können die Bits so verwürfelt werden, dass alle "killed box X " -Bits nicht direkt nebeneinander liegen, wodurch die entsprechenden Passwörter mit sequenziellem Status sehr unterschiedlich aussehen oder Prüfsummenwerte eingeführt werden.
Wenn Sie sich umsehen, gibt es einiges an Informationen über die Systeme, die für einige der beliebtesten kennwortgeschützten Spiele verwendet werden:
Sie können diese für zusätzliche Inspiration nachlesen.
quelle
Diese Spiele haben nur einen Zustand gerettet, den ich glaube. Das Passwort verweist lediglich auf eine zu ladende Ebene. Verwenden Sie einfach ein Wörterbuch für so etwas.
Wenn es ein bisschen komplexer ist als eine bestimmte Waffe oder einen Booster, können Sie den Status in einen kurzen (aber ausreichend langen) Hash-Code verschlüsseln.
Aber ich rate Ihnen dringend, dies nicht zu verwenden. Das Passwort wird sich schnell im Internet verbreiten und bald hatte jeder Ihr Spiel gewonnen.
quelle
Nun, Sie könnten es im Grunde so machen:
Bosse getötet = 7
Anzahl der Münzen = 36
Besitzt Schwert = 0 (Nein)
Besitzt Herz = 1 (Ja)
Aktueller Level = 6
Aktuelle Welt = 9
Gesundheit = 100
Code = 7V36R0A1T6O9A100
Grundsätzlich trennt jeder Buchstabe die Typen
quelle
Während Lösungen wie Josh Petries Character-to-State-System Vorteile haben (geringe Speicherkapazität, funktioniert auf allen Kopien des Spiels), koppeln sie das Spieledesign und das State-System so, dass sie untrennbar mit dem Passwortsystem verbunden sind. Jede Änderung des Passworts, des Status oder des Designs und des gesamten Systems fällt auseinander.
Eine weitaus einfachere Lösung wäre, Ihr Speichersystem wie gewohnt aufzubauen und einfach ein Passwortsystem darüber hinzuzufügen. Dies kann so einfach sein wie das Speichern des Kennworts beim Speichern (möglicherweise als Dateiname) und dessen Überprüfung beim Laden oder so komplex wie die Verwendung einer der vielen Verschlüsselungsbibliotheken (was ziemlich trivial ist).
Es scheint einige Verwirrung um diese Antwort zu geben.
1) Der op einfach nach einem Passwort gefragt hat , dass Lassen Sie uns laden sie ein save ... ist es nicht erforderlich , dass das Passwort sein pariert.
2) Viele Spiele haben heutzutage einen erheblichen Speicherbedarf. Wir haben nur intern ein schnelles Speicher- / Ladesystem erstellt, das 10 MB-Dateien produzierte ... für ein Quizspiel! Das Speichersystem von Josh Petrie ist zwar nur in sehr begrenztem Umfang gültig - sobald das Speichersystem nicht mehr so einfach ist, müssten die Kennwörter eine enorme Länge haben, um alle relevanten Daten zu speichern.
Was passiert zum Beispiel, wenn es 30 Chefs gibt? 20 Erfolge? Sind wir auf halbem Weg durch eine Leistung? Auf welchem Niveau ist er? Wie viele Teile legen wir für Gesundheit, Leben, Münzen, XP beiseite? Was ist, wenn der Schnappschuss nicht zwischen den Levels ist ... sondern auf halbem Weg durch ein Level - die Positionen des Spielers, der Feinde, der Projektile, des zerstörten / veränderten Terrains summieren sich plötzlich zu einer Menge Zustand, der gespeichert werden muss.
Für die Perspektive haben wir unter der Annahme eines 30-stelligen Alphabets und eines 10-stelligen Passworts Informationen im Wert von ungefähr 50 Bits zu speichern. Es ist nicht ungewöhnlich, dass ein Spiel / eine Engine bis zu 320 Bit verwendet, um die Position, Drehung und Skalierung eines einzelnen Objekts zu speichern. Sicher, Sie können alle Arten von Optimierungs-Tricks ausführen, um mit weniger mehr zu erreichen ... aber letztendlich verbrauchen Sie die Zeit, um das Spiel unterhaltsam zu gestalten - eine der schlimmsten Optimierungen, die Sie durchführen können.
quelle