総合HOME VBAアクションゲーム?Excelで動かそう!
ExcelPortExcelGameWeeklyDiaryExcelゲームスペック比較


Excelゲームと家庭用ゲーム機の性能スペック比較
〜ファミコン、PCエンジン、メガドライブ、スーパーファミコン、MSX・・・懐かしの名機に、エクセルはどこまで迫れるのか〜


ExcelGameWeeklyDiaryにて連載していたものを加筆、エクセルゲームのスペックはいかほどか、家庭用ゲーム機との比較しながら検証します。

1 非公開Excelゲームモードの存在

 パッセルマンの公開が多くの反響をいただき、動かす会としては次に何を作るべきかと調子に乗って始めた世間一般のニーズを戦略的に探る企画「Excel移植希望ゲーム世論調査」、おかげさまで好評でして、なんと1000以上の有効回答が寄せられており、これがまた見事に票が分かれています。TOPは「マリオ」「ゼルダ」「アレックス」「ギャラガ」・・・もう日替わりです。中には「グランツーリスモ」なんていうタイトルもあって見るだけでも楽しいのですが、先日、Excelゲーム再現性の限界はどの程度かという質問をいただきました。個人的にはプレステ4くらいまで楽勝でいけるんじゃないかと思い込みたいところですが、この際なのできわめて客観的に家庭用ゲーム機になぞらえてExcelゲームの性能を検証評価していくこととします。
 そのためには、まずはあまり知られていないExcelゲーム開発モードの存在について公表せねばなりません。
・Mode1 ワークシート上でセルをドットと見立てる(パッセルマンで使用)
・Mode2 ワークシート上でオートシェイプを利用(ペクセルマンで使用)
・Mode3 ユーザフォーム(あるいは95ダイアログ)上でオブジェクト(猛特訓で使用)

 Excelのヘルプにも出ていないこれらモードの存在ですが、実はゲーム開発者にとって周知の事実で「これ、モード1.5だねえ」なんて会話が日常的に交わされているのが現実です。またそれぞれのモードには一長一短があり、どれがベストということはなく、通常は作るゲームによって最も適した方法を採択することになります。今回は私が好んで使うモード1について検証を行っていきます。

 昔の家庭用ゲーム機にはいずれも、スプライトと呼ばれるキャラクターを重ね合わせ処理できるハードウエア機能、1ドット単位の背景スクロール機能があり、滑らかなゲーム画面実現に貢献していました。ファミコン、マークV、PCエンジン、メガドライブ、スーファミまでの進化はスプライトの数や色、大きさ、スクロール背景の多重化、同時発色数の拡大などが増強されているものの基本は一緒に思えます。PS以降はポリゴンの時代に入りますので(ちなみにSSにはスプライト機能も単独で残っていた気が・・・)、Excelモード2以降に比較する機会を譲ります。
 実はExcelモード1には致命的な欠陥がありました。スプライトと背景スクロール、この二つがないのです。ドット(ワークシートセルともいう)を1点1点を任意色で指定する事こそ普通に可能なのですが、処理速度が非常に遅く、1画面描き変えるのになんと秒単位で時間がかかっていました。これでは、60FPSは夢のまた夢、ゲームなど作れるはずがありません。
 ところが制限があれば乗り越えてしまうのは人間もExcelも同じのようで、その欠陥を埋めるべく高速な画面書き換え、スムーズなキャラクターの表示を可能とする数々のVBAプログラミングテクニックが編み出されました。いや現在も続々編み出され続けています。ちょっと本題とずれますが、Excelのゲーム性能を測るためには不可欠であるテクニックの数々を紹介しましょう。

2 Excelゲームモード1を支える驚愕のVBAテクニック

 Excelモード1でグラフィックゲームを可能とするプログラミングテクニック、現在までに編み出されているものは以下の通りです。わかりやすくするため、たいへん不本意ながら、ドット色=セル背景色と表記しています。
スネークRange手法・・・VBAよりセル背景色を変えようとすると1セルづつ変わっていくのが目に見えてしまうくらい時間がかかるのですが、セル範囲を文字列で連結させ一括して背景色を指定することで、ある程度高速なセル色描写が可能となりました。変数内でセル番地が蛇のように連なるところから命名されたようです。セトリスにて実装されました。
ダイレクトコピー手法・・・スネークRangeは、任意のセルを指定できる特徴がありましたが、速度的に十分とはいえませんでした。32×32セルのような矩形範囲を一瞬のうちに書き換える方法がこれです。クリップボードを介さずに、コピーステートメントでデータ元となるセル範囲から一気に抜き取り描き換える。その高速さから全画面スクロールにも応用できます。欠点としては、矩形範囲のセル背景色が丸ごと元データと入れ替わってしまい、背景との重ね合わせが出来ないこと。セルベーダーのキャラクター移動に使われています。
テールRange手法 上記ダイレクトコピー手法の発展形であり、背景との重ねあわせにも一定対応可能です。元データのお尻に、背景データをくっつけた後、ダイレクトコピーすることで、重ねあわせを実現しています。パッセルマンにて実装。
HangeRange手法 日本名:変化レンジ、現在のところモード1で最強の機能を備えます。あらかじめExcelの条件付書式で値による任意のセル背景色を指定済みのセル範囲(Excel97以上で可能)に、背景色データを収納した配列変数をぶちこみます。ループで回すのとは別世界の速さでセルの値は書き換わり、同時にExcelの条件付書式機能が起動、セル背景色も一瞬で変化します。セルベーダーのバリケート表示で実装済み。この手法を編み出した瞬間に私の目から流れ出た感動の涙は、条件付書式が4色しか指定できない事実に気づくまで止まりませんでした。む?4色・・・ファミコンスプライトと同一のスペックです。

 これら限界を超えるために編み出されたテクニックにより、現在Excelモード1は、ソフトウェアによる擬似スプライト機能を獲得しています。これらの手法がなければ、高速にドットを書き換えることが不可能、家庭用ゲーム機とは比較にならないので、今回はこのソフトウェアによる実現も加味したこと、ご了承いただけた前提で、Excelゲームモード1のスペック概要を公表することとします。

3 Excelゲームの詳細スペック

表示能力     56色 256×65536ドット、表示幅を行列単位で任意に変更可能 
スプライト     @重ね合わせ処理なしは無制限※1
           A同ありは同時発色数4色に限定※2
背景スクロール  1面(処理遅いのが難)
拡大縮小     10%〜(5%単位で可能)
サウンド      wav、midi、mp3、無限多重再生
特殊機能      ドットへの特殊効果:囲い、網掛けエフェクト、ドット内テキスト表示
※1 ダイレクトコピー手法によるソフトウエア処理
※2 変化Range手法(条件付書式設定セルへの配列値一括書込)によるソフトウエア処理
 おお、一見すると、すばらしいスペック、マックスではスーファミ並です。

■家庭用ゲーム機とのスペック比較表
  Excelゲーム
(モード1)
ファミコン PCエンジン メガドライブ スーファミ MSX
CPU 32ビット
付替自由
8ビット6502
(音声機能内臓)
8ビット
HuC6280
(6502カスタム)
21.47727MHz
(内部:7.15909MHz)
16ビット
MC68000
(8MHz)
    
16ビット
65816 C−MOSカスタム1個 1.79〜3.5
8MHz
Z80A相当
(3.579545Mhz)
同時発色数 54色 52色 512色 64/512色 256/32768色 16色/512色
画面解像度 256×65535ドット(幅を行列単位で任意変更可能)  256×240ドット 256 x 216ドット 320X224、
256X224ドット 
256×224ドット 256×192ドット
スプライトサイズ 1×1〜
256×65536
プログラマブル
8×8 16X16
〜32X64
8X8〜32X32 8X8、16X16、32X32、64X64 8X8、16X16
同制限 個数に制限はないがソフトウエア疑似スプライトのため多用すると処理に時間がかかる。 64個/画面
8個/ライン
64個/画面
16個/ライン
80個/画面
20個/ライン
128個/画面32個/ライン 8個/画面
4個/ライン
(16×16時)
同発色数 54色、
4/54色
(重ね合わせ処理時)
4/52色 512色 64/512色 256/32768色 1/512色
背景数
(スムーズスクロール)
疑似1面
(処理遅し)
1面 1面 2面 4面 なし
背景拡大縮小機能 10%〜400%
(5%単位)
なし なし なし あり
(回転機能も有)
なし
サウンド Wav、MIDI、MP3、無限多重再生 矩形波X2、三角波X1、ノイズX1 波形メモリ方式 最大6チャンネル FM6音+PSG3音+1ノイズ+PCM1音 サンプラー、演算波形、PCM、ノイズから8音 PSG8オクターブ3和音
ドット特殊表現機能 囲い、網掛けエフェクト、ドット内テキスト表示 なし なし なし モザイク
ウィンドウ機能
なし
BASIC VBA ファミリーBASIC なし なし なし MSX-BASIC

※参考にさせていただいたサイト、資料・・・・夢のゲーム史、MSXMAGAZINE永久保存版

4 Excelゲーム性能の結論そして未来

 特筆すべきは画面解像度でしょう。1677万ドットが同時表示可能領域であり、メガドライブの7万ドットを遥かに凌駕しています。またドットの幅を行列単位で任意変更が可能である点、表現力において数歩抜きんでている感があり、ドット内にテキストを表示可能という特殊効果も驚嘆に値します。もちろんこの場では全てを同時表示できる縦横比256:1の縦長モニターなど存在しないことに目をつぶりましょう。
 同時発色数は54色とファミコン並ですが、ドットへの特殊効果として、網掛けエフェクトを実装しており、これはディザ512色と読み替えることも可能なこと、異論の余地はありません。スプライト機能に関しては他の全ての家庭用ゲーム機がサイズ、同時表示数に制限がある中、ソフトウエアによる疑似スプライトといえ、制限ナシを謳う点、立派の一言。サウンドに関しての優位性は揺るぎなく、同時発音数、音源、いずれも最高峰に位置しています。
 こうしてみると唯一の泣き所は、背景スクロール機能でしょうか。スプライトとは別個に、数面の背景を滑らかにスムーズスクロールさせることが可能なライバル機と比べ、「1面(処理遅し)」は、ちょびっと寂しいような気がします。ココだけの話、この疑似スクロールは、疑似スプライトまでスクロールさせてしまいます。え、それではスクロール機能とはいえないのでは?いやいやそんなことはありません・・・・。
 Excelゲームモード1の歴史は、新たなVBAプログラミングテクニック開拓の歴史でもあります。残念ながら現在実装されていないスクロール機能ですが、近い将来、驚くべきプログラム技法により実現されることは間違いないでしょう。その時こそ、Excelは名実共に最強のゲーム開発プラットフォームとなるのです。
 果たしてExcelVBAゲームモード1の性能はどの程度か。この疑問に対しては、上記のスペック比較表が明解な解答を導き出してくれます。「将来的にスーファミまでは行けるが、現在のところMSXなら完全移植も可能」。スペック比較表はそう答えている気がしてなりません。そういえば、MSXって「MicroSoft eXcel」の略でしたっけ?
 今回はモード1での性能比較を行いました。前述したように、Excelにはモード1以外にモード2、3というPSやSS、N64と比肩しうる能力を秘めた開発モードがあります。その潜在性能はモード1の比ではなく、詳細に関しては猫とエクセル谷さんが別途記していきたいと考えているようです。

2003年10月12日 近田伸矢(動かす会会長)リンク大歓迎!