tande lab.

サバゲでリアルにドミネーションをやりたい

はじめに

みなさま、ドミネーションってご存じでしょうか。BattleFieldやCallOfDutyなどのFPSゲームのルールの一つで、以下のようなものです。

  • 敵味方の2チームに分かれる
  • フィールドに3つの拠点がある
  • 拠点に一定時間近接することで、その拠点を制圧して自チームのものに出来る
  • ゲーム時間内(もしくはどちらかのチームの占拠時間が規定時間に達したとき)に、最も長く拠点を制圧していたチームの勝ち

陣取りゲームっぽい感じです。

これをサバイバルゲームでリアルに行うことがあるのですが、身近にあるものでやると、だいたい以下のような感じになってしまいます。

  • 拠点の制圧を、物(紙コップやマーカーなど)を裏返して自チーム色にすることで代用する
  • ゲームの勝敗は、ゲーム終了時点の拠点の状態で決める

なんとなく再現は出来ているのですが、大きな問題があります。それは、ゲーム終了時点の状態で勝敗が決まるので、ゲーム序盤、中盤にがんばってもあまり意味が無いということ。結局最後の1分や30秒で勝負が決まってしまいます。

ちゃんとやるには、それぞれの拠点の制圧時間を計測する仕組みが必要です。また、複数人で拠点に近づくことで、制圧に必要な時間が短くなるような仕組みも欲しいです。

というわけで作ってみました。

つくったもの

こんな構成です。

  • タグ:
    • 赤と黄色のチーム色で分けられていて、敵味方全員が所持するもの
  • 子機(拠点):
    • 一定範囲内にタグが近づくとゲージが溜まっていき、タグを所有しているチームが制圧出来る。
    • 制圧時間をカウントして、親機に伝える
  • 親機:
    • 全ての子機からの情報を集約して、ゲーム状況をクラウド(Blynk)に送信する
  • Blynk App:
    • 親機が集約したゲーム状況を確認、ゲーム開始、終了の操作を行う

タグと子機

タグはBLE Beaconそのもので、子機はBLEで近くのタグを検出します。

子機のサイズ感はこれくらいです。

無印良品のアクリルケース に収まるように基板を作り、内部のフレームは3Dプリンタで出力しています。

親機

親機はRaspberry Pi Zeroと920MHz帯の特定小電力無線モジュールIM920をケースに入れています。
子機とはこのIM920で通信します。BLEの2.4GHz帯と被らず、消費電力が少なそうでよく飛びそう、という基準で選んでみました。

親機はRasPiZeroのWifiでスマホのテザリングにぶら下がってBlynkに接続します。同時にAWS IoTにも繋いでデータを投げていますが、こちらは投げっぱなしで使っていません。

Blynk App

BlynkはIoTのMBaaS的なサービスで、デバイスから上げた情報を保管し、それを可視化するモバイルアプリを提供してくれます。
今回対応した物は

  • 戦況の可視化
    • 拠点毎のリアルタイムな制圧チーム
    • チーム毎の得点(延べ制圧時間)
  • ゲームの操作
    • ゲーム開始
    • ゲーム終了

です。

実戦投入

実際にゲームで2回ほど使ってみました。
全体的にはちゃんと使えるものの、タグのバッテリ残量や環境によって、子機からの検出範囲がバラついてしまうところがいまひとつな感じです。
タグの色情報がBLE経由で通知されないので、個々のアドレスと色を子機にハードコードしておく必要があり、タグの追加が簡単にできないところも要改善点です。

今後に続きます。




0 comments
Submit comment