ActionScript 3 でローグライク ゲームを作成しようとしています。このジャンルのゲームでは、キャラクターとアイテムが複雑で予測不可能な方法で相互作用するため、ゲーム内の発生の長い連鎖が 1 ターンのスペースで発生する可能性があります。最後の結果の結果であり、前のものが適切にコースを終了する前に発生することがよくあります。このような混乱の最中に、プレイヤーに入力を促す必要があり、他のことが起こる前にすぐに行動する必要があることに気付いたときに、問題が発生するようです。
UI が別のスレッドで実行されていて、プレーヤーが入力を入力でき、現在実行中の関数のスタック全体から戻ることなくそれを受け取ることができる場合、適切な方法は単純に呼び出すことです (関数呼び出し 私はたまたまその中にいる)プレイヤーの入力を待ってからそれに基づいて行動する関数。しかし AS3 では、これは不可能です。戻る前に入力を待機する関数は、プログラムをハングアップさせるだけです。
この種の問題に対して、ユーザーの入力を待ってから作業を再開できるように、操作を細かく分割するのが正しい解決策であると人々は言います。これは素敵で、通常そのような提案で提供される些細な例ではうまく機能しますが、このような場合、予測不可能で、しばしばランダムな出来事が一度に数十の複雑なイベントの連鎖につながる可能性があり、そのどれもが突然必要になる可能性がありますいつでもユーザーの入力を確認できるため、「自分が行っていたことを再開する」という概念は非常に困難な作業のように思えます。
やっていることを突然やめられるように、ゲーム内で発生するすべてのことを、これまでの進行状況など、発生の詳細をすべて記述したデータ構造として保存するしかないのでしょうか。プレイヤーの入力を待ってから、以前の状態を再構築します。どこからでも「get_input」関数を呼び出すだけで好きなように処理できる機能と比較すると、このタスクの面倒さは、私や誰かが AS3 を使用するのを思いとどまらせるのに十分なようです。私は何が欠けていますか?私を狂気にさせない方法はありますか、それとも、AS3 がこの仕事には不適切なツールであるというヒントとしてこれを受け取るべきですか?