cover image

KnobCon前史(仮)

この記事はぐらぽむ Advent Calendar 9日目の記事です。

自己紹介

どうも初めまして。はしけむ(@kemuduino)です。ぐらぽむとは同じ高校の別分野の同輩で、大学は別です。冗談やろww と思ってRTしたらほんとに始まってしまって、申し訳なくなったので参加しております。

ぐらぽむとかかわりがあったのは、C90でサークル「豆腐屋」としてリリースしたノブ型コントローラー「KnobCon」のときでした。なので、この記事ではKnobConのことについて書こうと思います。
ちなみに、「豆腐屋」は高校の同級生で集まってできたpref.yokohama(横浜県とも呼ばれています(?))からできたサークルです。

KnobCon前史と書きましたが、このページはKnobConができる前にアイデアとして提案したハンドルコントローラのメモを編集したものです。これを提案したからこそKnobConのアイデアができたのかも?なので、アイデアどまりを供養する意味も含めて公開します。
最近だとMSから出たSurface Dialがありますが、あれもKnobConと類似するデバイスですね。
あと、KnobConはワシが育てた!とか言いたいわけでは無いのでご承知ください。


そもそも

・レースゲームなどで使用するハンドルコントローラーは高価。
・前々から自作できないかなと考えていた。
・試しに 「ハンドルコントローラ 自作」 で検索してみたが、想定していたものは全くヒットせず。
・「DIY steering controller」で検索すれば海外での作例は出るが、日本国内で自作している人はいない状況でした。


思いついたきっかけ

いつものようにTwitterを眺めていると、

追い越しもスマートに出来ますよ pic.twitter.com/wXB8AjK6Ze

— Chobi's Atelier (@chobi_luck) 2016年6月10日

マウスと回転椅子を組み合わせて、ハンドルコントローラができている(しかもマウスボタンでウインカーが出せる)ツイートを見つけ、このように簡単なセンサーでハンドルを作ることができれば安価にハンドルコントローラーが実現可能と考えました。
ちなみに、ETS2にはマウスでハンドル操作ができる機能が元からあるようです。


きっかけのきっかけ

ここで少し時間をさかのぼります…。
2015年の年末、C89で@sukukyonがサークル参加申込書を購入し、そのまま申し込んだのでC90サークル参加することになりました。応募時は自作キーボード(絵師向けのショートカットキーなど)を作る予定でした。
それからしばらくして、コミケの当落発表でサークル「豆腐屋」が当選してしまい、この時点でほわーんとキーボード作るのかな~?みたいな状態で、具体的な仕様が定まっていませんでした。そもそも本当にキーボードになるのかも微妙でしたし…。
これはどうしようと思って何か作れないか考えていたところ、上のツイートが流れてきたわけです。
加えて、国内では自作ハンドルコントローラーの前例がないこともあり、これだ!と思いました。


需要について

需要がないものを作っても意味がないので、まずは需要があるか考えました。
まず、コスト的な問題からFFB機能(フォースフィードバック機能、地面からの感触を再現するもの)の実装が不可能であると考えましたが、
 ・GTA5、ETS2、NFSなどの、ハンドルコントローラを想定していないゲームソフト
 ・またはハンコンが使用可能だがFFB機能を持っていないゲームソフト
で使用する目的では十分な性能を発揮できると考えられました。一方で
 ・リアルな動きを売りにしているレースゲームではFFB機能がないため快適な体験が提供しづらい
 ・Unity+Arduinoなどの方法でセンサー値をとれる場合はUnityのアセットなどで直接取るはず
などのデメリットも考えられました。ここから、目的を絞れば需要として成立するのではということになりました。


ソフトウェア技術の調査

簡単なセンサーの値をハンドルの角度として使うという基本的な部分は確定しましたが、ソフトウェア的にどう実現するのかわからなかったのでとりあえず調査。

PS3のコントローラーをPCで使う - シュレ猫のぶろぐ
ラッパーライブラリを使用してXinputコントローラに見せかけることで、PS3コントローラをPCで使用する方法がある。

組込みエンジニアのブログ - スーパーファミコンのコントローラーをUSB化する最強の方法
復刻版サターンパッドUSB化基板Ver6F解説 科学調査レポート
SFC、サターンなどのパッドでは中身を専用基盤に換装することでUSB接続できるようにしているものが売っていた。この例では、専用のICが搭載されているように思えるが、どんな専用ICを使用すればいいのかわからないため、この手法そのままではできない。

[MSF] FightStick (TeensyLC XINPUT Controller) - Zack's Workbench
Arduino Leonardo/Micro as Game Controller/Joystick
GitHub - ArduinoJoystickLibrary
一番下はHIDデバイスとして使用できる機能を持ったArduino向けのライブラリです。これを使ったら一週間ぐらいで完成できそうと思うほどでした…。

ジョイスティックについて
【GTA5 PC】ハンコン、パッドを同時に使用する方法 - おっさんゲーマーどっとねっと
ハンドルの操作はゲームパッドでどの操作に当たるのかも調べました。DXライブラリにおけるハンドルコントローラの扱いは、特別なことをしなくてもパッドの軸として認識されるようです。また、下の記事では、Xinput入力に変換するソフトを使用して、ハンドルコントローラーのアクセル・ブレーキをLRトリガー軸に、ハンドルをスティックX軸に割り当てています。この割り当ては実際のハンコンでも同じなのではないかと思いました。


この調査から、ソフトウェア側解決手段には
案1:Arduino互換機で信号を受け取り、その値を一定範囲に丸めてPCに投げ、これをラッパーライブラリ側でXinput入力に変換する。
案2:入力値を専用ICで受け取り、USB接続でPCに渡す(USB化基盤と同じ方法) IC調達をどうするかが問題
案3:ArduinoにXinput化ライブラリを焼いて、センサから受け取った信号をPC側に渡す
のいずれかが使えると考えました。結論から言えば案3の圧勝です。


ハードウェアについて

さて、ハードウェア側についてですが、この時点では未考察でした…。ある程度調べていたのはこの程度でした。
 ・市販製品の筐体は、プラスチック、金属などを使用しているっぽい。
 ・自動車のインパネを使用した改造型ハンコンの動画では、木材を増設部分の固定に使用していた
 ・センサ入力はポテンショメータ、小型ボリューム、加速度センサ、ロータリーエンコーダなどが考えられる
 ・センサ側を取り換えればハンコン以外の様々なコントローラに対応できる?


自作ハンコンの最終的な仕様

いろいろと調査してみた結果、実現できそうな仕様はこのようになりました。
・ETS2向けのハンドルコントローラー
      - 目的を限定することで要求仕様を下げる

・大径のハンドルをギアを介してノンクリックのロータリーエンコーダに接続
      - ギアで回転を増幅して、ロータリーエンコーダの分解能を細かくできる

・ハンドルはトラックを想定して水平に近い角度にする
      - ハンドル重量で筐体が変形することを回避

・ハンドルを戻す力はトーションばねかラック先に接続したばねで与える
      - FFB無いかわり

・透明アクリル板を積層した筐体 長いボルトで上下を固定
      - ブラシノブから明らかに影響を受けています

・ハンドルは木と金属を組み合わせた複数ピース構造
      - 一体成型は難しい上に会場でかさばる

・回路側はarduino pro miniに接続
      - aitendoで安価に入手可能

・ソフトウェアはxinputライブラリを入れる
      - 既存ライブラリによって開発時間を短縮



その後

この案を豆腐屋メンバーの会議で見せたところ、ハンコンは大きくてかさばる、それにコストがかかりそうということで、ノブコントローラが出ました。それがKnobConの本当の始まりでした。
ノブコントローラーの案はakira_techの発案で、powermateというノブコントローラーから影響を受けているようです。

最後に

 自分はなにかモノを作るとき、ある程度細かく調査して実現可能かどうかを見極めてから製作に入るようにしています。こうすれば開始してから解決困難な問題にぶつかるリスクは下げられるのではと思っています。
akira_techやgurapomuがいろいろ大変だった話とか、基盤の発注した話とか、別の部分はだれか書いてくれるのではと淡く期待しています。他にも、コミケで比村乳業を4周した話はまた別の機会に。
ここまで読んでいただきありがとうございました。
明日は、KnobConではファームを担当していた@sukukyonさんが、@alucky0707さんについて書くようです。どういうことなの…。