私はアドベンチャーゲームを計画していますが、ストーリーの進行状況に応じてレベルの動作を実装する正しい方法がわかりません。
私のシングルプレイヤーゲームは、プレイヤーがゲーム内のさまざまなポイントで町の人々と対話しなければならない巨大な世界を特徴としています。ただし、ストーリーの進行状況に応じて、プレイヤーにはさまざまなものが提示されます。たとえば、ギルドリーダーは町の広場から市内のさまざまな場所に場所を変更します。ドアは、特定のルーチンを終了した後の1日の特定の時間にのみロック解除されます。特定のマイルストーンに到達した後にのみ、異なるスクリーン/トリガーイベントが発生します。
私は最初にswitch {}ステートメントを使用してNPCの発言内容または検索対象を決定し、グローバルgame_state変数の状態を確認した後にのみクエストの目的を相互作用可能にすることを考えました。しかし、オブジェクトの動作を変更するために、さまざまなゲームの状態やスイッチケースにすぐに出くわすことに気付きました。そのswitchステートメントはデバッグするのも非常に難しく、レベルエディターで使用するのも難しいかもしれません。
したがって、複数の状態を持つ単一のオブジェクトを持つのではなく、単一の状態を持つ同じオブジェクトの複数のインスタンスを持つ必要があると考えました。そうすれば、レベルエディターのようなものを使用する場合、NPCのインスタンスを、彼が登場する可能性のあるすべての異なる場所に配置することができます。また、会話状態ごとのインスタンスも配置できます。しかし、それは、レベルの周りに浮かぶ非アクティブで不可視のゲームオブジェクトがたくさんあることを意味します。これは、メモリの問題か、レベルエディタで見づらいかもしれません。
または、単純に、ゲームの状態ごとに同一だが別々のレベルを作成します。これは最もクリーンでバグのない方法ですが、レベルの各バージョンが実際に同一であることを確認する大規模な手動作業のように感じます。
私のすべての方法は非常に非効率だと感じているので、私の質問を要約すると、ストーリーの進行状況に応じてレベルの動作を実装するためのより良いまたは標準化された方法はありますか?
PS:私はまだレベルエディターを持っていません-JME SDKのようなものを使用するか、自分で作成することを考えています。