古いコンソールゲームで使用されているようなシングルプレイヤーゲームのパスワードシステムを作成するにはどうすればよいですか?
たとえば、Mega Man Xは、後で入力して保存を読み込むことができる一連の数字を提供することで作業を節約します。
古いコンソールゲームで使用されているようなシングルプレイヤーゲームのパスワードシステムを作成するにはどうすればよいですか?
たとえば、Mega Man Xは、後で入力して保存を読み込むことができる一連の数字を提供することで作業を節約します。
回答:
まず、ゲームの状態(または保存する状態の側面)を分類します。Mega Manスタイルのゲームの場合、どのエンドレベルのボスを倒したか、エネルギータンクのようなパワーアップの数などを追跡できます。
すべてのデータをビットフィールドにパックします。つまり、各値に適切なビット数を割り当てます。
この例では合計8ビットであるため、1文字でパスワードを表すことができます。実際には、ゲームはより多くの状態を持っている可能性が高いため、より多くの合計ビット、したがってより多くのキャラクターが必要になります。この質問のここおよび他の場所でのコメントで述べたように、このアプローチは、「レトロ」ゲームまたはキャプチャされたゲーム状態のサイズが妥当な他のゲームに有効です。特定のポイントを超えて、状態をエンコードするために必要なパスワードの複雑さが大きすぎることに気付くかもしれません。
パスワードをクラックする偶然の観察の可能性を減らすために、ビットレイアウトを変換して、ダミーのビット(ゲームの状態には影響を与えませんが、すべてのビットを文字として解釈するとパスワードが異なって見えるようにする)を導入できますすべての「killed box X」ビットが互いに隣接しないようにビットをスクランブルするための可逆的なハッシュのような操作によって、対応するシーケンシャルステートパスワードの外観が非常に異なったり、チェックサム値が導入されたりします。
よく調べてみると、人気のあるパスワード付きゲームのいくつかに採用されているシステムに関する情報がかなりあります。
さらにインスピレーションを得るためにそれらを読むことができます。
これらのゲームは、私が信じている状態を保存するだけでした。パスワードはロードするレベルを参照するだけです。このようなものに辞書を使用するだけです。
特定の武器やブースターのように少し複雑な場合は、状態を短い(ただし十分に長い)ハッシュコードに暗号化できます。
ただし、これを使用しないことを強くお勧めします。パスワードはインターネット上で急速に広がり、すぐに誰もがゲームに勝ちました。
Josh Petrieのキャラクターから状態へのシステムのようなソリューションには利点(小さな保存サイズ、ゲームのすべてのコピーで機能します)がありますが、ゲームの設計と状態システムを本質的にパスワードシステムに結合します。パスワード、状態、または設計への変更、およびシステム全体の崩壊。
はるかに簡単な解決策は、通常どおり保存システムを構築し、単純にパスワードシステムを追加することです。これは、保存時にパスワードを保存する(ファイル名を2倍にする)だけで簡単にできますし、ロード時に検証することもできます。
この答えには混乱があるようです。
1)opは単に保存をロードするためのパスワードを要求しました...パスワードが保存である必要はありません。
2)今日の多くのゲームにはかなりの保存容量が必要です。10MBのファイルを生成するクイック保存/読み込みシステムを内部で構築しました...クイズゲーム用です! Josh Petrieの保存システムは有効ですが、ストアシステムが非自明になるとすぐに、すべての関連データを保持するためにパスワードは膨大な長さになる必要があります。
たとえば、30人のボスがいる場合はどうなりますか?20の成果?私たちは成果の中間にいますか?彼のレベルは?私たちは健康、生活、コイン、XPのために何ビットを取っていますか?スナップショットがレベル間の状態ではなく、レベルの中間にある場合-プレイヤー、敵、発射物、破壊/変更された地形の位置が突然保存されなければならない多くの状態になります。
見通しのために、30文字のアルファベットと10文字のパスワードを想定すると、約50ビットの情報を保存できます。ゲーム/エンジンが単一のオブジェクトの位置、回転、スケーリングを保存するためだけに最大320ビットを使用することは珍しくありません。もちろん、あらゆる種類の最適化トリックを実行して、より少ない労力でより多くのことを行うことができます...しかし、最終的には、ゲームを楽しくすることに専念する時間を費やしています。