13 Special Sectorを作る


LinedefにSpecial属性があるように、セクターにもSpecial属性を設定する事が出来ます。幸いLinedefのように100以上も機能があるわけでは無いので、比較的把握し易いと思います。全部で15個ありますが、ほとんどが、ライティングを制御する種類のものか、プレイヤーにダメージを与える種類のものです。
DOOMには、プレイヤーが中に入るとヘルスが奪われていく毒々しい液体のプールがよく見られますが、これらはセクターのSpecial属性を設定する事で実現します。通常は、これらのセクターの床のFlatには、液体が波打って見えるようなアニメーションをするテクスチャを使いますが、実際には、ダメージを与える特性は、テクスチャ自体には関係ありません。
今回は、こうした毒性のあるプールを堀状にしたセクターを作ってみたいと思います。

まず、グリッドを64にして、図1のように、外側から、縦横の長さがグリッドで、5個分、3個分、1個分の四角いセクターを順に作って下さい。



図1 三つのセクターを作ったところ

WadCraftでは、このようにセクターの中にセクターを作る時は、必ず外側から内側に進む順番で作って下さい。既にあるセクターを外側から囲むようにセクターを作っても警告は出しませんが、WadCraftではセクター作成時に、外側にあるセクターは認識しますが、内側にあるセクターは認識しないので、そのままだとマップの定義がおかしくなります。
ちなみに、セクターの中にセクターを作るというのは、正確に言うと、セクターの中をくり抜いてVoid Spaceを作り、その中にセクターを作る事になります。結局、セクター同士はオーバーラップはしない構造になっています。このため、セクターの中にあるセクターを削除した時は、その部分がVoid Spaceになるだけで、輪郭の部分のLinedefは残るので、結局外側のセクターも削除しなければならない事があります。

次に、『堀』の部分になるセクターを選択して、編集ダイアログボックスから、Floor Heightを-24、Floor Flatに「NUKAGE1」、Light Levelを128、Specialに「07 NUKAGE DAMAGE」を選択して下さい。
次に、一番内側のセクターを選択して、編集ダイアログボックスから、Floor Flatに「FLAT20」、Ceiling Flatに「FLAT2」、Light Levelを255、Specialに「08 GLOWING LIGHT」を選択して下さい。
次に、一番外側のセクターを選択して、Floor Flatを「FLAT20」、Light Levelを128にして下さい。
いずれも、指定した所以外はデフォルトで構いません。
最後に、一番内側のセクターにThingの「Chainsaw」を置いて、一番外側のセクターの適当な場所に「Player 1 start」を置いて、マップをプレイしてみて下さい。
図2が、出来上がったマップの様子です。



図2 出来上がったマップをプレイしたところ

中心にあるセクターは、ライトが明るくなったり暗くなったり、常に変化しているのが分かると思います。また、堀の中に入るとヘルスが奪われる事を確認してみて下さい。

以降ここでは、セクターのSpecial属性の機能について、一つ一つ解説していきます。
まずは、ダイアログボックスのドロップダウンリストに表示される項目を全て挙げてみます。
00 No special characteristic
01 FLICKERING LIGHTS
02 STROBE FAST
03 STROBE SLOW
04 STROBE HURT
05 HELLSLIME DAMAGE
06 -
07 NUKAGE DAMAGE
08 GLOWING LIGHT
09 SECRET SECTOR
10 DOOR CLOSE IN 30 SECONDS
11 EXIT SUPER DAMAGE
12 SYNC STROBE SLOW
13 SYNC STROBE FAST
14 DOOR RAISE IN 5 MINUTES
15 -
16 SUPER HELLSLIME DAMAGE
17 FIRE FLICKER
「01 FLICKERING LIGHTS」は、ライトが明るくなるのと暗くなるのが、ランダムな間隔を置いて交互に繰り返す機能です。このようなライトの明暗が交互に繰り返される機能の場合、基本的には、そのセクターに設定されているライトレベルが明るい時の値、隣接するセクターの中で最も暗いセクターのライトレベルが暗い時の値になります。
「02 STROBE FAST」と「03 STROBE SLOW」は、それぞれ0.5秒と1秒の間隔を置いて明暗を繰り返します。ただし、STROBEの場合は、隣接するセクターの中に当のセクターよりも暗いライトレベルを持つものが無かった場合は、ライトレベルが0を暗い方の値として明滅します。これに対して、STROBE以外の場合は、当のセクターよりも暗いセクターが周りに無かった時は何も変化しません。
「04 STROBE HURT」は、STROBE FASTとSUPER HELLSLIME DAMAGE(後述)とが合わさった効果を持ちます。
「05 HELLSLIME DAMAGE」は、そのセクターの中にいる間、一秒ごとに10%のヘルスが奪われます。ただし、スキルレベルが1(I'M TOO YOUNG TO DIE.)の時は、半分の5%ずつになります。またアーマーがある場合は、奪われるヘルスの量がアーマーの方に少し分散されます。
「07 NUKAGE DAMAGE」は、ダメージの大きさがHELLSLIME DAMAGEの半分になるだけで、その他の性質は同じです。
「08 GLOWING LIGHT」も、ライトの明暗を繰り返す種類のものですが、明るさが連続的に変化するところが違います。
「09 SECRET SECTOR」は、そのセクターがシークレットである事を指定します。ゲームプログラムでは、レベルのスタート時に、このSpecial属性を持つ全てのセクターをカウントしておき、レベルをクリアするまでに見つけられたシークレットの数と照合して、インターミッション画面での「SECRET」のパーセンテージを決めます。
「10 DOOR CLOSE IN 30 SECONDS」は、レベルの開始時から30秒後に閉じるドアとして働きます。
「11 EXIT SUPER DAMAGE」は、SUPER HELLSLIME DAMAGEと同じ量のダメージを与えた後、もしヘルスの残りが10%以下だと次のレベルに進みます。
「12 SYNC STROBE SLOW」と「13 SYNC STROBE FAST」は、それぞれSTROBE SLOWとSTROBE FASTと動作は同じですが、これらの属性を持つセクターは、明滅するタイミングが全て同時になります。複数のセクターで、明滅するタイミングを合わせたい時に使います。
「14 DOOR RAISE IN 5 MINUTES」は、レベルの開始時から5分後に開くドアとして働きます。
「16 SUPER HELLSLIME DAMAGE」は、ダメージの大きさがHELLSLIME DAMAGEの二倍になるだけで、その他の性質は同じです。
「17 FIRE FLICKER」も、FLICKERING LIGHTSのようにランダムな間隔で明暗を繰り返しますが、その間隔がFLICKERING LIGHTSよりも短いのが特徴です。
6番と15番は空白になっていますが、これらの番号には何かしらの機能を持たせる予定があったようですが、結局実現しないまま終わったようです。プログラムの都合上、これらの番号も選択できるようになっていますが、選択はしないで下さい。ゲームプログラムでは、予期せぬ番号のSpecial属性を持つセクターにプレイヤーが入った場合、ゲームは強制終了します。