2008/12/13

Quake on Google's Native Client

quakeが動いているのにはびっくりしたづら。OpenGLを使っていることで有名なこのゲームは、周りではどうやって画面の描画をやっているのかという話になった。SDL版のQuakeにNative Client対応化させるパッチを当ててて動かしているようだが、ネットワーク周りの書き換えが主で描画に関する部分はあまり書き換えられていない。UpdateAll() 関数が描画に関するところでパッチされている主立った関数だが、やっていることは、8bitで描画された画面バッファを32bitへ変換し、nacl_video_update() へ渡しているだけ。SDL Quakeを読むとGLで描画するglquakeとアセンブラでCPUで描画するasmquakeの両方をコンパイルオプションで切り替えられるようにできており、asmquakeがNative Client上で動いている様子。だから、Native Client上でvideo用APIが4つしか無くてもQuakeが動いていた訳ですな。

やねうらお氏の解説を読むとどうやってSandboxを実現しているのか書いてあるけれど、アセンブラ0年生のおいらには相対ジャンプに工夫を凝らすだけでSandboxができてしまうのものかどうか判断がつかない感じ。

Comments: コメントを投稿



<< Home

This page is powered by Blogger. Isn't yours?