昨日、ビデオゲームをプレイしていたときに突然質問がありましたが、ゲームのセーブメカニズムはどのように実装されていますか?
ほとんどの場合、保存にはゲームのすべてのデータが必要です。この場合、プログラマーは、すべての単一のゲームデータを参照する神オブジェクトを作成する必要はありませんか?
ゲーム開発そのものではなくソフトウェア設計に基づいた回答が欲しいので、ゲーム開発ではなくSOに質問を投稿します。
昨日、ビデオゲームをプレイしていたときに突然質問がありましたが、ゲームのセーブメカニズムはどのように実装されていますか?
ほとんどの場合、保存にはゲームのすべてのデータが必要です。この場合、プログラマーは、すべての単一のゲームデータを参照する神オブジェクトを作成する必要はありませんか?
ゲーム開発そのものではなくソフトウェア設計に基づいた回答が欲しいので、ゲーム開発ではなくSOに質問を投稿します。
覚えておくべきことの1つは、重要なデータのみを保存する必要があるということです。たとえば、これには在庫の内容(おそらく、IDと数量のリスト)、プレーヤーの位置、および主要なクエストビット(禁止された冷蔵庫からエンチャントされたセロリをすでに入手しましたか?)が含まれる場合があります。これは、 Mementoパターンのようなもので実装できますが、実際には、通常、ディスクにシリアル化される構造体(または同等のもの)にすぎません。
レベルローダーは通常、ワールド内のアイテム/エンティティの配置を処理するため、ワールド全体の状態を保存する必要はありません。注意深く見ると、保存を復元することは、世界中のすべての正確な状態を復元する必要はなく、重要な部分だけを復元する必要があることに気付くでしょう。これは、ゲームでよく使用される一種の心理学ハックです。
保存ファイルに関するその他の考慮事項には、保存ファイルの改ざんを検出するためのハッシュまたはチェックサム、またはランタイムRNGがゲームのロード後に同じ一連のイベント/エンティティを作成するために使用するシード値の保存が含まれる場合があります。
基本的に、実際に世界の状態のすべてのビットを保存する必要はありません-プレイヤーが気にかけそうな部分だけです:-)