
消えるゴルドー(一訂版)
たったさっきほしかすは、『消えるブロック』が、カービィが上に乗っかってから消えるまでの時間の調査の為、『星のカービィ2』をプレイしていました。
───と、その時、恐るべき現象を目の辺りにしたほしかすは、思わず自分の目を疑いました。
・・・とりあえず、もう一回同じことを繰り返してみて・・・
・・・やっぱり・・・
今のは見間違えじゃないぞ。(何
『星のカービィ2』の6-5。───そうです、あの『消えるブロック』だらけのステージです。
ここでは、スタート直後、目の前に『消えるブロック』が二段に積み重なっただけの橋があり、そこにはブルームハッターとゴルドーが配置されています。
まず、↑ボタンで飛びます。
次に、
↓
□□□□□□□□□□□□□□□□□□□□
□ ○
□ ●
□□■□□□□□□□□□□■■□□□□□
□□□□□□□□□□□□□□□□□□□□
□・・・消えるブロック
■・・・消えないブロック
○・・・カービィ
●・・・ゴルドー
*ブルームハッターは省略
↓の所までカービィを移動させます。
このとき、ゴルドーは左右に動いているのですが、ゴルドーが右に動いて、画面の向こうに消えたら、少しだけでもイイので、カービィを左に動かして下さい。
・・・そして・・・右に行ってみて下さい。
どうです?
ゴルドー消えました?
・・・まぁ、これでもし消えてなかったら、単にほしかすの持ってる『星のカービィ2』がおかしい、と言うことになってしまいますが(笑
───あ、そうそう。
因みに、当初の『「消えるブロック」が消えるまでの時間』の調査なのですが・・・結局、面白い結果は出なかったので、ここには記さないでおきます(ぉ
・・・実際研究してると分かるんですが、研究のほとんどは、こうした『対して結果の面白くないもの』になってしまうんですよね・・・ι
まだ続きます(ぉ
後日談ですが、この研究を読んでくださった当ページのお客様が一人☆かび様が、プログラミングの知識を駆使してこの謎を解いてくださいましたので、以下にその全文を記しておきます。
尚、今回の場合は特例であり、本コーナー『かびるぽ』はお客様からの研究の投稿は受け付けておりませんことをこの場で表明いたします。
(☆かびさん、プログラミングに弱いほしかすの代わりに考察をしてくださって、まことにありがとうございますヽ(^ワ^)ノ)
ゴルドーが消えるわけ
※ * は文末に補足説明があります。
まずは薀蓄を聞いてください。
アクションゲームというのは、マップのデータに、キャラクタデータを上に描写して動作しています。
そして、キャラクターが位置する場所は、カービィ2等の2Dアクション(*0)では、X座標とY座標(*1)を使って表されます。
キャラデータには主に、キャラのID(*2)、現在いるX座標とY座標、キャラクターグラフィック、動きのパターン(*3)が含まれます。
イメージが難しい場合は、チップマップ型RPG(*4)をイメージしてください。
一番左上を(0,0)として、ひとつ右に行けば(1,0)、そこから下へ行けば(1,1)です。
そして、PCはこの情報を記録する場所、すなわちメモリの容量が非常に大きいため、現在のマップ上に存在するキャラデータを全て記憶することができますが(*5)、
GB等の昔のハード、ゲーム機器に搭載されるメモリは、非常に少ないのです。
なので、画面に表示されていないキャラデータは記憶しないことでメモリの節約を試みています。
ですが、これでは少し画面が切り替わり、キャラが画面の外に出ただけでもキャラデータが削除されるため、『少し行って戻っただけでキャラがいない』という状況も起こってしまいます。
これを回避するため、『ある程度なら画面から消えてもキャラデータを消さない』というプログラミングが行われます。 そうです。だから普段は気付きにくいのです。
・・・ええいっ!ワケわからん!のために、図で説明しましょう。
というか、上の文章だけで分かればすごいです。
その前に、これだけ頭に叩き込んで理解してください。
ゴルドーはひとつの点を基準に移動を繰り返していますが、キャラデータはこの基準点でなく、ゴルドー自身に持たされています。
分かりやすく言いましょう。
プログラマと言うのは、簡略化できるものは何でも簡略化し、楽をしたがるものです。
ですから、ワドルディ、ブロントバード、ブルームハッター、ロードキブル、ゴルドーなどなどの一般に『雑魚キャラ』と呼ばれるキャラ(*6)は、キャラデータの持たせ方が同じなのです。
キャラのグラフィックや、攻撃方法、動きのパターンはそれぞれのキャラデータに記録されているので、一見するとキャラが別々に動いているように思えるのですが、
一定の決められたパターンにより行動しているに過ぎません。
これらをふまえて、例えばあるひとりの前進しかしないワドルディがいるとします。
このワドルが前進すれば、それだけ最初にワドルがいた基準点から移動することになります。
ところが、このワドルを画面に入れつつカービィも共に移動すれば、どんなに基準点から離れてもワドルは消えることはありません。
このことから、このワドルのデータは基準点に記録されているのではなく、彼自身に記録されているのが分かります。
前述した通り、これはゴルドーにも当てはまり、つまりゴルドーも基準点でなく彼の正に今いる地点、つまり彼自身にに記録されているのです。
前置きが長くなりましたが、実際に図を使って説明します。
今回の場合、ゴルドーが右へ移動した後に、カービィを左に移動させていますよね。
○ カービィ
★ ゴルドーの位置
☆ ゴルドーの左右に動く範囲
※ ゴルドーの初期位置
■ 画面に表示されている部分
□ 画面に表示されてはいないが、キャラデータは保存されている部分
(障害物は省略)
‐最初の状態‐
□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■○■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■■■☆★※☆☆□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□
この状態から、ゴルドーが右へ動きます。
すると、画面はカービィを中心として表示するため、スクロールはしません。
では、次の図を見てください。
□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■○■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■■■☆☆※☆★□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□
ゴルドーが一番右はしの位置へ移動しました。
この状態で、カービィを左へ動かします。
すると、画面はカービィを中心として左へとスクロールしますから、ゴルドーは相対的に右へ移動します。
□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■○■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■☆☆※☆★
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□
なんと、ゴルドーの位置★が、キャラクターデータを保存する域から外れてしまっています。
すると、ゴルドーのキャラデータは削除されて、ゴルドーは消えてしまうのです。
こうなれば、あとはカービィを右へ戻しても、画面を移動させない限り消えることはありません。
そして再び、※マークを域外に移動させると、新たにゴルドーのキャラデータが記録され、ゴルドーは復活します。
つまり、少しでなく大きくカービィを左に移動させると、
□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■○■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■☆☆※☆★
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□■■■■■■■■■■■□□
□□□□□□□□□□□□□□□
□□□□□□□□□□□□□□□
のように初期位置※も保存外に出てしまいます。
ここからカービィを右にスクロールさせれば※がキャラデータを記録する□まで達し、キャラデータが記録され、再びゴルドーが現れるのです。
なお、この手法はカービィ2のみにとどまらず、多くの2Dアクションでのシステムになっています。
・・・お分かりいただけたでしょうか。
ワケ分かってくれれば嬉しいです。
補足説明
*0
2Dとは言えRPGはキャラの位置がストーリー展開に大きな意味を持つので、この内容は合致しません。
*1
X座標は横の向きを、Y座標は縦の向きを表します。
右上ほど値は低くなり、左下ほど値は大きくなります。
*2
IDとは、キャラを管理するための番号です。
コンピュータは基本的に文字での処理より数字での処理が早いうえ、数字の方がデータ容量が多少軽くなるからです。
因みにこのIDは基準点別に設定されることが多いです。
カービィ2もそれに含まれます。
少し考えれば分かりますが、基準点別にしないと、同じ基準点のゴルドーが2匹いる、という現象も有り得るからです。
*3
カービィの向きに応じて行動が変化する、吸い込みを受けると行動が変化する、と言う内容も含まれます。
しかし、実際は容量節約のため、行動パターンは全てのキャラのものをデータベース化し、それを参照して決めると言ったことが良くあります。
*4
ポケモン、スーファミ期のFF、RPGツクール2000で作成されたゲームといったものが例として挙げられます。
*5
可能なことは可能ですが、処理速度を重視するため、メモリが多く積まれていてもメモリが少ない時の手法をとるゲームが多々あります。
特にこの手法をとらないゲームは『くそゲー』となることが多いです。
*6
ゴルドーは無敵キャラですが、単に『やられない』ということであって、普通の雑魚キャラと何ら変わりません。
Copyright ,2003 ☆かび
戻る