前回まででベースとなるデータベースの実装などが完了したので、今回からはゲーム本体のデザインとモックアップ作成に入っていきます。
当初はターンの制御や実弾・空砲の管理ロジックなど、『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