2013-09-29

Super Meat Boyの作者Tommy RefenesがSteamコントローラーを体験

Yzc2NjQ1MzQyNDU2MjMyMz - My time with the Steam Controller

あのクソ難しい、往年の悪魔城ドラキュラやスーパーマリオブラザーズを彷彿とさせる、死んで覚えるプラットフォームゲーム、Super Meat Boyの作者の一人、Tommy Refenesが、ValveでSteam Controllerの試作機を体験した感想を書いている。

Steamコントローラーの体験

俺がSuper Meat Boyを開発していたとき、俺は正しいコントロールが、ゲームの可否を決めるのだということを分かっていた。俺は、ゲームのコントロールには、うるさい男だ。もし、ゲームのコントロールが悪ければそれまで、誰か作ったかとか内容とかはどうでもいい、俺はそんなものをプレイし続けることはない。俺はよく、Super Meat Boyの動きとか摩擦だとか空気抵抗の物理の計算式についてたずねられる。実際のところ、あれには計算式などというものは存在しない。単にどデカいハックの塊だ。俺はSMBのコントロールを完璧にするために二ヶ月を費やした。あの空中で向きを変えた時に生じる不思議な「摩擦」から、壁から離れた時の200ミリ秒のディレイまですべて、俺がプレイした時の感覚で決められている。計算式には、物理なんてものは使われてない。100%、感覚によるものだ。

俺は、ハードウェアにも、うるさい男だ。Shannonが買ってきてくれたRazerコントローラーとやらは、ボタンのクリック感がおかしい。俺はあんなものでプレイするのは御免だ。俺はPS3が出た当初、プレイするのがイヤだった。なぜなら、SixAxisにはDualShockがなかったし、それに軽すぎたからだ。俺はDualShock3 SixAxisコントローラーが出てくるまで、まともにPS3のゲームをプレイすることはできなかった。俺はOuyaのコントローラーなど元から御免だ。というのも、あのコントローラーには大勢、レイテンシーの問題があると言っているし、俺もその問題に確実に悩まされるだろうから。

ボタンを押したら、押した感覚に満足し、画面にそのまま反映されなければならない。そういうわけで諸君、俺は自他共に認める、コントローラーにはうるさい男だ。

Steamコントローラー(その正式名称がどうなるにせよ)は奇妙だ。コントローラーを握った時の通常の親指の位置に、画像でみる通り、ふたつの丸いトラックパッドが取り付けてある。中央には、A,B,X,Yボタンで囲まれた将来的にはタッチスクリーンディスプレイなると俺は聞かされた箇所がある。中央にあるタッチパッド兼スクリーンは有効にされていなかったので、俺にはなんとも言うことはできない。タッチスクリーンを囲むA,B,X,Yボタンは、どうやらいわゆる「バック」的な設定のボタンらしい。これはA,B,X,Yというのよりも、何らかの機能を行う追加的なボタンというべきだろう。ゲームのアクションボタンとしては使うことはない。メインの入力方法は、左右の丸いパッドだ。

コントローラーの上部には、標準的なLRバンパーとLRトリガーがあって、これは期待通りに動く。コントローラーの背面には、ふたつのトリガーがついていて、指で自然に押すことができるが、それほどセンシティブではないので、単にコントローラーを握るだけで誤爆することはない。

俺の使ったコントローラーは、3Dプリントされた試作品だった。手のひらで握る部分は、XBox 360コントローラーよりは分厚かった。重さは同じぐらいだ。俺の感覚では、コントローラーは重すぎるという事も軽すぎるという事もなかった。コントローラーの厚みには気がついたが、俺が最近プレイしたGTA5のPS3コントローラーや、PCゲームに使う360コントローラーに比べれば分厚いというぐらいだ。厚みは気にならなかった。

コントローラーに馴染んだところで、俺はMeat Boyをプレイした。俺は手で覚えた感覚にまかせてプレイしたので、高度なテクニックも使った(壁スライド、ジャンプ高度カーブ等)。当初、俺は重大なラグに気がついた。そして、「クソ、俺はValveの連中に、このコントローラーはラグくてクソだって言わなきゃな」と考えた。Valveの連中が言うには、レイテンシーはとても低いのだという。そこで俺は、テレビが低レイテンシーの「ゲームモード」になっておらず、素早い反射神経を要求されるゲームがプレイ不可能なのだろうと考えた。実際その通りで、テレビの設定を変えて、ゲームモードにしてから、本当の戦いが始まった。

Valveの連中による設定は単純だった。左の円パッドは方向ボタン、右のは馬鹿でかいジャンプボタン。タッチパッドとタッチスクリーンにおける問題は、ボタンの上に単に指を置いているのか、それもと押しているのか、わからないという事だ。Valveはこの問題を、サークルパッドが押されたら、振動フィードバックを返すことで解決を図ろうとしていた。俺の試用中、振動フィードバックは確かに少々は役に立ったが、問題を解決するほどではなかった。

円パッドはタッチを登録された入力に変換するよう設定されていたが、プレスの感覚が妙だった。その理由は、タッチとプレスが両方とも入力に設定されていたからだ。パッドをプレスすることでMeat Boyを動かすことができるが、単に親指をパッドの上においただけでも動いてしまうのだ。これは、そう頻繁には起こらないものの、気がつくほどは多く発生した。この問題を指摘すると、あるエンジニアが(名前忘れちゃってスマン、俺、人の名前覚えるの苦手なんだ。マジな話、俺はよく元カノのLindsayじゃなくてJessicaと言い間違えるんだ。Jessicaってのは俺の姉妹の名前なんだ。俺はただ単に人の名前を覚えるのが苦手なだけなんだ。俺は顔とか服とかなら思い出せて、警察の絵描きに似顔絵を作成させたら、2分ぐらいで犯人を捕まえられるぐらいの記憶力は持ってるんだが、名前だけはどうもな)デスクに行き、プレスだけに反応するよう、ファームウェアを書き換えた。その後は、コントローラーはコントローラーらしく感じられた。方向ボタンを押すのは自然に感じられるようになり、コントロールの感覚がつかめるようになった。

物理的なボタンがないことの欠点としては、親指に何かしらボタンを押していることを感じさせる触角反応が必要になるということだ。俺はエンジニアとこの問題について話していたんだが、わずかに感じられるほどだが、マウスやトラックパッドモードでもそれほど煩わしくはない、小さな突起を配列するというアイディアが浮かんだ。Valveの連中はこのアイディアを以前思いついていたそうだが、俺の使っているコントローラーにはそのような仕組みはなかった。俺は連中に、そういうものがぜひとも必要だと力説した。俺の感想の結果から、連中は取り入れるかもしれない。そういうわけで、俺に感謝しな、ValveとValveユーザー。

ボタン設定は、SMBには十分よく機能した。俺は問題なくSalt factoryまで進められた。俺はC.H.A.Dが攻撃する前に鍵をゲットすることもできた。hospitalの二面のbandaidを、以下の動画のようにスピードランすることもできた(だが、俺はいつもまっすぐ落ちるので、bandaidを待つことはないのだが)。http://www.youtube.com/watch?feature=player_detailpage&v=JHJsnXRb_Es#t=1392

俺はMeat Boyの難しい面を、Meat Boyらしくプレイすることもできた(俺の腕は少々落ちていたが)。右の円サークルはジャンプボタンで、LRトリガーは両方とも、XBox 360コントローラーと同じように、ダッシュボタンに割り当てていた。また、先ほど述べた背面トリガーにもダッシュボタンを割り当ててみた。なかなか良かったが、手がつった。これはコントローラーやボタンの設計が悪いと言うより、Meat Boyにおけるダッシュボタンの使い方に問題があるようだ。

まあ、でもそれこそがMeat Boyだ。複数の入力が必要なゲームでどのくらいこのコントローラーがうまくやれるのかみてみたかったのだ。俺はSpelunkyをやらせてくれるよう頼んだ。Spelunckyはムチ、ジャンプ、ボム、ロープのボタンが必要になる。XBoxコントローラーのようにコントローラーを設定した。左の円パッドは方向ボタン、右の円パッドはXBoxコントローラーの配置のA, B, X, Yボタンだ。

Spelunkyをプレイしたところ、コントローラーは快適に機能した。プレイ中、俺はエンジニアに、Spelunkyにブレ動きが反映されてしまうことを訴えた。Spelunkyをプレイしたことがあるやつなら、この意味がわかるはずだが、詳細に説明すると、Spelunkyでは、パニックに陥って、回避行動を取らなければならない状況がよくある。例えば、プラットフォームをジャンプ中だとする。下はトゲで、上はコウモリだ。コウモリに当たると、トゲの上に落ちるので死ぬ。コウモリの上にジャンプすると、コウモリにあたって落ちて死ぬ可能性がある。そういう状況で、足場の上を維持したまま、ジャンプしてムチでコウモリを攻撃する必要がある。Steamコントローラーは、この状況でも機能する。俺の提案した突起があれば、より良くなるはずだが、まあ、最終的な製品版には、ひょっとしたら反映されるかもしれん。Ice Caveまで進んだが、クソなガイコツが俺を足場から押し出しやがったので、死んだ。そこで、俺は再度挑戦してはすぐ死ぬというループに陥った。Spelunkyではよくあることだ。

俺がSteamコントローラーでゲームをプレイしたいかと聞かれたら、まあ多分、イエスと答えるだろう。Steamコントローラーと360コントローラーのどちらを選ぶかと聞かれたら、俺は360を選ぶ。まあ、これは機能的な優劣というのではなくて、単に快適さと慣れの問題なのだが。俺はもう数千時間ものプレイ経験があるから、360コントローラーを選ぶのだ。ただ、もしも明日、すべてのゲームコントローラーが消失して、Steamコントローラーだけが唯一残されたコントローラーだったとしても、まあ、悪いことではないと思う。実際、ゲームに悪影響はないだろう。完成版のハードウェアがどのようなものかとても楽しみにしている。というのも、より改良されたものになるはずだからだ。

今北産業:
滑り出しはオッケー
改良が必要
どんなゲームでも遊べるぐらいのモノにはなってる

Valveが全く新しいゲームパッドを開発しているというのは気になっていたが、まさか三枚のタッチパッド、しかもうち一枚はタッチスクリーン(動画ではなく、柔軟なボタン表示のための静止画表示の様子だが)という斬新なものだとは思わなかった。そういう製品は私も大昔から妄想していたが、実際に設計して製品化しようという動きは、だいぶ時間がかかった感がある。

タッチパッドということで、とても気になるのはレイテンシーだ。なんと、ValveはSuper Meat Boyの開発者、Tommy Refenesを招いて試作品を体験させたらしい。そのTommy Refenesが、まあまあ使えると言っているのだから、レイテンシー的には問題ないという事になる。

それにしても気になるのは、「あるエンジニアが、デスクに行き、プレスだけに反応するよう、ファームウェアを書き換えた」というくだりだ。ファームウェアとはなかなか興味深い。Tommy Refenesがファームウェアという言葉の意味を理解していないわけがなく、またValveがわざわざ嘘をつくとか、嘘を書くように裏取引が行われたとも思えないので、やはりこれは文字通り、Steamコントローラーのファームウェアなのだろう。

これが本当だとすると、タッチ入力から、従来のゲームパッドやマウスやキーボード入力へのマッピングは、ドライバーではなく、ハードウェア側で行われていることになる。しかも、マッピングの変更のためにファームウェアを書き換えたというのだから、ゲームに合わせて頻繁にファームウェアを書き換える仕様なのだろう。ファームウェアというより、プログラムといったほうが正しい。つまり、Steamコントローラーは、プログラマブルなゲームパッドのハードウェアということになる。

しかしなぜなのか。なぜ生の値を受け取ってドライバー側でマッピングしないのか。ましてや、Steamはゲーム側でSteamコントローラーを直接扱えるようにするためのAPIまで用意すると言っているのだ。とすれば、ドライバーは生の値を受け取っているのではないか。

このことについてしばらく思考したところ、意外な考察結果が得られた。問題は、レイテンシーだ。

そもそもこのゲームパッドには、タッチパネルが三枚もついている。うち一枚はタッチスクリーンだが、左右の親指で操作する二枚のタッチパネルは、素のタッチパネルだ。このタッチパネルは従来のゲームパッドやマウスやキーボードといった操作をエミュレートしなければならず、また、Valveはソファーに座りながらマウスとキーボードの精度のFPSゲームができるとまで豪語しているので、この左右の円タッチパネルは、相当の精度を持っていることは疑いようがない。

このようなタッチパネルから得られる生の値というのは、二次元配列の静電容量の変化だ。これはつまり、画像に等しい情報量となる。しかも、ゲームなので、毎フレームごとに入力を取得しなければならない。ここで扱っているのは30fpsがせいぜいの非力なゲーム用コンソールではなく、PCゲームである。60FPSは最低限で、今や120FPSでも当たり前という過酷な世界だ。本物のゲームのための環境だ。となると、情報量はもはや動画に等しく、たとえUSBが十分な帯域を持っていたとしても、そんな馬鹿でかい情報量を転送したのでは、レイテンシーが、およそゲームのプレイには耐えられないほど高くなる。

高レイテンシーを防ぐため、USBを経由して送られる情報量を最小限に抑えるには、ゲームパッド側で生の入力を処理して、マッピングを行わなければならない。つまり、Steamコントローラーとは、プログラマブルなデバイスなのだ。

どうせSteamコントローラーは、スクリーンを搭載していて、プログラマブルで汎用なチップが必要なことは明白だから、プログラマブルであったとしても、それほど不思議はない。

とすると疑問がわく。一体、ファームウェアの生成と転送は、どのような仕組みになっているのだろうか。マッピングは、ゲームごとに異なるので、ファームウェアは動的に生成して、その都度、Steamコントローラーに転送しなければならない。GPUのようなものだ。そのファームウェアは、どうやって生成するのだろうか。

技術的にまともな方法としては、GPUのシェーダーと同じ方法だ。つまり、高級な言語でマッピングを記述し(その高級言語のコードは動的に生成する)、ドライバー側のコンパイラーでコンパイルし、ハードウェアに転送し、ハードウェア側で実行するというものだ。ことに、ゲーム側にもAPIを提供すると言っている以上、このような方法でなければ、まともではない。

もし、そのような設計であるとするならば、非常に面白い、ハックしがいのあるハードウェアだと思う。例えば、ゲームパッド上で動作するチューリング完全なインタプリターを書くとか。

なんだか、単なるゲームパッドにしては、やたらと大掛かりなハードウェアだ。ただ、タッチパッドを二枚、タッチスクリーンを一枚搭載したゲームパッドという時点で、相当に大掛かりなので、今更プログラマブルだからなんだということでもあるが。

Hacker Newsでも議論されている。

My time with the Steam Controller | Hacker News

No comments: