熱っ血のステージobjを分析してみるぺーじ 基本編 その1
麗華「ところで藤堂さん。「obj」とは何なんですの?
藤堂「obj。即ちオブジェクトとは簡単に言えばステージの彩りやら飾りつけのようなものだ。
「一言にobjといっても種類は多数存在する。最も基本的な機能はグラフィックの表示であろう。
麗華「では、実際にステージobjを使うにはどうしたらよいのです?
藤堂「obj作成に最低限必要なものはstage00_obj.txt(「00」にはobjを適用するステージNoが入る)だ。
「グラフィックを使用する場合はbmpも必要になる。
「手始めにこれを見てほしい。
麗華「これはステージ02のobjファイル…ですわよね?
藤堂「まず1番上の「#INIT」についてだ。
「ここで使用するbmp、読み込むグラフィックの範囲、ゲーム開始時のスタート位置等を指定できる。
麗華「ふむふむ。
藤堂「「LoadBmp」は実行ファイル(KD.exe)のあるディレクトリー(フォルダ)からそのbmpへのアドレスを入力して使用するbmpを指定。
「ステージ02の場合、「Stageディレクトリー内のStage02_Obj.bmpを使用」という意味になる。
「因みにbmpファイル名に全角文字が含まれているとプログラムが誤作動を起こすのでファイル名に全角を使用してはならない。
麗華「なるほど。
藤堂「「EntryPat」で使用するbmpから読み込むグラフィックの範囲を指定。
「数字が6つ並んでいるが、左から「読み込むグラフィックの左上となるX座標(右方向にプラス)、Y座標(下方向にプラス)、
「座標左上からの相対X座標、Y座標、透過カラーNo、指定したbmpから同じ座標で右方向に連続指定」となっている。
「透過カラーは「-1」で指定なしとなる。また、連続指定を「-1」にするとLoadBmpで
「指定したbmpを同じ座標でbmp内のグラフィックを全て指定できる。
麗華「要するに同じ大きさのグラフィックがあれば複数指定できるというわけですわね。
藤堂「そういうことだ。
「ここで注意しなければならないのは連続指定には自分(最初に指定したグラフィック)も含まれていることだ。
「なので、連続指定の項目に「0」が入ることはない。覚えておきたまえ。
麗華「分かりましたわ。
藤堂「因みにbmpは複数指定することもできる。読み込むグラフィック(EntryPat)は指定したbmp(LoadBmp)から読み込まれるので
「LoadBmpとEntryPatの順番が狂うと正常にグラフィックを読み込めなくなる。
「取り合えず、基本的なことはこれくらいだ。#INITは他に再生するBGMを指定することもできるが、それは別途説明する。
「では次に2番目の「#PUT」についてだ。
「これは#INITで指定したグラフィックをステージのどこに設置するかを指定している。
「左から「表示タイプ、X座標、Y座標、Z座標(上方向にプラス)、*obj名」となっている。
「本来はobj名の後にも項目が続くのだが、今はあまり気にしなくていいだろう。
「指定したグラフィックは左上部分が基準になる。
「ステージ02の最初のグラフィックはEntryPatの 0, 0,がグラフィックの基準値となる。
「表示タイプは「0 背景、1 地雷、2 キャラや壁等、3 背景(グラフィック固定)」になっている。
「座標の基準値は0と3がstage.bmp基準、1と2がstage.dat基準だ。
「Z座標は主に1と2で使用することになるであろう。今回は0の背景を表示する際の指定方法について説明する。
「ステージ02の場合、「24, 0,座標上に設置」ということになる。
「最後のobj名は分かりやすい名前を半角で入力。基本的には何でも大丈夫だ。最初に「*」を付けることを忘れずにな。
麗華「了解ですわ。
藤堂「最後に3番目の「#MOVE」だ。
「ここで#PUTのobj名にどんな変化を与えるか指定。恐らくここが1番修羅場になるであろう。しっかり覚えるように。
「基本的には1番最初にobj名が入る。また、objの変化は最初の数値(総称してコマンドという)で内容が決まる。
「これは本当に多数あるのでまず最初にobjの基本となるグラフィックの変化についてだ。
「グラフィックの変化には「コマンド1」を使用する。実際に数値を並べると「1, 0, 0,」という形になる。
「くどいようだが、最初の「1」はコマンドを表している。では、2つ目以降の数値に意味について説明しよう。
「2つ目は#INITで指定した表示するグラフィックを指定。ここに入る数値はEntryPatで指定した順番で0,1,2…となる。
「連続指定が優先されるのでステージ02の場合、最初の 1, 0, 2,は「Stage02_Obj.bmpの座標 0,0,32,152,のグラフィックを表示」
「ということになる。-1で非表示だ。
「3つ目は表示するフレーム数を指定。
麗華「フレームって何ですの?
藤堂「フレームとはゲーム世界においての時間経過と考えていい。
「アニメーションでいう「コマ」に近いものだな。
「先程の 1, 0, 2,は「2フレーム表示」を表している。
「更にStage02_Obj.txtを見てみると最後に「255,」と書かれている。
「これは「そのobj名の最初の処理にループ」という意味である。基本的にこのコマンドは固定なのでobjの変化処理を書き終えたら
「最後にこれを付けるように。
「これで最も基本となるグラフィックの表示ができるようになったはずだ。
麗華「ばっちり覚えましたわ!
藤堂「最後に補足しておこう。これは熱っ血に限ったことではないが、全てのプログラムは半角で構成されている。
「熱っ血も基本的に処理内容は全て半角だ。全角やTABが入っているとエラーになるので気を付けたまえ。
「今回はここまでだ。次回からは各コマンドの内容について説明する。