連載
» 2012年06月01日 09時30分 UPDATE

プチコンで始めるBASIC新世代育成“虎の穴”(2):マイコン世代がシビれ! 憧れた! 幻の機能「スプライト」と「BG」 (3/4)

[スマイルブーム マイコン部,@IT MONOist]

かつて「BG」は、“文字”を使って組むものだった!?

 “ハードウェアに依存しないけれど、やっていることは大体同じ”という疑似的なスプライトであればまだまだ現役ですが、それを「スプライト」と呼ぶべきか、「オブジェクト」と呼ぶべきか……。先ほどのワンパク君の言葉にも一理あるかもしれませんね。

 とはいえ、基になる概念があるとやっぱり分かりやすいですよね。特に、マイコン世代にとってスプライトといえば、それがどういうものなのかがすぐにピンとくるのでなおのこと。だから、プチコンmkIIではスプライトと称しているのです。また、その他にも「XNA Game Studio」などの開発環境でもそのまま、スプライトの名前が使われています。

 そして、もう1つ大事な機能が「BG」です。文字通り、“背景”に特化した描画レイヤーといえるでしょう。


プチコンmkIIの画面のレイヤー構造 図4 プチコンmkIIの画面のレイヤー構造

 スプライトは1つ1つが比較的小サイズ(プチコンmkIIの場合、8〜64平方ピクセル)のオブジェクトとして認識されるので、キャラクターの描画に向いています。それに対して、BGは8×8ピクセル単位のチップを組み合わせて、BG面そのものに焼き付けるように描画します。

オーソドックスなBGの組み方 図5 オーソドックスなBGの組み方

 こうして定義したBGは、BG面を丸ごと1枚単位で操作するので、スプライトのようなキャラクターサイズの処理には向きません。その代わり、例えば、背景画のスクロールのような大きな単位の動作には重宝します。


ハカセ

『BG面はBG面単位でしか動かせない』といっても、モチロン書き換えはいつでも可能じゃぞ。ゲーム進行に応じて背景の一部だけを置き換えたり、マップのスクロール方向を先読みして画面外に配置しておいたりといった使い方がメジャーかのう。


インテリ

ゲーム以外の画面効果にも有効でしょうね。プチコンmkIIの場合、BG面1枚だと書き換えなしで何ピクセルまでスクロールできるんですか?


ハカセ

BG面はループ構造なのでその意味では“無限”じゃが、一度に定義できる最大サイズなら『8×8ピクセルのキャラを64×64個分』、すなわち『512×512ピクセル』じゃな。


ワンパク

何で8ピクセル単位なんだヨ……。動かすのは1ピクセル単位なんだろ? ビミョーに分かりづらくねェか?


神崎

マップチップと考えれば、そういうものかなとも思うけど。公式にはチップじゃなく『キャラ』って呼ぶんだね。……他の意味とややこしくならない?


ハカセ

2人ともナカナカ鋭い指摘じゃな。その説明には歴史をひもとく必要があろう……。そもそも『BG』は、“文字(Character)”を使って組むものだったのじゃよ。


ワンパク

??? ……。アスキーアートか何かか?


ハカセ

いや、そこまでではないが……。しばしば文字に使われるビットマップは、不変ではなく、ユーザーが好きなデータに書き換えられるものじゃった。例えば、8×8ピクセルの文字『A』を、8×8ピクセルの“レンガ”のグラフィックスに変えたりじゃな。


神崎

その状態で画面を文字『A』で埋め尽くせば、内部的には『AAA……』でも、見た目にはレンガの壁に見えるということ?


ハカセ

まさしく! そうやって作成したマップは、描画が早いので書き換えやスクロールにもうってつけじゃった。文字というのはビットマップ表示の中でもかなり単純かつ高速じゃからな。それがBG面の始まりだったのじゃよ。


神崎

だからプチコンmkIIでも管理するのは『8×8ピクセル』単位で、呼び方も『キャラ』なんだね。


インテリ

だけど、それは『レガシーシステムを引きずっている』とも言えるのでは?


ハカセ(涙)

おおお……。現代っ子がおる……。ここに現代っ子が……。



Copyright © ITmedia, Inc. All Rights Reserved.