こんにちは、lumenHeroです。
前々から「Cloudflare Workers を使って、何か面白いリアルタイムな Web アプリを作ってみたいな……」とずっと思っていました。サーバーレスで、エッジで動き、個人開発ならほぼ無料で無限のスケールを秘めている。あの爆速の開発体験にずっと憧れていました。
そんな折、ちょうど「人が集まるイベント(学祭)で展示するゲームを開発する」という最高の機会が巡ってきました。
「これは Workers を実戦投入するしかない!」
そう決意したものの、限られた開発期間とイベントの特性を考えると、クリアすべき課題が山ほどありました。今回は、そんな数々のボツ案を経て、シンプルながら奥深いゲームになりそう?な案にまとめてきたのでそれを公開しようと思います。

どんなゲームにする? リアルタイム対戦という縛りと「スマホ格差」
イベントで展示する以上、ギャラリーもプレイヤーも一番盛り上がるのは「リアルタイムの対戦ゲーム」です。
しかし、ここで大きな問題が立ちはだかりました。 対戦相手同士が「スマホからアクセスする人」と「PCからアクセスする人」だった場合、操作速度の格差がエグいことになるという点です。
例えば、タイピング速度やエイム(クリック精度)が勝敗に直結するアクションゲームだと、PC勢が圧倒的に有利になってしまい、カジュアルに遊ぶスマホ勢が蹂躙されてしまいます。これでは学祭のブースで誰も幸せになりません。
そこで、以下のようなアイデアをいろいろと出してみました。
- ボツ案1:『インストールRTA(規約同意ゲーム)』 画面に次々と現れる悪質な規約の罠(動く同意ボタンなど)を潜り抜けるゲーム。面白いが、やはりスマホのタップとPCのクリックの精度格差を埋めるのが難しく断念。
- ボツ案2:『メモリマージパズル(スイカゲーム風データ版)』 1bitと1bitを合わせて1Byteにするようなマージゲーム。対戦として盛り上げるには、お邪魔ブロックの応酬など少しロジックが肥大化しそうなので一旦キープ。
――このように、アクション性や複雑なロジックはデバイス格差がある為排除し、できる限り公平なプレイ環境を提供できるゲーム性が必要です。
操作の格差がゼロで、情報系の学生も教員も、あるいは一般の来場者も「純粋なプレイヤースキルと脳みそ」だけで互角に殴り合えるゲーム。……そんな都合の良いゲーム性があるでしょうか?
ありました。「確率の計算」と「心理戦(読み合い)」に全振りしたターン制ゲームです。
脳汁の出る心理戦:『Buckshot Roulette』をP2Pでやりたい

▲ 開発初期に脳内で描いていたゲームUIのイメージ(ペイントでサクッと作成)。
そこで思い至ったのが、少し前に世界中で大流行したインディーゲーム『Buckshot Roulette(バックショット・ルーレット)』のシステムをベースにした、1対1の対人戦ゲームです。
【基本ルール】 ディーラーから提示される「実弾」と「空砲」の数(山札)を確認。 交互にショットガンを「相手」か「自分(空砲ならもう1ターン)」に撃ち合う。 道中、一発逆転を狙える様々な効果を持つ「アイテム」を駆使する。
これをP2P(WebRTC)通信でリアルタイムに対戦できるようにアレンジします。 ターン制のコマンド選択式にすれば、スマホとPCの操作格差は完全にゼロになります。
さらに、ここに「思考時間タイマー」を導入します。 制限時間内に選択できなければ、強制的にルーレットが回り、自分か相手のどちらかに勝手に発砲される緊迫感。
「実弾は残り2発、空砲は1発。相手の手元には手錠(1ターンパス)がある。ここで自分を撃つか、相手を撃つか、あるいは……」
確率の期待値を計算し、アイテムのシナジーを組み、相手の裏をかく。情報系が一番大好きな「脳汁が出るタイプの論理×心理ゲーム」の方向性がここに決定しました。
プロジェクト名は、デジタル要素を絡めて logic-buckshot-backend と命名しました。
Cloudflare Workers を選んだ技術的な勝算
このゲーム、実は Cloudflare Workers の特性と恐ろしいほど相性が良いのです。
- 通信コストがほぼゼロ(超低コスト) WebRTC(P2P)を使うため、一度マッチングしてしまえば、ゲーム中の「アイテムを使った」「発砲した」という最小限のデータ(数十バイト)をプレイヤー間で直接やり取りするだけ。サーバーに負荷がほぼかかりません。
- 絶対にチートできない安全設計 「今、銃の中に実弾と空砲がどういう順番で入っているか」という核心的なデータは、クライアント(ブラウザ)側には一切持たせません。Cloudflare Workers の Durable Objects(状態維持機能) を使い、サーバー側のメモリ内で安全に山札をシャッフル・管理します。
これなら、無料枠の範囲内でも何万人もの対戦を余裕で捌けるはずです。
開発の土台(環境)は準備万端!
方向性が決まれば、あとは手を動かすだけ。 まずは開発のスタートラインとして、Cloudflare の本番環境へのデプロイと、手元の PC でのローカル開発エミュレータ(Wrangler)のセットアップまでをサクッと完了させました。
環境構築の具体的な手順については、前回の記事で「目的別テンプレートの選び方」や「AIコーディングツール用の設定(AGENTS.md)」も含めて汎用的にまとめていますので、Workers に触ってみたい方はぜひ参考にしてみてください!
Cloudflare Workersの始め方:Wranglerによるローカル環境構築と世界公開の手順
次回予告:D1データベース作成とテスト環境構築の手順
ベースとなる環境(logic-buckshot-backend)は無事に世界へデプロイできました。
次回は、Durable Objectsを使って同じ部屋に引き合わせる(マッチング&シグナリング)やゲーム本体のデプロイを行うための開発環境の整備を行います。
お楽しみに!
次回:D1データベース作成とテスト環境構築の手順
D1データベース作成とテスト環境構築の手順 【CFW P2P心理戦ゲーム開発記】 #2
ここまで読んでいただきありがとうございます。
では、次の記事で。 lumenHero
関連記事
CloudFlare Workersセットアップ
Cloudflare Workersの始め方:Wranglerによるローカル環境構築と世界公開の手順
もう一つの選択肢:VPSで自由なゲームサーバー構築
本連載ではCloudflare Workersを活用したP2P実装を進めていますが、もし環境の制約がなく、
「もっと使い慣れた言語で自由にゲームサーバーを立てたい」
「WebSocketなどの常駐プロセスをガッツリ回したい」
という場合は、VPS上に独自のシグナリングサーバーを構築するのも強力な正攻法です。
「テキストを読んで知識として知っていること」と、「実際に手元でLinuxサーバー(Ubuntuなど)を叩いて構築した経験」とでは、バックエンドへの理解の深さに大きな差が生まれます。
最近の海外サービスは「最初は無料・格安で普及させ、定着したタイミングで一気に値上げや制限強化に踏み切る」という戦略が多く、個人開発での新規参入や継続運用のハードルが高くなりがちです。
その点、日本の老舗である
さくらのインターネット(さくらのVPS)
は価格面でも運用の面でも圧倒的な安定感があり、個人的にとても信頼して推しています。
「海外サービスの急な仕様変更に振り回されたくない」「自分のインフラ拠点を国内に1つ持っておきたい」という方は、ぜひ一度触ってみてください!