AIでマッチ3パズルゲームを作るには、1手(ムーブ)の定義と、ゲームが目標達成を確認するタイミングを明確にしてください。隣接タイルの交換は1手を消費し、複数の消去を引き起こす可能性があります。プレイヤーの手が尽きたかどうかを判断する前に、その消去が完了するのを待ってください。実用的な初期ボードは、2回目の消去が勝敗を分けるようなものです。
Tile Conservatoryは、赤い葉を6枚消去することを目標とする、1手限りの架空のパズルです。固定されたボードとリフィル(補充)シーケンスを使用して、交換、重力、目標カウンター、および最終チェックの順序を確認してください。

交換が合法となる条件を決定してください
隣接するセルが辺を共有している場合、2つのピースの位置を入れ替えることを許可します。試行交換後、行と列をスキャンして、3つ以上の同一ピースの連続(ラン)を探します。ランが見つからない場合は、両方のピースを元の位置に戻し、手数と目標進捗を元の状態に復元します。ロールバックを表示し、プレイヤーが交換が拒否されたことを認識できるようにします。
交換によってランが形成された場合、1手消費し、新しい交換をロックします。いずれかのランをクリアする前に、すべてのランに含まれるセルをマークします。ピースが水平ランと垂直ランの両方に属する場合、そのセルは一度だけクリアし、カウントします。その後、残ったピースを落下させ、空いたスペースを上部から補充し、再度スキャンします。その落下や補充によって新たに形成されたマッチは、カスケードです。カスケードは追加の手数を消費しません。

2回のクリアにおける最終手を追跡する
4x4のボードを使用します。行は上から下へ、列は左から右へ、どちらも1から始まります。Rは赤い葉、Tはティール色の波、Gは金色の太陽、Vはバイオレット色の鐘です。1手目、クリアされた葉は0枚、既存のマッチなしで開始します。
初期ボード
G T T V
T G R R
R R V R
V G T G
まず r1c1 と r1c2 の交換を試みてください。上段は T G T V となり、行も列もマッチしません。試行を元に戻します。次のスワップを試す前に、初期ボード、1手目、クリア0枚の状態がすべて復元されていることを確認してください。
次に、r3c3 と r3c4 を交換します。3行目は R R R V となり、最初の3つのセルがクリアされます。それらの上のタイルは1行下へ落ちます。1列目から3列目までのリフィルキューは、使用順に R,T、R,R、R,T です。この手順では、4列目からピースを引きません。重力によって1列に複数の穴ができた場合、その列のキューの次のピースを、最も下の空セルに配置します。
| ステージ | 行(上から順) | クリアされたリーフ | 残り手数 |
|---|---|---|---|
| スワップが受理されました(クリア前) | GTTV / TGRR / RRRV / VGTG | 0 | 0 |
| 1回目のクリアと補充 | RRRV / GTTR / TGRV / VGTG | 3 | 0 |
| 2回目のクリアと補充 | TRTV / GTTR / TGRV / VGTG | 6 | 0 |
1回目の補充後、上部に並んだ3つの新しい葉が1列を形成します。これらはカスケードによって削除された場合のみカウントされます。2回目の補充後、ボードにはマッチはありません。ここで目標を確認してください。6つの葉がクリアされたため、残り手数がゼロであってもパズルは勝利で終了します。

AIにボードと操作順序を渡す
SEELEでは、書面によるアイデアからゲームプロジェクトを開始できます。プロジェクトには小さなボード、名前付きのピース形状、および正確な解決順序を指定してください。最初のビジュアルは一目で読み取れるほどシンプルに保ち、固定リフィルを使用して、すべてのクリア後にボード状態を比較してください。
ブラウザで動作する小さなオリジナルパズル「Tile Conservatory」を作成してください。
異なる色を持つ4つのピース形状を使用します:R 赤い葉、T ティール色の波、G 金色の太陽、V 紫のベル。1手から開始し、6枚の赤い葉をクリアすることを目標とします。残り手数、目標進捗、およびリスタートを表示します。
このボードを使用します(上から下へ):
GTTV
TGRR
RRVR
VGTG
プレイヤーが2つの辺で隣接するセルを選択できるようにします。スワップは、3つ以上の同一ピースの行または列の連続を作成する場合にのみ受理されます。
無効なスワップの場合、ボードを元に戻し、どちらのカウンターも変更しません。
受理されたスワップの場合、1手を引き、入力をロックします。
すべてのマッチしたセルを見つけ、それぞれを1回カウントし、まとめてクリアします。
赤い葉が削除された場合のみ、葉のカウンターに追加します。
残ったピースを各列で真下に降下させます。
このリフィルキューを抽出順序で使用します:c1 R,T、c2 R,R、c3 R,T。
まず、影響を受けた各列の最も下の空きセルに描画します。
マッチがなくなるまで、クリア、降下、リフィルを繰り返します。
まず葉の目標を確認し、次に残り手数がゼロかどうかを確認します。
確定した結果まで入力をロックしたままにします。特殊なタイルはありません。
リスタートは、ボード、手数、葉のカウンター、キュー、および入力を復元します。
実行されたスワップを決定論的なフィクスチャとして使用してください。異なる受理されたスワップを試す場合は、影響を受ける列に十分なスクリプト付きピースを与え、その経路を別途追跡してください。フィクスチャテスト中にリフィルキューが尽きた場合は、意図的に拡張できるように、列とクリアステップを報告してください。
カスケードを接続する前に、スワップとロールバックを構築してください。ボードが3枚の葉をクリアした後に停止した場合、AIに表からの最初のリフィルスナップショットを与え、重力後にマッチ検出を再実行するように依頼してください。ブリーフからプレイ可能へのテストガイドでは、特定の不一致を焦点を絞った修正依頼に変換する方法を示しています。
目標を変更してのみ失敗ケースを確認する
リスタートし、目標を6枚の葉から7枚の葉に引き上げて、両方のスワップを繰り返してください。ボード、リフィル、および手数予算は固定したままにします。有効なスワップは依然として最後の1手を使い、2ラウンドで6枚の葉をクリアします。最終スキャン後、レベルは1枚の葉がまだ必要で敗北であることを示すべきです。この期待値はこの経路に適用されます。
両方のバージョンで早期の敗北メッセージに注意してください。これは、ボードが安定する前に手数チェックが実行されている可能性があることを意味します。これらのチェックを使用して、失敗を絞り込んでください。
| テストアクション | 期待される動作 |
|---|---|
| 無効なペア、r1c1 と r1c2 をスワップする | 両方のピースが元に戻ります。手数は1のまま、進捗は0のままです。 |
| 最初のリフィル中に別のスワップを試す | 入力は無視されます。ボードは上記の2段階のクリアに従います。 |
| 最後のリフィルを待つ | 6枚の葉の目標は勝利を示します。7枚の葉の目標はこの経路で1枚の葉がまだ必要で敗北を示します。 |
| どちらの結果の後でもリスタートする | 元のボードが1手、クリアされた葉0枚、リフィルキューが開始状態に戻ります。 |
よくある質問
最初のバージョンではどのマッチをカウントすべきですか?
このデザインでは、3つ以上の一致するピースの水平および垂直の連続をカウントします。連続が交差する場合、何かを削除する前に、その座標を1つのセットに集めてください。これにより、交差するタイルが2回カウントされるのを防ぎます。斜めのルールや特殊なピースは、パズルに合致する場合、後のバージョンに保存してください。
無効なスワップは手数を消費すべきですか?
この最初のバージョンでは、コストなしに保ってください。スワップが逆転する様子を表示し、カウンターを変更しないことで、プレイヤーが結果とルールを関連付けられるようにします。連続を作らない隣接ペアだけでなく、辺を共有しないセルのペアでもテストしてください。
カスケードは目標にどのようにカウントされますか?
受理された手によって引き起こされたクリアでピースが消えた場合、目標ピースを追加します。リフィルはボードにピースを置くだけです。結果を決定するにはボードが安定するまで待機し、カスケードが最後の1手で目標を完了できるようにします。
固定リフィルをランダムなピースに置き換えるべきなのはいつですか?
期待されるクリア、降下、および結果を再現できるまで、固定リフィルを維持してください。ランダムなピースをテストする場合は、デバッグ用に固定ケースを保持してください。合法なスワップがないボードを確認し、長いレベルでランダムリフィルに依存する前に、それらをどのように処理するかを決定してください。
手で読み取れるボードから始める
目標ピース、短い手数制限、そして最後まで追跡できる1つのスワップを選択してください。これらのルールから開始するためにSEELE AI Puzzle Game Makerを使用してください。各変更後に同じボードを実行し、新しいアニメーション、ピース、または目標が基礎となるパズルを変更したかどうかを判断できるようにしてください。


