次に登壇したのは「SOLIDGUNNNER」の作者である長谷川氏。超絶弾幕シューという、狭く深い進化を遂げたために商業的にかなり厳しい状況になっているシューティングゲーム界。「SOLIDGUNNER」はそこに一石を投じるべく原点回帰の「敵を撃つ爽快感」「美しい編隊飛行」を掲げた「オールBASIC」の一作だ。
この「SOLIDGUNNER」がどのようにして生み出されたのか、驚きの誕生秘話が語られた。スピード感を重視するために地上物は演出のみに使用する、なるべくデザイナー(と自分)の手をわずらわせないためにマップや編隊飛行の軌跡、敵の出現順を自動生成するなど、さまざまな裏話が披露された。
これらのテクニックがどのように実装されているのかは、プログラムをダウンロードして直接、自分の目で確認しよう。
続いて隊長ことスマイルブーム細田氏によるプチコン3号の技術解説。プチコンmkIIまでは通常のBASICインタプリタとして実装されていたが、プチコン3号はBASICソースコードを中間言語にコンパイルしたうえで、それを解釈するIM(仮想マシン)上で実行する。
直接マシン語を出力した方が速度は稼げるが、プラットフォームがコンシューマー機であるがゆえの制限や、CPUが異なるとコンパイル部分から書き直しになるなどの理由で、このような形になっているとのこと。
IMのマシン語は3オペランドのニーモニックで表される、BASICに特化した仕様となっている。オペランドに指定できるのは変数(メモリへのインデックス)、スタック、即値の3種類でレジスタは持たない。コンパイラは1パスのため、option strict時の前方参照などに制限がある。しかし、マルチパスにすると起動が遅くなるため、現在のところ変更する予定はないそうだ。
また、描画を担当するメインスレッドとインタプリタは別スレッドになっており、VSYNCが発生するとメインスレッドが走り、システム処理が終わると次のVSYNCまでインタプリタスレッドが動く、という処理になっている。
そのため、システム処理が早く終るとインタプリタの処理時間を長くとれるために見かけ上高速になる。システム処理にかかる時間は3DSの場合で1000〜2000usec、new3DSの場合で350〜700usecとのこと。xscreenのモードによってシステム処理の長さが異なり、2>3>4>0>1の順に高速になる。ただし、モード2とモード1の差は3%程度だそう。
そのほか、過去に試作までされたものの、採算がとれないことが発覚したために実現しなかったUSBキーボードの接続アダプタも紹介された。
Copyright © ITmedia, Inc. All Rights Reserved.