ゲームプログラミングのはなし4
【ゲームプログラミングのはなし4】
現代のOSは、画面の制御をプログラマーに渡さないことから、ゲームプログラミングは一気にハードルがあがってしまったのです。
ゲームではなく、いろいろなサービスのWEBアプリや、お仕事アプリや便利ツールなどのプログラミングには都合が良いのですが。ウインドウとマウスで画面を表示するGUI(グラフィック・ユーザー・インタフェース)っつーヤツは。
GUI以前の時代は、画面表示を行うVRAM(ビデオ・ラム)というメモリに直接データを放り込めば、しのごのいわず超高速に画像が描画できたので、プログラムもシンプルなものだったのですが、その自由闊達な時代はもう帰ってきません。
しかし、グチってても仕方ないので手を動かすしかありません。
...さて。なんとか苦労して画像を読み込めれば、次は描画です。狙った思い通りのところに描画できればサイコーです。これまたOSによって、こうるさい約束事があるのですが、もうそろそろ「あ〜、ハイハイわかりましたよ」といちいち文句言うことも無くなってきているでしょう。
そして、画面に画像が描画されるとこれまでの苦労が吹っ飛ぶはずです。
さあ、ここで気を緩めてはいけません。画像を描画した後は、「消去」する術を獲得しないといけません。
...え?
そう、描画しただけではゲームにならんのですよ。それはただの「静止画」です。世界の名画鑑賞アプリならそれでいいのですが。
「...いやいや、描画する際に画面の座標を指定したので、その座標を変えれば画像の位置が変わるじゃないですか。」
はい、それはそうです。ではやって見てください。
「ゲゲッ!」
...そう、画像が引きずられて後が全部残りますよね。次の位置に描画する前に、キチンと消してからじゃないと。
もしかして、画像の位置だけを変えれば自在に移動する「スプライト」と呼ばれるものだと思っていたら大間違いです。あれは1979年にナムコの「ギャラクシアン」で導入されて以降、ファミコンやMSXにも実装されましたがゲーム専用の特殊なハードウェアで実現しているものです。
...え?iOSのゲームプログラミング用ライブラリでスプライトキットっつーのがある?
この軟弱者がッ!!
あれはソフトウェア的にスプライトを実現している超便利お助けクラスぢゃ!!そんなもんに最初から甘んじて、ハードウェア的にはどういう仕組みで画像が「動いて見える」のか知らずに育ってみろ!他のOSでは全く役に立たんし、今後もアップデートし続けるOSに、そのライブラリのアップデートを祈りながら待たねばならんし、最悪、対応しなくなった途端に死亡確定ぞ!先日の突然のObjective-C死亡宣告の恐怖をもう忘れおったか!!
...ゼエ、ゼエ、いや取り乱して申し訳ない。ゲームプログラマーたるもの、いかなるハードウェアであろうと生き残れる力をつけなければとの思いから失礼しました。今回はこれまで。(続く)