ブラウザ上で動作するゲームのための入力デバイスを、マイクロビットを使って試作し、評価した。

ゲームを開発する環境として、JavaScriptを使ってブラウザ上で動作させるという形が、とても使いやすくなっている。簡単なゲームであれば、かなり手軽に作ることができる。

操作用の入力デバイスとしては、マウスやキーボード、ゲームパッドが使えるような機能があらかじめ用意されている。しかし、せっかくなので自作の入力デバイスを使って操作できるようにしたいと考えた。今回はそのための試作である。

デバイスの接続方法について

ゲームを動作させる環境として考えているのは、主にWindowsのPCである。自作のデバイスとPCとの接続方法は、USBかBluetoothが考えられる。今回はBluetoothの中でもBluetooth Low Energy(以下、BLE)を使うこととした。

BLEは、Web Bluetooth APIを使うことで、JavaScriptで簡単に扱えるようになっている。また、ドライバ等が特に必要ないのも使いやすい点である。

デバイスの概要

今回は、デバイス側にマイクロビットを使うこととした。BLEのライブラリが用意されていて、UART出力と同じ感覚でデータを送信することができる。

試作したデバイス

試作したデバイスは、スライドボリュームの位置を3チャンネル取得するものである。AD変換した結果の値をPCに送信している。既存のライブラリを使用しているため、ソフトはとても簡単なものになっている。

デバイス側のソフト

PC側のソフトについて

PC側のソフトは前述のようにJavaScriptで作っている。ゲーム用のライブラリとして、phina.jsを使用し、BLEの送受信の部分は、Web Bluetooth APIを使用している。

今回は入力デバイスの評価用ソフトとして、操作値をグラフ表示するものを作成した。また、サンプルレートの表示もできるようにした。ここでのサンプルレートは、デバイスが1秒間に何回検出値を送信することができるかを示している。サンプルレートが高いほど、遅延やカクつきが少なく、快適な操作ができる。

操作値のグラフは、各チャンネルのボタンで、表示するチャンネルを切り替えることができる。右側にはResetを押してからの最大検出値と最小検出値を表示している。ボリュームを固定した状態で最大値と最小値を見ていくことで、検出値がノイズなどによってどの程度振れるかを見ることができる。これにより、デバイスの有効分解能がどれくらいあるかを評価する。

評価結果

サンプルレートは毎秒16~17回であった。マイクロビットの処理としては20msの周期(サンプルレートだと50回に相当)にしているつもりなので、おそらくBLEの送信に時間がかかってしまっていると思われる。

快適な操作としてはもう少し高い値が欲しいところであるが、操作に対する追従性は悪くないように感じる。

検出精度については、出力値はとても安定していて、プラスマイナス1の振れに収まっているようである。マイクロビットのAD変換は10ビット、1024段階の分解能となっている。あまり振れが大きいと、有効分解能が低くなってしまうところであるが、今回の結果では、このまま有効分解能として使えると考えて良さそうである。

まとめ

マイクロビットを使った入力デバイスを試作した。毎秒約16回、1024段階のアナログ値検出を3チャンネル入力できるデバイスが試作できた。

今後の方向性として、デバイスを改良しつつ、ゲームの作成を進めていく予定である。

マイクロビットのBLE機能は、サンプルレートを上げるのはなかなか難しいようである。そもそも実装としてもやりにくい部分があるので、別のデバイスを検討していくことは必要だろう。