CASE 07制作事例
手番のないリバーシ、リバーシボンバーの「角の決まり」とは
角だけは、挟めるときしか置けない。爆撃機・戦艦・戦闘機の石の届け方。
海に浮かぶ盤の上を爆撃機が横切りながら石を3つ続けて落とし、遠くの戦艦は山なりの砲弾で、戦闘機はロックオンしたミサイルで石を届ける。無料の3D対戦ゲーム「リバーシボンバー」は、順番を待たずにお互いが同時に石を落とし合うリバーシです。調整の途中、CPUどうしの試合では角が1試合に平均4.0個取られ、4つの角がほぼ毎回すべて埋まっていました。角に決まりを1つ足したあと、その数は平均0.75個まで減っています。

OVERVIEW作品の概要
- 作品名
- リバーシボンバー(REVERSI BOMBER)
- ジャンル
- リアルタイムのリバーシ×フライトシューティング(ひとりでCPU戦/1対1のオンライン対戦)
- 中身
- 機体3種(爆撃機・戦艦・戦闘機)× 盤と時間3通り(6×6で2分・8×8で3分・8×8で5分)× CPUの腕前3段(新兵・熟練・エース)
- 操作
- PCはキーボード(WASD・矢印キー・Q/E)と、Space かクリック。スマホは左のスティック、右のレバーと丸いボタン
- 技術
- three.js(r185)・PeerJS 1.5.5(WebRTC)・Web Audio
- サーバー
- ファイルを配信するだけ。オンライン対戦の入室の仲介だけ PeerJS の公開サーバーを使う
- 制作
- AMIX(企画・3Dモデル・デザイン・プログラム・無線の台詞。HUD の素材は Adobe Stock、BGM と効果音は Audiostock、無線の声は ElevenLabs の音声合成)
01 — PLAN手番を外したリバーシに、角の決まりを1つ足す
元になったのは、1つの HTML ファイルにまとまった試作です。盤はリバーシと同じ8×8で、海の上に浮かべてあります。お互いが同時に動いて空いたマスへ石を落とし、相手の石を縦・横・斜めに挟めば、その列が裏返る。手番はなく、時間切れか盤が埋まった時点で石の多い側が勝ちます。
石の数には限りがあり、爆撃機と戦闘機は約4.5秒、戦艦は5秒に1個ずつ補充されます。石のあるマスや、盤の外の海に落ちた石はそのまま無効。石のあるマスに落ちたときの扱いはコードの中で切りかえられる形になっていて、隣の空いたマスへ滑らせる、相手の石だけ奪う、自分の石も含めて裏返す、という3つの別案も残っています。公開版はリバーシと同じく、何も起きない扱いです。
試作の段階では、四隅の角にもほかのマスと同じように置けました。リバーシの角は一度取れば二度と裏返らない場所です。ところが手番がなく、空いたマスならどこにでも置けるとなると、角は狙って落とすだけで取れてしまいます。CPUどうしを戦わせて数えると、角は1試合に平均4.0個、ほぼ毎回4つとも埋まっていました。
そこで角だけ、本物のリバーシと同じく「置いたときに相手の石を挟める場合」に限りました。挟めない角に落ちた石ははじかれ、照準には赤く LOCKED と出ます。盤の四隅には赤い×が描かれ、挟める並びになった瞬間に緑に光る枠へ変わる。取った角の石には王冠がつき、最後まで裏返りません。CPUにも同じ決まりを守らせて数え直すと、角が取られる数は1試合あたり平均0.75個まで下がりました(どちらも手元のCPU対戦での計測値)。
02 — UNITS爆撃機・戦艦・戦闘機で、石の届き方を変える
自分と相手の機体は、爆撃機・戦艦・戦闘機から別々に選べます。同じ機体どうしでも戦えるので、組み合わせは9通り。目的は同じ「空いたマスに石を置く」でも、3機は届け方がそれぞれ違います。
爆撃機は盤の上を飛び抜けながら、照準を重ねたマスへ石を落とします。続けて押すか長押しすると石が1マスずつずれて3個まで並ぶので、盤の列に沿って飛べば、1回の進入で3マスが埋まる。落ちていく石は、重力のほかに空気の抵抗と、強さの揺らぐ風を受けて飛んでいます。照準が示すのは平均の風で計算した落下点なので、高く飛んで落ちる時間が長いほど、突風のぶんだけ着地がずれやすくなります。
戦艦は浮標で示した円いコースを回り続け、砲塔の左右と仰角を合わせて撃ちます。同じマスへの弾道は低い弾道と高い曲射の2通りがあり、曲射は時間がかかるかわりに、手前に並んだ石を越えて真上近くから落ちます。艦は横に揺れていて、速く走るほど揺れが大きくなる。傾きが水平に近い瞬間を待って撃つと、狙ったマスに届きやすくなります。
戦闘機は3機の中で最も速く、照準を空いたマスに重ね続けるとロックオンし、石をミサイルで撃ちこみます。人が操縦するときのロックオンまでは0.4秒で、ミサイルは外れません。急降下するほど照準は安定しますが、引き起こしが遅れれば海面や盤に突っこんで墜落し、4.5秒は戻れません。
盤を取り合うあいだ、機体どうしも撃ち合っています。戦艦は赤い円に入った飛行機を対空砲火で自動で撃ち、飛行機は前にいる敵を機銃で撃つ。当てられた側は2.5〜4秒のあいだ石を落とせず、その間に相手は空いたマスへ置き放題になります。戦艦どうしの砲撃に限っては、黄色い輪で示す艦橋に直撃させないと砲が止まらず、ほかの所に当てても装甲ではじかれます。
開始の位置は、あとから動かしたものです。「戦闘機は遠いほうが公平」という判断で、戦闘機の出発点を盤の端から380m先から500m先へ下げ、戦艦の最初の装填も1.5秒から3.0秒に延ばしています。CPUで計ると、最初の石が置かれるまでは戦闘機が約7秒、戦艦が約8.4秒、1回で3個落とせる爆撃機が約10〜11秒(中央値)。速い機体ほど遠くから出て、最初の1個がおおむね近い時間に落ちる配置です。
CPUの強さの調整では、一度失敗しています。戦闘機のロックオンにかかる時間を延ばして弱くしようとしたところ、CPUの戦闘機が撃たなくなりました。急降下しながらロックを待つうちに高度が尽き、撃つ前に引き起こして離れてしまうためです。ロックの時間と反応の速さは元に戻し、そのぶんの手加減は石の補充を遅らせる形でつけ直しました。熟練のCPUの戦闘機が戦艦を相手に撃つ数は、3分で10発から16発に増えています。人が操る機体の補充は、どの腕前の相手でも同じ速さです。
艦も飛行機も石も、外部のモデルファイルを読みこまず、すべてコードで組み立てています。試作では箱と円柱を組み合わせた形だったものを、断面を並べて面を張る作り方で船体や胴体、翼を滑らかに作り直し、表面の継ぎ目や汚れも物体の座標から計算して描いています。
スマホでは描画の解像度を画面比1.5倍から始め、重くなると1.25倍、1.0倍へ自動で下げます。操作していないタイトルやメニューは毎秒30コマに落とし、海も軽い版に切りかえました。M1 の Mac でスマホに近い設定にして測ると、爆撃機の場面の GPU の時間は1コマ2.0ミリ秒から1.24ミリ秒に縮んでいます(手元の計測値)。
03 — ONLINE自分の機体だけは、自分の画面で動かす
1対1のオンライン対戦は、「ルームを作る」で出る5文字のコードか招待URLを相手に渡して始めます。通信の部品は しろくろテニス!のものを写し、ID の頭と、受け取るデータの検査表、受信の上限だけを差しかえました。入室の仲介にだけ PeerJS の公開サーバーを使い、試合のデータはブラウザどうしが直接やりとりします。
作品ごとに変わるのは、どちらの画面に何を決めさせるかです。ルームを作った側(黒)の画面が、盤と残り時間、飛んでいるすべての弾と着弾、対空砲火や機銃の当たりを決めます。ただし入った側(白)の機体の動きだけは、白の画面が正本です。旋回や急降下に通信の遅れが出ないよう、白は自分の機体を手元で動かし、その状態を毎秒20回送ります。
白が石を落とした瞬間には、放った位置と速度をそのまま黒へ送ります。黒はその弾を自分の画面で飛ばして着弾を決め、弾の番号を添えて知らせる。白の画面では自分の石がすぐに落ち始め、知らせが届くと、落ちてきたその石がそのまま盤の石になります。海面や盤、敵艦への墜落は白が自分で判定し、機体どうしの衝突は黒の担当です。
スマホで招待URLを送りに別のアプリへ移ったときの切断対策も、しろくろテニス!で直した仕組みをそのまま受け継いでいます。裏に回る直前に「離れます」と知らせ、ロビーなら3分、試合中なら1分は相手を待つ。試合中に片方が裏へ回ると、もう片方の画面も止まって、両方の試合が待ちます。オンライン中は、メニューを開いても試合は止まりません。
公開前の確認では、手元のブラウザ2台をつなぎ、爆撃機と戦艦、戦闘機と爆撃機、戦艦と戦闘機の3組で試合を通して、盤面・残り時間・結果が両方の画面で一致するかを見ました。開始直後に片方が抜けたとき、仲介サーバーとの接続が切れたとき、3人目が入ろうとしたときの動きも、1つずつ確かめています。
CPU戦で聞こえる敵の無線は、オンライン対戦では鳴らしません。相手は実在の人なので、その人が言っていない台詞を、相手の声として流さないための決めごとです。
04 — RADIO管制官の声で戦況を知らせる、103本の無線
対戦中は英語の無線が流れます。味方の管制官が角の確保や逆転、残り時間を知らせ、自分の機体の乗員は投下やロックオンのたびに声を上げる。CPU戦では敵の隊長の回線も混ざり、角を取られて焦る声や、こちらを落として喜ぶ声が入ります。台詞は管制官65本、乗員12本、敵26本の計103本で、管制官と敵の声には短い日本語の字幕がつきます。
声は ElevenLabs の音声合成で作り、AMIX の音声ツール WALKIE FX の航空無線のチャンネルで無線の音質に加工しました。そこから無音の切れ目で1台詞ずつ切り分け、頭に送信の「プツッ」、声の下にごく薄いノイズ、終わりにスケルチの音を足しています。傍受した敵の回線は、味方よりノイズを6dB濃くしました。
管制官の無線は1度に1本で、次まで8秒あけ、1試合に10本ほど。同じ乗員の掛け声は15秒以内にくり返さず、敵の回線は味方の無線が終わってから0.35秒あけて、開始と結果を除けば1試合7本までに抑えています。
対戦の曲は Audiostock のオーケストラ曲2曲で、どちらもくり返し用に作られた曲ではありません。小節の頭と波形の重なりを調べてループの始まりと終わりを決め、2分・3分の試合では81.7秒、5分の試合では28.9秒の区間を、つなぎ目をなじませながらくり返しています。
05 — DATA開かれる道の9割以上が、AMIX GAMES の中から
リバーシボンバーの数字は、来た元の偏りがはっきりしています。DATA CENTRAL の公開データから、割合と順位、倍率だけを取り出しました。
REVERSI BOMBER — PLAY DATA
集計:AMIX GAMES DATA CENTRAL(2026年11月11日までの値)
遊ばれた時間帯1時間ごとの割合・2026年11月5日〜11日
端末11月5日〜11日
- PC81%
- タブレット14%
- スマホ5%
来た元11月5日〜11日
- AMIX の中(一覧など)92%
- 直接(ブックマーク等)6%
- 検索2%
- SNS0%
平日と週末の比は、作品ごとの値が粗く出た10月30日と、祝日の11月3日を除いて数えています。計測は Cloudflare Web Analytics(ページの表示を数える仕組み)。数えているのはゲームのページ(/tl/tool-g-rbomber/)を開いた回数で、遊んだ時間や試合の数は含みません。「直接」はほかのページを経ずに開かれたもの。順位は、web- で始まる一覧のページを除いて数えています。四捨五入のため、合計が100%にならないことがあります。
来た元の92%は AMIX GAMES の一覧などサイトの中からで、直接開かれたのが6%、検索からは2%でした。同じ1対1の対戦がある しろくろテニス!は、記事にした時点で検索からの割合が21%(11月4日〜10日)あり、形はかなり違います。月間の閲覧順位は80本中24位(10月13日〜11月11日)。検索から来る人が少ない理由までは、この数字からは読み取れません。
時間帯は9時台から14時台の6時間に51%が集まり、山は13時台の9.9%。夜の19〜22時は合わせて14%ありました。平日1日あたりの閲覧は、週末の約1.8倍です。
端末は PC が81%、タブレットが14%、スマホが5%。スマホ用のスティックやレバーを用意し、発熱を抑える手直しも重ねた作品ですが、開かれているのは9割以上が PC とタブレットでした。
06 — PERSPECTIVE盤の決まりはそのままに、届け方で遊びを変える
足す決まりは1つにして、本物の側へ寄せる
手番を外し、石を空から落とすところまで変えても、挟めば裏返る、角は裏返らない、というリバーシの約束は残しました。足した決まりは角の1つだけで、それも本物のリバーシの「挟めるときしか置けない」に近づける向きの変更です。地域の地図をマス目に区切って名所を取り合う盤にする、といった置きかえも、決まりが知っている遊びのままなら、最初の説明は1画面で足ります。
同じ目的に、手触りの違う道具を3つ用意する
爆撃機は並べて落とし、戦艦は遠くから石を越えて撃ち、戦闘機は確実に1マスを取る。やることは同じでも届け方が違うので、遊ぶ人は自分の手に合う機体を選べます。展示会やイベントで、ゲームに慣れた人とそうでない人が同じ盤を囲む企画で生かしやすい形です。
1対1の対戦は、どちらの画面に何を任せるかから決める
招待URLだけで始まる1対1は、ゲーム用のサーバーを置かずに作れます。そのかわり、盤や当たりを決める側と、手元で動かす側の分け方は作品ごとに変わる。リバーシボンバーは機体の動きだけを入った側に任せましたが、賞品や順位を懸ける企画なら判定をサーバーに置く設計になり、その費用が加わります。ブラウザゲームの企画と制作の進め方や、AMIX GAMES の作品を使ったタイアップは、それぞれの案内ページで紹介しています。


