だから私はあなたの質問から理解しています-あなたのクリケットマネージャーのゲームは、プレーヤーの統計(ボウラーのスキル/経験、打者のスキル/経験、フィールディング/ウィケットキーピングの統計など)と他の関連する変数に応じてボールごとに試合をシミュレートします。私の理解では、これはクリケットゲームの視覚的表現というよりもアルゴリズムエンジンになります。
さて、あなたの質問に答えてください。まず第一に、あなたがFSMを正しい方法で見ているとは思いません。FSMは、その存続期間のどの時点でも、実行可能な多くの状態の1つになるように設計されたコードです。各状態には、通常、異なる更新ルーチンがあります(それがポイントです)。また、各状態は、事前定義されたトリガー/イベントで別の状態に遷移できます。理解する必要があるのは、状態が同じエンティティに対して異なる動作を実装することです。
現在、「ほとんどのゲームはステートマシンとして実装できます」-「ステートマシン」ではなく、ステートマシンのネスト全体です。ゲーム内のいくつかのマネージャークラス、レンダラー、ゲームプレイオブジェクト、メニューシステム、多かれ少なかれすべてが独自のステートマシンで動作します。この例の目的のために、ゲームキャラクター、たとえばボクサーを想像してみてください。'CBoxer'(?)クラスにあるいくつかの状態は、'Blocking'、'TakingHit'、'Dodge'、RightUpper'、'LeftHook'などになります。
ただし、FSMは設計構造であり、目前の問題の解決策を想定する方法であることに注意してください。必ずしも使用する必要はありません。ステートマシンなしで完全なゲームを作ることができます(私は思う:))。しかし、FSMを使用すると、コードデザインが非常に直感的でわかりやすくなり、適切なサイズのプロジェクトでコードを見つけるのは率直に言って困難です。
動作中のFSMのコードサンプルをいくつか見てみることをお勧めします。その背後にあるアイデアを理解すると、どこでもそれらを使用していることに気付くでしょう:)