こんにちは、ゆるめの社会人です。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() で次に消える駒が分かるので、その駒の透明度を下げて表示しています。
プレイヤーが先を読みやすくなり、遊びやすさが大きく変わりました。
作ってみて分かったこと
- ルールを1つ足すだけで、知っているゲームががらっと変わる
- 「次に何が起きるか」を見せる演出は、遊びやすさに直結する
- (ここに、苦労したこと・テストプレイの感想などを書く)
次回予告
次の作品も開発中です。公開したらまたここで紹介します。