「駒が消えるマルバツゲーム」を作った話

Unity ゴースト・マルバツゲーム

こんにちは、ゆるめの社会人です。unityroom で ゴースト・マルバツゲームを公開しました。 この記事では、作ろうと思ったきっかけと、ゲームの仕組みについて書きます。

作ろうと思ったきっかけ

三目並べは、ルールを覚えると先手も後手もミスをしなくなり、ほとんど引き分けになってしまいます。 「最後まで勝負がつく三目並べ」にできないかと考えたのがスタートです。

ルールの工夫:駒が消える

自分の駒は最大3個までにして、4個目を置くといちばん古い駒が消えるようにしました。 盤面が埋まらないので引き分けがなくなり、「どの駒が次に消えるか」を読み合うゲームになります。

ここにゲーム画面のスクリーンショット
次に消える駒は薄く表示されます

Unityでの実装

置いた順番をキューで管理する

プレイヤーごとに、置いたマスを Queue に入れておきます。 4個目を置く前に一番古いものを取り出して消すだけで、「古い順に消える」が実現できます。

// プレイヤーごとの「置いたマス」の履歴
private readonly Queue<int>[] history = { new Queue<int>(), new Queue<int>() };
private const int MaxPieces = 3;

void PlacePiece(int player, int cell)
{
    var queue = history[player];
    if (queue.Count >= MaxPieces)
    {
        int oldest = queue.Dequeue();   // 一番古い駒を取り出す
        board[oldest] = Empty;          // 盤面から消す
        cells[oldest].FadeOut();        // 消える演出
    }
    queue.Enqueue(cell);
    board[cell] = player;
}
Queue(キュー)は「先に入れたものから先に出てくる」入れ物です。順番が大事なゲームのしくみと相性が良いです。

次に消える駒を薄くする

queue.Peek() で次に消える駒が分かるので、その駒の透明度を下げて表示しています。 プレイヤーが先を読みやすくなり、遊びやすさが大きく変わりました。

作ってみて分かったこと

次回予告

次の作品も開発中です。公開したらまたここで紹介します。

▶ ゴースト・マルバツゲームを遊ぶ(unityroom)

← 開発日記一覧 ゲームの詳細を見る →