L i n u x 版 D o o m の ソ ー ス コ ー ド は 1 9 9 7 年 12 月 23 日 に 非 商 用 利 用 の 権 利 を 認 め た ラ イ セ ン ス の 下 で 公 開 さ れ 、 そ の 約 一 週 間 後 の 1 9 9 7 年 12 月 29 日 に L i n u x 版 D o o m I I の ソ ー ス コ ー ド も 公 開 さ れ た [ 2 ] 。 そ の 後 、 こ の ソ ー ス コ ー ド は 1 9 9 9 年 10 月 3 日 に G N U G e n e r a l P u b l i c L i c e n s e に 基 づ い て 再 公 開 さ れ た [ 3 ] [ 4 ] 。 そ れ 以 降 に 数 十 の 非 公 式 の D o o m ソ ー ス 移 植 が 制 作 さ れ 、 そ れ に よ り こ れ ま で サ ポ ー ト さ れ て い な か っ た オ ペ レ ー テ ィ ン グ シ ス テ ム 上 で D o o m を 実 行 で き 、 時 に は 新 し い 機 能 で エ ン ジ ン の 機 能 を 根 本 的 に 拡 張 す る 。
エ ン ジ ン は 3 D 空 間 を レ ン ダ リ ン グ す る が 、 そ の 空 間 は 2 次 元 の 平 面 図 か ら 投 影 さ れ る 。 視 線 は 常 に 床 と 平 行 で あ り 、 壁 は 床 に 対 し て 垂 直 で な け れ ば な ら ず 、 立 体 構 造 や 傾 斜 エ リ ア ︵ 角 度 の 異 な る 床 と 天 井 ︶ を 作 成 す る こ と は で き な い 。 こ れ ら の 制 限 に も か か わ ら ず 、 エ ン ジ ン は id の 以 前 の W o l f e n s t e i n 3 D エ ン ジ ン か ら の 技 術 的 飛 躍 を 示 し て い る 。 D o o m エ ン ジ ン は 、 i d S o f t w a r e の 長 い ゲ ー ム エ ン ジ ン の リ ス ト に 分 類 す る た め に 、 後 に ﹁ i d T e c h 1 ﹂ と 改 名 さ れ た [ 5 ] [ 6 ] 。
D o o m エ ン ジ ン は 、 レ ン ダ リ ン グ を ゲ ー ム の 他 の 部 分 か ら 分 離 す る 。 グ ラ フ ィ ッ ク エ ン ジ ン は 可 能 な 限 り 高 速 で 動 作 す る が 、 ゲ ー ム の 世 界 は ハ ー ド ウ ェ ア に 関 係 な く 35 フ レ ー ム / 秒 で 動 作 す る た め 、 性 能 の 異 な る コ ン ピ ュ ー タ ー を 使 用 し て 複 数 の プ レ イ ヤ ー が 対 戦 す る こ と が で き る [ 7 ]
。
Doomがステージを内部的にどのように表しているのかを示す簡単な構成 エディターのマップビュー
トップダウンから見ると、すべてのDoomのステージは実際には2次元であり、Doomエンジンの主要な制限の一つ、部屋の上に部屋を重ねる(room-over-room)ことが不可能であることを示している。ただし、この制限には希望の兆しがある。右側の最初の画像のように壁とプレイヤーの位置を表す「マップモード」を簡単に表示できる。
基 底 単 位 は 頂 点 で あ り 、 単 一 の 2 D 点 を 表 す 。 次 に 、 頂 点 ︵ ま た は 内 部 的 に 参 照 さ れ る ﹁ 頂 点 ﹂ ︶ を 結 合 し て 、 ﹁ l i n e d e f s ﹂ と 呼 ば れ る 線 を 形 成 す る 。 各 l i n e d e f に は 、 ﹁ s i d e d e f s ﹂ と 呼 ば れ る 1 つ ま た は 2 つ の 側 面 が あ る 。 次 に S i d e d e f を グ ル ー プ 化 し て ポ リ ゴ ン を 形 成 す る 。 こ れ ら は ﹁ セ ク タ ー ﹂ と 呼 ば れ る 。 セ ク タ ー は ス テ ー ジ の 特 定 の 領 域 を 表 す 。
各セクターには、床の高さ、天井の高さ、光のレベル、床のテクスチャ 、天井のテクスチャなど、いくつかのプロパティが含まれている。たとえば、特定のエリアで異なるライトレベルを使用するには、そのエリアに異なるライトレベルで新しいセクターを作成する必要がある。したがって、片側のlinedefは無地の壁を表し、両側のlinedefはセクター間のブリッジラインを表す。
Sidedefは壁のテクスチャ を格納するために使用される。これらは、床や天井のテクスチャから完全に分離している。 各sidedefは3つのテクスチャを持つことができ、これらは中央、上部、下部テクスチャと呼ばれる。片側のlinedefでは、中央テクスチャのみが壁のテクスチャに使用される。両面linedefでは、状況はより複雑である。下部と上部テクスチャは、隣接するセクターの床と天井の高さが異なる場合に隙間を埋めるために使用される。たとえば、下部のテクスチャはステップに使用される。sidedefは中央テクスチャを持つこともできるが、ほとんどない。これは、テクスチャを空中にぶら下げるために使用される。たとえば、透明な棒のテクスチャがケージを形成している場合、これは両面linedefの中央テクスチャの一例である。
D o o m は 、 バ イ ナ リ 空 間 分 割 ︵ B S P ︶ と 呼 ば れ る シ ス テ ム を 利 用 し て い る [ 8 ] [ 9 ] 。 ツ ー ル を 使 用 し て 、 事 前 に ス テ ー ジ の B S P デ ー タ を 生 成 す る 。 こ の プ ロ セ ス は 大 き な ス テ ー ジ で は か な り 時 間 が か か る 場 合 が あ る た め 、 D o o m で は 壁 を 移 動 す る こ と は で き な い 。 ド ア と リ フ ト は 上 下 に 動 く が 、 ど れ も 横 に は 動 か な い 。
レ ベ ル は バ イ ナ リ ツ リ ー に 分 割 さ れ る 。 ツ リ ー 内 の 各 位 置 は ス テ ー ジ の 特 定 の 領 域 を 表 す ﹁ ノ ー ド ﹂ で あ る ︵ ル ー ト ノ ー ド は ス テ ー ジ 全 体 を 表 す ︶ 。 ツ リ ー の 各 分 岐 に は 、 ノ ー ド の 領 域 を 2 つ の サ ブ ノ ー ド に 分 割 す る 分 割 線 が あ る 。 同 時 に 、 こ の 分 割 線 は l i n e d e f を ﹁ s e g ﹂ と 呼 ば れ る ラ イ ン セ グ メ ン ト に 分 割 す る [ 10 ] 。
ツ リ ー の 葉 に は 凸 多 角 形 が あ り 、 ス テ ー ジ を さ ら に 分 割 す る 必 要 は な い 。 こ れ ら の 凸 多 角 形 は サ ブ セ ク タ ー ︵ ま た は ﹁ S セ ク タ ー ﹂ ︶ と 呼 ば れ 、 特 定 の セ ク タ ー に バ イ ン ド さ れ る 。 各 サ ブ セ ク タ ー に は 、 関 連 す る s e g の リ ス ト が あ る [ 9 ] 。
B S P シ ス テ ム は 、 サ ブ セ ク タ ー を レ ン ダ リ ン グ に 適 し た 順 序 に 並 べ 替 え る 。 ア ル ゴ リ ズ ム は か な り 単 純 で あ る ‥
(一) ル ー ト ノ ー ド か ら 開 始 す る 。
(二) こ の ノ ー ド の 子 ノ ー ド を 再 帰 的 に 描 画 す る 。 カ メ ラ に 最 も 近 い 子 ノ ー ド は 、 ス キ ャ ン ラ イ ン ア ル ゴ リ ズ ム を 使 用 し て 最 初 に 描 画 さ れ る 。 こ れ は 、 カ メ ラ が ノ ー ド の 分 割 線 の ど ち ら 側 に あ る か を 見 る こ と で 分 か る 。
(三) サ ブ セ ク タ ー に 達 し た ら 、 そ の サ ブ セ ク タ ー を 描 画 す る [ 11 ] 。
ピ ク セ ル の 列 全 体 が 満 た さ れ る ︵ つ ま り 、 こ れ 以 上 隙 間 が 残 ら な く な る ︶ と 、 プ ロ セ ス は 完 了 す る 。 こ の 順 序 付 け に よ り 、 表 示 さ れ て い な い オ ブ ジ ェ ク ト の 描 画 に 時 間 を 費 や す こ と が な く な り 、 そ の 結 果 、 速 度 の ペ ナ ル テ ィ な し に マ ッ プ を 非 常 に 大 き く す る こ と が で き る 。
D o o m の 壁 は す べ て 垂 直 に 描 か れ て お り 、 そ の た め に 上 下 を 正 し く 見 る こ と が で き な い 。 ﹁ y - s h e a r i n g ﹂ を 使 っ て ル ッ ク ア ッ プ / ダ ウ ン を 行 う こ と が 可 能 で 、 多 く の 最 新 の D o o m の ソ ー ス 移 植 や 、 ﹃ H e r e t i c ﹄ の よ う な エ ン ジ ン を 使 用 す る 後 の ゲ ー ム で も 同 様 に 行 え る 。 本 質 的 に は 、 画 面 内 で 水 平 線 を 上 下 に 移 動 さ せ る こ と で 機 能 し 、 事 実 上 よ り 高 い 表 示 領 域 に ﹁ 窓 ﹂ を 提 供 す る 。 窓 を 上 下 に 動 か す こ と で 、 上 下 を 見 て い る よ う な 錯 覚 を 与 え る こ と が で き る 。 し か し 、 こ れ で は 、 プ レ イ ヤ ー が さ ら に 上 下 に 見 た と き に 視 界 が 歪 ん で し ま う 。
D o o m エ ン ジ ン は 、 B S P ツ リ ー を 横 断 す る 際 に 壁 を レ ン ダ リ ン グ し 、 最 も 近 い s e g が 最 初 に 描 画 さ れ る よ う に 、 カ メ ラ か ら の 距 離 順 に サ ブ セ ク タ ー を 描 画 す る 。 s e g が 描 画 さ れ る と 、 リ ン ク さ れ た リ ス ト に 保 存 さ れ る 。 こ れ は 、 後 か ら レ ン ダ リ ン グ さ れ る 他 の s e g を ク リ ッ プ し て 、 オ ー バ ー ド ロ ー を 減 ら す た め に 使 用 さ れ る 。 こ れ は 後 に ス プ ラ イ ト の エ ッ ジ を ク リ ッ プ す る と き に も 使 わ れ る 。
エ ン ジ ン が 特 定 の x 座 標 で 固 体 ︵ 片 面 ︶ の 壁 に 到 達 し た ら 、 そ の 領 域 に は も う 線 を 引 く 必 要 は な い 。 ク リ ッ ピ ン グ の た め に 、 エ ン ジ ン は 固 体 の 壁 に 達 し た 画 面 の 領 域 の ﹁ マ ッ プ ﹂ を 保 存 す る 。 こ れ に よ り 、 プ レ イ ヤ ー か ら 見 え な い ス テ ー ジ の 遠 く の 部 分 を 完 全 に ク リ ッ ピ ン グ で き る 。
D o o m の グ ラ フ ィ ッ ク フ ォ ー マ ッ ト は 、 壁 の テ ク ス チ ャ を 垂 直 列 の セ ッ ト と し て 格 納 す る 。 こ れ は 、 本 質 的 に 、 テ ク ス チ ャ の 垂 直 列 を た く さ ん 描 く こ と に よ っ て 壁 を レ ン ダ リ ン グ す る レ ン ダ ラ ー に と っ て 便 利 で あ る 。
床 と 天 井 ︵ ﹁ フ ラ ッ ト ﹂ ︶ を 描 画 す る シ ス テ ム は 、 壁 に 使 用 さ れ る シ ス テ ム よ り も 簡 潔 で は な い 。 フ ラ ッ ト は 、 塗 り つ ぶ し の よ う な ア ル ゴ リ ズ ム で 描 画 さ れ る た め 、 不 良 な B S P ビ ル ダ ー を 使 用 す る と 、 床 ま た は 天 井 が 画 面 の 端 ま で 流 れ 落 ち る ﹁ 穴 ﹂ が で き て し ま う 場 合 が あ る 。 こ れ は 、 プ レ イ ヤ ー が n o c l i p チ ー ト を 使 用 し て ス テ ー ジ 外 に 移 動 し た 場 合 、 床 と 天 井 が 空 の ス ペ ー ス の 上 に ス テ ー ジ か ら は み 出 し て 見 え る 理 由 で も あ る 。
床 と 天 井 は ﹁ v i s p l a n e s ﹂ と し て 描 画 さ れ る 。 こ れ ら は 、 特 定 の 高 さ 、 光 レ ベ ル 、 テ ク ス チ ャ 床 ま た は 天 井 か ら の テ ク ス チ ャ の 水 平 方 向 の 流 れ を 表 し て い る ︵ 2 つ の 隣 接 す る セ ク タ ー が ま っ た く 同 じ 床 を 持 つ 場 合 、 こ れ ら は 1 つ の v i s p l a n e に 統 合 さ れ る ︶ 。 v i s p l a n e の 各 x 位 置 に は 、 描 画 さ れ る テ ク ス チ ャ の 特 定 の 垂 直 線 が あ る 。
各 x 位 置 に 1 本 の 垂 直 線 を 描 画 す る こ の 制 限 の た め 、 v i s p l a n e を 複 数 の v i s p l a n e に 分 割 す る 必 要 が あ る 場 合 が あ る 。 た と え ば 、 2 つ の 同 心 円 の 正 方 形 で 床 を 表 示 す る こ と を 検 討 す る 。 内 側 の 正 方 形 は 、 周 囲 の 床 を 垂 直 に 分 割 す る 。 内 側 の 四 角 形 が 描 か れ る そ の 水 平 範 囲 で は 、 周 囲 の 床 に 2 つ の v i s p l a n e が 必 要 と な る 。
こ れ が 、 長 い 間 、 多 く の マ ッ パ ー を 苛 立 た せ て き た D o o m の 古 典 的 な 制 限 の 一 つ に つ な が る 。 D o o m に は 、 v i s p l a n e s の 数 に 静 的 な 制 限 が 含 ま れ て お り 、 そ れ を 超 過 す る と 、 ﹁ v i s p l a n e オ ー バ ー フ ロ ー ﹂ が 発 生 し 、 ﹁ N o m o r e v i s p l a n e s ! ﹂ ま た は ﹁ v i s p l a n e o v e r f l o w ︵ 1 2 8 o r h i g h e r ︶ ﹂ と い う 2 つ の メ ッ セ ー ジ の い ず れ か と 共 に ゲ ー ム は 終 了 し て D O S に 戻 る 。 v i s p l a n e 制 限 を 呼 び 出 す 最 も 簡 単 な 方 法 は 、 多 数 の v i s p l a n e を 生 成 す る 大 き な 市 松 模 様 の 床 パ タ ー ン で あ る 。
s e g が レ ン ダ リ ン グ さ れ る と 、 s e g の エ ッ ジ か ら 画 面 の 垂 直 エ ッ ジ に 向 か っ て 延 び る v i s p l a n e s も 追 加 さ れ る 。 こ れ ら は 、 既 存 の v i s p l a n e に 到 達 す る ま で 延 長 す る 。 こ の よ う に 機 能 す る た め 、 こ の シ ス テ ム は 、 s e g が エ ン ジ ン 全 体 に よ っ て 順 番 に レ ン ダ リ ン グ さ れ る と い う 事 実 に 依 存 し て い る 。 遠 く に あ る 他 の 人 が ﹁ カ ッ ト オ フ ﹂ で き る よ う に 、 最 初 に よ り 近 い v i s p l a n e を 描 画 す る 必 要 が あ る 。 前 述 の よ う に 、 停 止 し て い な い 場 合 、 床 ま た は 天 井 は 画 面 の 端 ま で ﹁ 流 れ 出 て し ま う ﹂ 。 最 終 的 に 、 v i s p l a n e は 、 特 定 の テ ク ス チ ャ を 描 画 す る 画 面 の 特 定 の 領 域 の ﹁ マ ッ プ ﹂ を 形 成 す る 。
v i s p l a n e は 本 質 的 に 垂 直 の ﹁ ス ト ラ イ プ ﹂ か ら 構 築 さ れ る が 、 実 際 の 低 レ ベ ル の レ ン ダ リ ン グ は テ ク ス チ ャ の 水 平 の ﹁ ス パ ン ﹂ の 形 で 実 行 さ れ る 。 す べ て の v i s p l a n e が 構 築 さ れ た 後 、 そ れ ら は ス パ ン に 変 換 さ れ 、 画 面 に レ ン ダ リ ン グ さ れ る 。 v i s p l a n e を 垂 直 ス ト ラ イ プ と し て 作 成 す る 方 が 簡 単 で す が 、 床 と 天 井 の テ ク ス チ ャ が ど の よ う に 表 示 さ れ る か と い う 性 質 上 、 水 平 ス ト ラ イ プ と し て 描 画 す る 方 が 簡 単 と い う ト レ ー ド オ フ の 関 係 に な っ て い る 。
ステージ内の各セクターには、そのセクターに格納されているもののリンクされたリストがある。各セクターが描画されると、スプライトは描画されるスプライトのリストに配置される。視野内にない場合、これらは無視される。
スプライトのエッジは、以前に描画されたsegのリストをチェックすることによってクリップされる。Doomのスプライトは壁と同じ列ベースのフォーマットで保存されているので、これもレンダラーにとって役立つ。壁の描画に使われているのと同じ関数がスプライトの描画にも使用される。
サブセクターの順序は保証されているが、サブセクター内のスプライトはそうではない。Doomは、描画するスプライト(「vissprites」)のリストを保存し、レンダリング前にリストをソートする。遠くのスプライトは、近くのスプライトより先に描画される。これにより多少のオーバードローが発生するが、通常は無視できる。
たとえば、透明なバーで使用される2辺のラインにある中央テクスチャの最後の問題がある。これらは他の壁ではなく、レンダリングプロセスの最後にスプライトと混合されて描画される。
Doomエンジンは、ファーストパーソン・シューティングゲーム『DOOM』を動作させたことで名声を博し、他のいくつかのゲームでもエンジンが使用された。Doomエンジンのゲームの「ビッグ4」 は、『Doom』『Heretic』『Hexen: Beyond Heretic』『Strife: Quest for the Sigil』と一般的に考えられている。
Doomエンジンで直接制作されたゲーム
『Doom 』 (1993)
『Doom II:Hell on Earth 』(1994)
『Final Doom 』 (1996)
『Heretic』(1994)
『Heretic: Shadow of the Serpent Riders』(1996)
『Hexen: Beyond Heretic』(1995)
『Hexen: Deathkings of the Dark Citadel』(1996)
『Strife: Quest for the Sigil』(1996)
『Chex Quest 』(1996)
DoomまたはDoom IIコードに基づくゲーム