どうやって

このゲームには名前がありません。



ビクターペレビン「ジェネレーションP」



千マイルの道は最初の一歩から始まります。



ラオス





私の前の記事に関して、Habr効果は予想外の方法で働きました。 それについての最初の解説であるNomad1が、本格的な実装を作成したいかどうか尋ねました。 私は、その瞬間、いつものように、自分のことを考え、すぐに彼を理解しませんでした。 もちろん、それは普遍的なゲームエンジンを作成することではなく(その考えに悩まされます)、モバイルプラットフォーム向けのUrゲームの実装を開発することについてでした。 その瞬間、私がどのように役立つかについてはほとんど考えていませんでしたが、私は助けることに同意しました。



もちろん、ZoGに対する私の開発はすべて、ここではまったく役に立ちませんでした。 ZRFは非常に独特な言語であるため、そのソリューションとイディオムはすべてZRF開発者にのみ価値があり、他の誰にも価値がありません(ほとんどの場合、ZRF自体の問題を解決します)。 幸いなことに、アレクセイには既成のフレームワークがすでにあり、ゲームロジックを記録的な速さでプログラミングできました。 私の仕事は、ゲームのルールを検証し、このゲームのAIの原則を開発することでした。



Dmitry Skiryukが提案したルールバージョンを可能な限り正確に再現しようとしました。これは、今日提案されているすべてのゲームの中で(ゲームに関して)最も興味深いと考えているためです。



ルールを思い出させる




あなたの自由に7人の初心者の戦闘機があります。 あなたの仕事は、川を渡って彼らを導き、家に帰ることです。 神は道に沿ってあなたを助けます。



  • 骨の1つに白い色が落ちている場合は、一歩を踏み出すことができます。
  • 2つの白い骨は、どの戦闘機も2ステップ移動できることを意味します。
  • 白い色が3つの骨に落ちた場合、戦闘機のいずれかを3ステップ移動できます。
  • 3つの黒い骨は、4歩前進する権利を与えます。


戦闘機のどれも歩くことができない場合、移動をスキップします。



すべての場所が同じではありません。



これは、イシュタルの門-戦士の愛護です。

ここに滞在すると、あなたは別の動きをする権利があります。



ここでキャンプを設定できます。 キャンプには戦闘機を4人まで含めることができます。

キャンプに少なくとも1人の戦闘機がいる限り、敵はこの場所に入ることができません。



これは聖地です。 敵はここであなたを攻撃することはできませんが、あなたは彼を攻撃することはできません。 この場所に滞在できる戦闘機は4人までです(自分と対戦相手)。 最後に入力した人が最初に退出することを忘れないでください!



この場所を通過した後、初心者の戦闘機は戦士の退役軍人になります。 初心者は戦闘で退役軍人を倒すことはできませんが、退役軍人は初心者を攻撃しません。



ベテランがこの場所にいる間は誰も退役できません。





キャンプを離れると、敵に会います。 戦闘機の1人が殺された場合、別の新人を獲得できます。



7人の戦士は川を渡って家に帰らなければなりません。

敵があなたよりも先に進むべきではありません!



このルールのバリエーションの「ハイライト」の1つは、チップを「裏返す」プロセスです。 プレーヤーが動きの方向に混乱しないように、チップが反転していることを思い出させてください。 通常のチップは、「小さな」ブロックに向かって移動し、そこから反転します。 しかし、チップの「反転」はゲームプレイにも影響します。 同じチップだけが互いに「切り刻む」ことができます。 通常のチップは、上下逆さまのチップを「カット」することはできません。 これにより、ゲームプレイが大幅に多様化されますが、「輻輳」の脅威が生じます。 たとえば、ZoGアプリケーションのデバッグの過程で、次のような状況が発生しました。







これは、Simple Urゲームバリアントのテスト実行中に発生した実際の位置です。このバージョンでは、「アウトレット」以外のボードフィールドには特別なプロパティがありません。 この混雑は簡単に解体できません(リザーブにチップが残っていなければ、ゲームはこれで終了していました)。 プレイヤーがどれだけ多くのポイントを投げても、お互いをブロックしているチップは移動できません。 これが、Dmitryがゲームに特別なフィールドを導入した主な理由だと思います。 フィールドc2およびf2(チェス表記)は、「トラフィック」をオフロードするように設計されています。



これらのフィールドでは、任意の色のチップを互いの上に「列」に構築できます(ただし、4個以下)。 同時に、下のチップは予備に戻りませんが、上のチップがさらに通過するまでブロックされたままになります。 ルールのこの単純な変更は、ゲームプレイに魔法の効果をもたらします。 輻輳はなくなります。 直面したチップは簡単に発散します! しかし、チップの旋削に伴う驚きはこれで終わりではありません。 次の位置を見てください。







Dmitryのルールによると、チップは変換フィールド(白の場合はh1、黒の場合はh3)で上昇するのではなく、通過します! 結果として、白いチップはh3で黒いチップを切り詰めることができません。 しかし、彼女はh2で転倒したブラックチップに簡単にヒットし、移動中に裏返しになります! 実際、このルールはフィールドg1、h1、g3、およびh3を安全にします。 これらのフィールドは、「待ち伏せ」に理想的な場所です。



g2フィールドも安全です(ただし、別の理由によります)。 「目で」このフィールドでは、「コラム」でチップを構築できますが、同じ色のチップのみです! このフィールドは少なくとも1つのチップで占められていますが、敵のチップはそれを入力できません。 b1、b3、d1、d3の同様のフィールドは、ゲームに新しいチップをより効果的に導入するのに役立ちます。



ゲームのもう1つの重要な機能は、「ソケット」のあるフィールドです。これにより、停止したときに追加の動きをすることができます。 これらのフィールドの導入は、ゲームに真のハリケーンキャラクターを与えます。 チップのグループで遊ぶ場合、「ソケットを回る」ために毎回「4」を捨てる必要はありません。 多くの場合、敵に移動する前に2〜3回移動することができます。



私の意見では、少し離れているのは、a2に達した反転チップを「削減」することを許可しないルールです。 このルールの有効性または有用性について長い間議論することができますが、それが機能するという事実は議論の余地のない事実です。 ゲームのテスト実行中に、このルールが有効かどうかによってパーティーの勝者が決定されると、状況が繰り返し発生しました。 また、ゲームに陰謀をもたらすため、それを実現しました。 対戦相手が彼の最後の逆さまのチップをa2に持ってきたとき、彼は私たちが彼に勝つことができるように非常に幸運であるべきです。 このチップをカットすることはできません。相手が「1」になるとすぐにゲームオーバーになります。



このことについて、Urからのゲームのサプライズが終わったと思うなら、あなたは間違っています! なぜ3つの「サイコロ」D2がゲームに使用され、1つのD4ではないのですか? タイプD4 (4面)のゲーム用サイコロは、古代世界に広く普及していました。 ゲームで3つの代わりに1つの「ボーン」が使用されなかったのはなぜですか? これは一見して明らかではありませんが、このようなゲームスキームを使用する場合、スローされるポイントは等しくありません。 ユニットとデュースは、トリプルとフォースよりも3倍頻繁に落ちます。



これはゲームプレイに直接影響します。 相手のキャッチチップから3〜4セルの距離にある位置は、1〜2セルの距離よりもはるかに安全です。 しかし、結局のところ、1つではなくいくつかのチップが私たちを捕まえることができます。さらに、「安全な」フィールドを考慮する必要があります。 一般的に、このゲームは一見すると単純なものではありません。



また、ゲームAIについても説明する必要があります。 プログラムがその人とほぼ同じレベルで再生されることが非常に重要です。 たとえば、ZoGの実装は非常に弱く再生されます。 多くの場合、彼女の「ドライ」に勝つことができます。 彼女と遊ぶことはあまり面白くない。 しかし、プログラムが常に勝つ場合、ユーザーを「追い払う」こともできます。 バランスを維持しようとしました。 ゲームには4つの難易度レベルがあります。 最高レベルでは、ゲームの約半分で1〜2チップのマージンで勝つことができます。 低レベルの難易度は、「カジュアル」に興味があるかもしれません。



最初は、 アルファベータアルゴリズムを使用してAIを実装したかったのですが、すぐにこの考えを捨てました。 動きの生成のランダムな性質には独自の特性があります。 実際、唯一の重要なことは、あなたが(高い確率で)次の動きを「食べられない」ということです。 さらに見ることは採算が取れず、一般に役に立たない。 このゲームは「人工知能」ではなく「人工本能」を必要としませんが、「本能」はかなり複雑です。 私が手に入れた最後の擬似コードは次のとおりです。



ゲームAIの実装
- Segment 1  = 0.5 - level >= 3 - level < 8 -     "",    ,     - level >= 8 -     ""   g2 ,       - Segment 2  = 0.3 - level >= 5 -       ,      -       ,     - level = 4 -     ,    ,     - level >= 8 -      g2   ,   - level >= 9 -     g1  h1,   - level >= 6 -      ,    - level >= 5 -       ,      - level >= 4 -     ,     - Segment 3  = 0.2 - level < 8 - level >= 7 -        ,     - level >= 2 - X ,     - level = 1 -     - level >= 8 - level = 8 -           ,   g2  -      ,   g2  - level = 9 -           ,   g2 ,   g1  h1 -      ,   g2 ,   g1  h1 -   
      
      







現在の位置のさまざまな側面を考慮した9つのゲームレベルが定義されています。 実際、チェスなどのより複雑なゲームでは、そのようなヒューリスティックが動きの列挙の順序を制御します(最初に「最高の」動きを表示するため)。 私たちのゲームはよりシンプルです。 その中で、ヒューリスティックを使用して、「最適な」移動を直接選択できます。 上で言ったように、これはプログラムを人とほぼ同じレベルで再生させるのに十分です。



結果は、「Forgotten Game of Ur」でした。







このゲームは本当に楽しいです! 彼女は、私たちが飲みに行ったり、噛んだりするためだけでなく、お互いに会いに行った時のことを思い出させてくれます。 はい、それから草はより緑で、木はより高かったが、それはポイントではない。 チェスとチェッカーのプレイをほぼ停止しました。 Bridgeをプレイするために家族に行くつもりはありません。 囲Goと将giは私たちのほとんどにとって達成不可能なエキゾチックです。 古いドミノでさえ庭から姿を消しました。 Homo Ludens- 「The Playing Man」はボードゲームを忘れていました。 もちろん、iOSとAndroid向けのゲームを1つだけ開発してもこれは修正されませんが、おそらく、ある程度はボードゲームへの関心を取り戻すのに役立つでしょうか? そう願っています。




All Articles