時代はまだゲームセンターあらしに追いつかないのか


私が小学生のころに『ゲームセンターあらし』という漫画が流行った。(1979〜1983年)「炎のコマ」と言う「スティックを高速で操作することでプレイヤーの操作するキャラクターが敵からの攻撃を潜り抜ける」というインチキまがいの技が出てくる。


私は小学生にして、その漫画に出てくる平安京エイリアンぐらいのゲームならオールアセンブラで余裕で作れる程度には天才児(?)だったので、「いくらスティックを高速に動かそうと、1回の描画ごとに1回の入力受付しかしないのだから、単に入力が取りこぼされるだけだろ。所詮、漫画だな。」と小馬鹿にしたものだった。


ところが、その考え方は間違いなんじゃないかと最近思うわけだ。


キーボード入力のようなユーザー入力は取りこぼしてはならないのである。ユーザーは1秒間にたかだか10文字程度しか入力できない。キー入力の遅い人は数文字が限界かも知れない。それなのにCPU負荷が高いときやDisk I/Oの負荷が高いときはキー入力を時々取りこぼすわけである。現在、CPUは数GHzというクロックに達しており、1秒間に1,000億回程度の浮動小数点演算が出来るくせに、たかだか1秒間に10回程度の入力を取りこぼすとか、ありえない。そのありえないことが現代においていまだに起こりうるのである。


単にユーザー入力に関する割り込み処理の実行プライオリティを上げれば良いという話ではない。なぜなら、例えば、タブレット端末ではユーザー入力を行なうためにはソフトウェアキーボードの表示処理が必要で、Disk(SSD)への読み書きが忙しいからと言って、キーを取りこぼしたり、英語と日本語のキーボード切り替えに時間がかかったり、日本語変換に時間を要してはならない。ならない…が、実際はそうなるのである。


ゲームセンターあらし』から30年以上経ってるのにユーザー入力すら満足にさばけない欠陥OSが蔓延っているわけである。かと言ってユーザー入力に関するタスクの実行プライオリティを上げれば良いかというと、そういう単純な問題ではなく、本気で解決しようと思うといわゆるリアルタイムOSのように、高優先度のタスクが確実に実行されることを保証するための仕組みが必要になる。


ゲームの場合でも画面描画の更新回数だけしかワールドの更新を行わず、キー入力も受け付けないゲームが多数派であるが、格闘ゲームなんかだと、画面描画は60fpsより遅れようともワールドの更新(と入力)は1/60秒ごとなのを保証する作りになっているゲームもある。(10年ぐらい前に私がSNKKOF作ってたプログラマーの人たちと仕事をしたときも、そういう話が出た。)


もっと繊細なコマンド入力や音ゲーのような超絶タイミングを必要とするゲームならばキー入力だけ画面描画より細かいインターバルで入力を受け付けるのはおかしくはない。(まあ、入力デバイスがUSBでぶら下がってたりするとどこまでの精度が保てるかという問題はあるが…。)


そう考えると、『ゲームセンターあらし』のように開発者の想定を超えた激しい入力がされたときに開発者の想定外の挙動をする(バグる?)ようなゲームがあっても、まあ、おかしくはないのかな…。


ゲームセンターあらし』から30年以上を経て、あの漫画は自分のなかでは「そんなんありえへんわ!」から、「ありえるかも…」に変わりつつある、という話でした。