15 屋外のセクターを作る


DOOMで野外を表現するには、セクターのCeiling Flatに「F_SKY1」という特別なFlatを選択して、通常なら天井を描画する部分に空の画像を描画するように指示するだけです。
このため、そのセクターには天井が無いように見えますが、実際には、そのセクターの奥にある物が見えるようになるわけではありません。例えば、そのような屋外のセクターの近くに、非常に天井の高いセクターがあった場合、物理的にはそのセクターの建物の『外壁』が見えるはずですが、DOOMでレンダリングされるのは、あくまでセクターの内部だけであり、決してセクターの外側が見える事はありません。
実際、製品版のDOOMのマップにも、そのような状況が多く見られますが、DOOMにおいては、そのような矛盾がむしろ、マップの予測をつきずらくするための『ゲーム性』になっているとも言えます。

上で、天井の部分が空の画像に置き換えられると言いましたが、例外的に、通常なら壁のテクスチャが描画される部分を空の画像で置き換える時があります。
前にも述べた通り、隣接するセクターの天井の高さが違う時は、段差の部分の壁にUpper Textureが貼られますが、もし、両側のセクターの天井のテクスチャがどちらも「F_SKY1」だった場合は、Upper Textureの部分も空の画像に置き換えられます(何かのテクスチャが設定されていても無視されます)。こうする事によって、屋外のセクターを囲む『塀』の高さに段差があっても自然に見えるようになります。
今回は、こうした段差のある壁に周りを囲まれた『庭』のようなセクターを作ってみたいと思います。

まず準備として、デフォルトセクターのFloor Flatに「GRASS2」、Ceiling Flatに「F_SKY1」、Light Levelを200に設定して下さい(F_SKY1の画像が何を表しているかよくわかりませんが、おそらくプレイスホルダーとして存在しているだけなのであまり意味は無いと思います)。
また、デフォルトテクスチャのMiddle Textureには、「BROWN1」を選択して下さい。
次に、縦横の長さが64のグリッドで6×8ぐらいのセクターを、南北に隣接させて二つ作って下さい(図1)。



図1 天井に『空』のテクスチャを使って二つのセクターを作る

そして、南側のセクターのCeiling Heightを72にして下さい。それから、適当な場所にThingの「Large brown tree」と「Player 1 start」を置いて、ここで一旦マップをプレイしてみて下さい。
図2は、この状態のマップをプレイしている場面です。



図2 『庭』型のセクターを眺めた画面

ここで問題なのは、塀の段差の部分を横から見ると、壁の厚みが全く無い事が明らかに分かる事です(図3)。



図3 塀の段差を横から見たところ

DOOMのレンダリングの仕方では、このような状況になるのを根本的に直す事は無理ですが、ある程度レイアウトを工夫する事でそういった不自然さを隠す事が出来ます。
まず、南側のセクターの両脇の部分のLinedefに、一つずつ頂点を挿入してから、図4のように、南側のセクターの幅が一段広くなるように頂点を移動させてみて下さい。



図4 頂点を増やしてからセクターの幅を広げる

次に、幅を広げて出来た段差の部分に、図5のような三角形のセクターを二つ作って下さい。



図5 段差の部分に面した三角形のセクターを作る

デフォルトセクターのCeiling Heightが128のままならば、これで三角形のセクターが面している部分の塀は、高い方の塀と同じ高さになるはずです。
図6は、この状態でマップをプレイして、塀を眺めたところです。



図6 修正後のマップの様子

このように、塀の高さに段差をつけたい時は、クッション的なセクターを間に一つ置く事で、うまく不自然な部分を隠す事が出来る場合があります。

セクターのCeiling Flatに空のテクスチャを使う時に一つ気をつける事は、そのセクターには天井が無いように見えても、実際にはまだ存在しているという事です。
例えば、床と天井の間の幅が非常に小さいと、何も障害物が無いように見えても、プレイヤーやモンスターはそのセクターの中に入っていく事は出来ません。つまり、ゲームプログラムが衝突判定をする時は、空のテクスチャが貼られた天井でもそのまま有効だという事です。
一方、今回使った「Large brown tree」のようなThingのスプライトは、天井より高さがあってもその部分が隠れる事はありません(GLDoom2007のV1.3以前では、Thingが天井の高さでクリッピングされてしまっていました)。つまりレンダリングの時だけ、天井は完全に無視されます。

最後に、空のテクスチャに使われる画像について少し説明します。
DOOMUでは、空を描く時に使われる画像が、全部で三つあります。これらは、SKY1、SKY2、SKY3という名前で、壁のテクスチャを選択するリストの中にも現れます。従って、壁のテクスチャとしても使えない事は無いですが、不自然になるので普通は使わないと思います。
三つの画像の中のどれが使われるかについては、Ceiling Flatを選択するリストには、空を表すテクスチャは「F_SKY1」の一つしか無いので、直接指定する事は出来ません。DOOMでは、どの空の画像が使われるかは、ゲームマップの値と対応しており、ゲームマップとは独立に自由に選ぶ事は出来ません。
DOOMUでは、MAP01からMAP11までがSKY1、MAP12からMAP20までがSKY2、MAP21からMAP32までがSKY3の画像が使われるように決められています。DOOM/Ultimate DOOMでは、各エピソードごとに一つの空の画像が対応します。