ゲームルールを考える:ハイアンドローモックアップ【CFW P2P心理戦ゲーム開発記】 #9

前回まででベースとなるデータベースの実装などが完了したので、今回からはゲーム本体のデザインとモックアップ作成に入っていきます。

当初はターンの制御や実弾・空砲の管理ロジックなど、『Buckshot Roulette(バックショットルーレット)』のシステムを踏襲する予定でした。しかし、そのままコピーしすぎても面白みがないため、メタ的な構造を解析しつつ新規アイデアを模索しました。

その結果、「アイテムが使用できるハイ&ロー」という方向性が面白そうだと感じたので、このコンセプトで開発を進めることにしました。

ゲームルールの構想、市プルに奥深くするため、昔ながらのハイアンドローをベースにアイデアを膨らませました

コアコンセプト:確率操作型ハイ&ロー

通常のハイ&ローも面白いですが、スマホでの対戦ゲームとして考えると、ただの運ゲーになってしまいます。そこで、バックショットルーレットの「アイテムを使って自分に有利な状況を作り出す」という要素を取り入れたゲームルールを設計しました。

基本ルール

  • 基本はハイ&ロー:現在開示されているカードに対し、次に引くカードの数字が「大きいか(High)」「小さいか(Low)」を予想します。
  • 不完全な山札:カードは「1〜10」の10枚。これをシャッフルしたのち、ランダムに3枚を「隠し札(Void)」として除外し、残りの7枚でゲームを行います。

ポイント:確率計算の面白さ

10枚すべてを使う場合、例えば場に「4」が出れば、それより小さいのは「1, 2, 3」の3枚だと確定します。しかし、もし「1, 2, 3」がすべて隠し札(Void)に落ちていた場合、場の「4」は実質的な最小値になります。この「何が除外されているかわからない」という不確実性が、確率推定の駆け引きを生み出します。

スコアリング

  • 連続で予想を当て続けることで、カードの枚数が蓄積されます。
  • 最後まで引き切るか、途中で利確(Fold)した場合、その時点でのカード枚数の合計が高いプレイヤーの勝利となります。

アイテム(ハッキングコマンド)一覧案

確率を推定するゲーム性を保ちつつ、盤面をコントロールするためのアイテム(ハッキングコマンド)を実装します。

盤面・確率ハック系

コマンド名効果戦略・使い方
% Mod (剰余)現在場に出ているカードの数値を「M(法)」とし、残りの山札すべての数値を X % M に変換する。M=2なら「0か1」の完全50%運ゲー空間へ。M=7なら確率が大きく歪む。「いつ使うか」の数学的センスが問われる。
~ Complement (補数反転)現在値および山札の全数値を「11 – X」に反転させる。(最大値が10の場合)現在値が「2」で相手が確実に「High」を押してくる場面で、世界を「9」に反転させてBustに追い込むトラップ。
Garbage Collection現在の山札と隠し札(Void)をすべてシャッフルし直し、新たに3枚をVoidとして除外する。盤面のカウンティング情報や透視情報をすべて「ゴミ」として初期化する、最強の盤面リセット技。

情報アドバンテージ系

コマンド名効果戦略・使い方
Void Scanner (透視鏡)ゲームから除外されている「隠し札(Void)」の3枚を自分だけ確認する。見えない3枚を知ることで、残りの山札の中身を完全に逆算できる。シャッフル系アイテムとの強烈な読み合いを生む。
Peek() (次手透視)次に引かれる山札の先頭1枚を自分だけ確認する。次の1手の勝率を100%にする。ただし「透視をした上でPushした」という行為自体が、相手への強烈なブラフの起点にもなる。

ステート操作系

コマンド名効果戦略・使い方
Try-Catch (失敗無効化)このターンにPushして失敗(Bust)した場合、スコアの全損を防ぎ手番のみ移行する。大量にカードが溜まったポットで、どうしてもさらにPushしたい時の「保険」。

確率を推定するというゲーム性は同じまま、うまくカードゲームに落とし込んでみました。とりあえずこの方向性で作って動かしてみて、適宜修正していくことにします。

モックアップ作成

作るものが決まったので、実際にモックアップを作成していきます。

接続部分は前回の開発で完成していたので、今回のハイ&ロー用のマッチングDBを作り、「接続待機 → 接続後にP2PでJSONデータをやり取りする」というフローを構築します。

簡易ハイアンドローモックアップ

ハイアンドローモックアップ その1

アイテムの実装と挙動

普通のHigh&Lowが遊べるようになったので、次にこのゲームのコアとなるアイテム部分を実装しました。

今回のゲームはP2P通信で実装しているため、アイテム処理のロジック自体はシンプルです。相手(ピア)に対して「アイテムを使用した」というアクションやパラメーターを直接送信し、お互いのクライアント上で共有データ(山札や隠し札)を同期して更新する形をとっています。

山札操作系アイテム

  • Mod(剰余)残りの山札のカードを、今場に出ているカードの数で割った余りにするアイテムです。これを使えば無条件に次のカードはLow(今のカードより小さく)になるので確実に勝てる反面、盤面への影響が極端です。今の数が「9」だとあまり盤面を変えず、「5」くらいなら丁度よく推定可能になり、「2」だと残りが「0か1」になるため完全な運ゲーになります。
  • Invert(反転)山札のカードを、最大数(現在は10を想定)を基準として反転します。例:10 → 1 , 9 → 2 , 5 → 6計算式としては (基準数 + 1) - 元の数 なので、処理は非常に簡単です。
  • Garbage Collection現在の山札と隠し札(3枚)をまとめてシャッフルし、その後、改めて山札と隠し札を組み直します。

情報アドバンテージ系

  • Void Scanner(透視鏡)ゲームから除外されている「隠し札(Void)」の3枚を自分だけ確認します。ちなみに、山札の残り枚数が1枚の状況で使えば、場に出ていないカードとVoidの照らし合わせで最後の1枚を完全に確定させることができます。(例:出ていないカードが 2, 5, 8, 10 の時にVoidをスキャンし「2, 5, 10」が出たら、最後の1枚は「8」で確定)
  • Peek()次に引かれる山札の先頭1枚を自分だけ確認します。もし次が「5」など中途半端な数なら、ここで利確(Fold)して相手のターンに回すというムーブもできるため、リスクコントロールの判断材料として強力です。

ステート操作系

  • Try-Catch通常、High/Lowを外すと相手のターンに移りますが、これを使ったターンは外しても相手にターンが渡りません(当たろうが外そうがアイテムは消費されます)。実装としては、P2Pでアクションを送信(状態同期)する際に、ターンを移行しないためのフラグを立てることで処理しています。

実装結果(モックアップ画面)

テストゲーム中の動画

(テストなので、アイテムは双方全部使えるようになっています)

まとめ

今回はゲームのコアルール設計と、モックアップ上でのアイテム機能の実装を行いました。まだまだ粗削りですが、基本的な構成は決まったので、本実装していこうと思います。

関連記事

CloudFlare Workersセットアップ
Cloudflare Workersの始め方:Wranglerによるローカル環境構築と世界公開の手順
【第2回】データベースを作る
D1データベース作成とテスト環境構築の手順 【CFW P2P心理戦ゲーム開発記】 #2
【第3回】データベーススキーマ設計
D1データベーススキーマの設計:リレーショナルデータベースとは? 【CFW P2P心理戦ゲーム開発記】 #3
【第4回】ユーザデータベース実装
D1データベース実装:ユーザデータ管理 【CFW P2P心理戦ゲーム開発記】 #4

次回予告

次回は、放置していたログイン(OAuth)周りを作り込み、簡易で実装しているゲームハブ部分を作ろうと思います。

次回:認証実装 OAuth(google)【CFW P2P心理戦ゲーム開発記】 #10

ここまで読んでいただきありがとうございます。 では、次の記事で。 lumenHero