Build Engineは、 Ken's Labyrinthの作者であるKen Silvermanが3D Realms向けに開発した一人称視点シューティングゲームエンジンです。Doomエンジンと同様に、 Build Engineはセクターと呼ばれる閉じた2D形状を使用して2次元グリッド上に世界を表現し、スプライトと呼ばれる単純な平面オブジェクトを使用して世界のジオメトリにオブジェクトを配置します。
Build Engineは一般的に2.5Dエンジンとみなされています。これは、基本的なワールドジオメトリが高さ要素を追加した2次元であるため、各セクターで天井の高さと床の高さが異なるように設定できるからです。床の高さは上下に調整でき、天井の高さも同様です(互いの相対的な高さに関して)。床と天井はセクターの壁に沿ってヒンジで固定できるため、傾斜をつけることができます。この情報に基づいて、Build Engineは、実際の3D環境を作成する現代のゲームエンジンとは異なり、3次元に見えるようにワールドをレンダリングします。
Build Engineは、 1996年のファーストパーソン・シューティングゲーム『デューク・ニューケム3D』のエンジンとして最も有名になったが、他にも多くのゲームで使用された。
セクターはレベルのレイアウトの構成要素であり、上から見たときに2次元の多角形の輪郭で構成され、セクターの上面と下面にそれぞれ異なる高さが与えられて3次元空間が作られます。[ 2 ]したがって、すべての壁は完全に垂直であり、そうでないように見えるものは技術的には傾斜した床または天井です。理解を助けるために「部屋」という言葉を大まかな代替語として使用できますが、ゲーム世界の1つの部屋は多くのセクターで構成され、視差のある空は屋外の錯覚を与えることができます。セクターはリアルタイムで操作できます。形状、高さ、傾斜などのすべての属性は、以前のDoomエンジンとは異なり、ゲームによって「オンザフライ」で変更できます。これにより、 Bloodで見られるような破壊可能な環境をゲームに持つことができました。[ 2 ]この技術は、同様の動的な環境を特徴とする以前のApogee SoftwareのタイトルRise of the Triadでのプッシュウォールの使用に似ています。
このエンジンをベースにしたゲームの開発者は、特別な予約済みの「スプライト」(ゲームオブジェクト)を使用しました。これらはしばしば「セクターエフェクター」と呼ばれ、特別なタグ(意味が定義された番号)を付けることで、レベルデザイナーが動的な世界を構築できるようにしました。同様のタグ情報は、セクターの壁や床エリアにも付けることができ、セクターに特別な特性を持たせることができました。たとえば、特定のセクターエフェクターでは、プレイヤーがその上を歩くと床をすり抜けて別のセクターにテレポートするように設定できます。実際には、これを利用して、穴に落ちてより大きな部屋に行く効果や、飛び込んで水中を探索できる水域を作成することができました。セクターには、エレベーターやリフトのように動作するタグを付けることもありました。
セクターは、同時に表示されない限り、互いに重なり合うことができました(2 つの重なり合うセクターが同時に表示されると、鏡の迷路のような効果が生じました)。[ 3 ]これにより、デザイナーは、たとえば、別の部屋の上部に伸びているように見える空気ダクトを作成することができました(ただし、編集プロセスの多くで使用される 2D 視点のため、デザイナーにとってこれを行うのは困難でした)。これにより、デザイナーは物理的に不可能な世界を作成することができました(たとえば、小さな建物の出入り口が、建物自体よりも大きな部屋のネットワークにつながるなど)。これらすべてにより、エンジンを使用したゲームは 3D のように見えましたが、Quakeエンジンを使用したQuakeなどの後のファーストパーソン シューティング ゲームになるまで、エンジンが実際にワールド ジオメトリを真の 3D 情報として保存し、単一のマップで 1 つのエリアを別のエリアの上に積み重ねることが非常に可能になることはありませんでした。
ケン・シルバーマンのビルドエンジンの後のバージョンでは、ゲームで選択したアートタイルをボクセルで作られた3Dオブジェクトに置き換えることが可能になった。この機能はデューク・ニューケム3Dで使用するには遅すぎたが、後のビルドエンジンゲームの一部で見られた。ブラッドでは、武器や弾薬のピックアップ、パワーアップ、視覚的な装飾(「クレイドル・トゥ・グレイブ」レベルの墓石、「ダーク・カーニバル」の椅子や水晶玉など)にボクセルが使用されている。シャドウ・ウォリアーでは、この技術がさらに高度に活用されており、壁に配置できるボクセルが使用されている(ゲーム内のすべてのスイッチとボタンはボクセルである)。
ケンは数年間、ボクセルのみに基づいた最新のエンジンであるVoxlapの開発に取り組んでいた。
ビルドエンジンの制約の一つとして、レベルジオメトリでは、任意の壁に対してセクター間の接続を1つしか表現できないという点が挙げられます。そのため、上下に空間のある棚のような単純な構造物でも作成は不可能ですが、スプライトやボクセルで代用できる場合もあります。複数階建ての建物は技術的には作成可能ですが、そのような建物では、別の窓の真上または真下に外部窓を設けることはできません。さらに、各階への階段、エレベーター、その他のアクセス方法についても、ある程度の工夫が必要になります。
Build Engine を使用したゲームのいくつか ( Shadow Warrior、Blood、Redneck Rampageなど) は、追加のレンダリング パスで別のセクターの「ビューポート」を表示することでこれを回避しました。このテクニックは、ルーム オーバー ルーム(ROR) と呼ばれ、プレイヤーにはシームレスに見えます。ROR は、垂直方向の構築範囲の拡張に加えて、水域に半透明の表面を与えるためによく使用されました。ROR は Build Engine 自体の機能ではなく、ゲーム開発者によって作成された「トリック」でした。Duke Nukem 3Dで、不透明な水中セクションの場合のように、これを回避するために使用されたトリックは、 Rise of the Triad のエレベーターと同様に、それを模倣するように作られたマップの別の領域にプレイヤーを素早く転送することでした。
2011年にEDuke32に「トゥルー・ルーム・オーバー・ルーム(TROR)」と呼ばれる機能が追加されました。これは、複数のセクターを垂直方向に積み重ねることができ、各セクターの壁がそれぞれ独立した接続を持つため、垂直方向に制限のない構造物を作成できる機能です。RORとTRORの違いは、TRORセクターはビューポータルを使用して別々の場所から描画されるのではなく、マップデータとエディタ上で物理的に重なり合うため(作成と視覚化が容易)、真のルーム・オーバー・ルームと呼ばれる点です。TRORはEDuke32ソースポートの機能であり、ゲーム機能やトリックではありません。
Build Engineは基本的にケン・シルバーマンによる一人プロジェクトだったが、プロジェクトの初期段階ではジョン・カーマックに助言を求めた。 [ 3 ]シルバーマンはBuildのデモに基づいて3D Realmsに採用された。3D Realmsに入社後もエンジンの改良を続けたが、シルバーマンによれば、プロジェクトで他の3D Realms社員とチームを組んだことはなく、特定のゲームに合わせてエンジンを調整するよう指示されたこともなかったという。[ 2 ]
2000年6月20日(彼のウェブサイトによると)、ケン・シルバーマンは独自の非商用ライセンスの下でBuild Engineのソースコードを公開した。[ 12 ] [ 1 ]シルバーマンは、 id SoftwareがDoomエンジンのソースコードを公開して前例を作った後、ファンがBuild Engineのソースコードを公開するように圧力をかけてきたと説明した。[ 2 ]
Matt Saettler (Matteus) による、 Duke Nukem 3D を改造するためのプロジェクトであるEDukeのバージョン 2.0 は、ビルドソースのリリース直後に 3D Realms に送られ、パッケージ化されました。これにより、Duke Nukem 3D には、3D Realms がオリジナルの Duke で使用していたプリビルドライブラリが残されました。(この時点では、 Duke Nukem 3DとEDuke はどちらもクローズドソースでした。)
2.1のプライベートベータ版では、サエトラーはシルバーマンのビルドソースをデュークのソースコードに統合しようと試みたが、プロジェクトはバグだらけのプライベートベータ版がいくつか出来上がる前に頓挫した。ビルドゲームの完全コンバージョンチームの中には、シルバーマンのビルドコードを直接使用することにしたチームもあり、Mapsterとして知られるビルドエディタの強化版も開発された。
当時、3D Realmsのフォーラムでは、BuildをマルチタスクOSに移植することは不可能だと多くの人が主張していました。なぜなら、Buildはマルチタスク環境では利用できない大きな連続メモリブロックを必要とするからです。しかし、現代のOSはすべて仮想メモリを使用しているため、アプリケーションは連続した物理メモリを使用せずに連続した論理メモリを取得できます。そのため、この主張は検証に耐えられませんでしたが、当時の常識では、BuildをそのようなOSに移植することは不可能だと考えられていました。
2003年4月1日、数年にわたる反対の主張の後、3D RealmsはGPL-2.0以降のライセンスでDuke Nukem 3Dのソースコードを公開した。 [ 13 ]その後間もなく、Ryan C. Gordon (icculus)とJonathon Fowler(JonoF)の両名が、Build Engineを含むゲームのソースポートを作成して公開した。Duke Nukem 3DはWindows NTシリーズ(Windows 2000/XPを含む)やLinux、その他のUnix系オペレーティングシステムで快適にプレイできたため、ソースポートへの関心が急上昇した。
Ryan C. Gordon (icculus) は、他の人々の協力を得て、SDLを使用してエンジンの最初の移植版を作成しました。移植版は、最初はLinux用、次にCygwin用、そして最後にWatcom C++コンパイラを使用したネイティブ Windows ビルド用でした。このコンパイラは、オリジナルの DOS ビルドで使用されていたものです (Watcom C++ でコンパイルされていますが、ビルドはプレーン C です)。[ 14 ] Matt Saettler がこれを使用してEDuke をWindows に移植するという話もありましたが、実現しませんでした。ソースが公開された後、Duke Nukem 3Dの移植版が作成されました。 [ 15 ]これは David Koenig (Rancidmeat) によって Duke3d_w32 としてフォークされ、さらにマルチプレイヤーに特化した xDuke、hDuke、nDuke、rDuke にフォークされました。
2番目のソースポートは、Jonathon Fowler (JonoF) によって Windows に、後に Linux と Mac OS X に移植されました。このポート JFDuke3D は、当初はネットワークゲームのサポートがありませんでしたが、開発の後半で追加されました。長期間の休止の後、 2020 年にGitHubに公開され、2021 年と 2024 年に更新されました。[ 16 ] [ 17 ] [ 18 ]また、Ken-Build テストゲームも移植しました。[ 19 ]
Build Engine を真の 3D レンダラーにアップデートする作業は、シルバーマン自身が引き受けた。Polymost のリリース ノートで彼は次のように書いている。「3D Realms が Duke Nukem 3D のソース コードを公開したとき、誰かが OpenGL または Direct3D に移植するだろうと思った。ところが、数か月経っても、Build の真のハードウェア アクセラレーション 移植に取り組んでいる人の兆候は全く見られず、不可能だと言う人ばかりだった。最終的に、これを実現する唯一の方法は自分でやるしかないと悟った。」[ 20 ]
Polymostレンダラーは、 OpenGLを使用した3Dハードウェアアクセラレーショングラフィックスを可能にした。また、「hightile」という機能も導入し、ゲームのオリジナルテクスチャを様々なフォーマットの高解像度テクスチャに置き換えることを可能にした。Polymostは、Jonathon Fowler氏のJFBuild、JFDuke3D、JFShadowWarrior、およびそれらのコードベースから派生したソースポートで利用されている。
ゲームコードの1か月後、EDuke 2.0のソースも公開され、[ 21 ]続いてEDuke 2.1の最後のプライベートベータ版のソースが公開されました(リリース版には至りませんでした)。Richard Gobeille (TerminX) はEDuke 2.0のソースをJFDuke3Dと統合してEDuke32を作成しました。icculusコードをベースにした別の移植版Winedukeはその後開発が中止され、EDuke32が現在も開発中の唯一のEDuke移植版となっています。[ 22 ]
EDuke32は、 NAMとWWII GIというゲームもサポートしています。これは、EDukeがこれらのゲームのコードを基に開発されたためです。
2009年4月1日、EDuke32向けに開発されたOpenGLシェーダーモデル3.0レンダラーが発表されました。これは、ケン・シルバーマン氏のPolymostと区別するためにPolymerと名付けられました。当初はエイプリルフールのジョークと思われていましたが、後にこのレンダラーは公開されました。Polymostに長年にわたって追加されてきた機能のほとんどに加え、リアルタイムの動的なカラーライティングやシャドウマッピング、スペキュラーマッピングやノーマルマッピング、その他のシェーダーベースの機能など、より現代的なエフェクトも実現しています。Polymerは完全に使用可能ですが、技術的には未完成で最適化されておらず、現在も開発中です。EDuke32の開発者は、Polymerが速度向上のために書き直されれば、Polymostよりも優れたレンダラーであり、見た目もPolymostと全く同じにできるため、Polymostを完全に置き換えるだろうと述べています。
Shadow Warrior のソースコードは 2005 年 4 月 1 日にGPL-2.0 以降のライセンスで公開され、JonoF は 2005 年 4 月 2 日にそのソースポートである JFShadowWarrior を公開しました。[ 23 ]しかし、彼は公開の約 1 週間前にShadow Warrior のソースコードにアクセスできたことを認めています。 [ 24 ]ポートは部分的に未完成の状態で放置され、 2020 年にGitHubに掲載され、2021 年と 2024 年に更新されました。以前のバージョンは後に Ben Smit (ProASM) によって SWP ポート用にフォークされました。[ 25 ] Shadow Warriorの icculus ポートが開始されましたが、アルファ版のままでした。[ 26 ] Ion Furyと EDuke32 の開発者による VoidSW の移植版が、2020 年 5 月 21 日にパブリック ベータ版になった。[ 27 ] Justin Marshall (IceColdDuke) による IcedSW と呼ばれる以前のバージョンのフォークも存在する。[ 28 ]
Transfusionプロジェクトは、BloodをDarkPlacesエンジンで再現することを目的としていましたが[ 29 ]、2007年の時点では、このプロジェクトは完成には程遠く、プレイ可能なデスマッチマルチプレイヤーは実装されていました。同様のプロジェクトとして、 Monolithが作成したBloodのシングルプレイヤーレベルすべてをEDuke32上で再現するBloodCM [ 30 ]や、Bloodのアセットとレベルの一部をZDoomに移植するZBlood [ 31 ]があります。eRampageプロジェクトは、Redneck RampageをEDuke32用に完全に変換しようと試みました。 [ 32 ]一方、DN3DooM、[ 33 ] [ 34 ] [ 35 ] Shadow Warrior TC、[ 36 ] Doomed Redneck、[ 37 ] Re-Blood、[ 38 ] Re-PowerSlave、[ 39 ] VietDoom、[ 40 ] [ 41 ] [ 42 ] [ 43 ]およびFatedoom [ 44 ]は、これらのゲームをGZDoomに適合させています。
Witchaven、Witchaven II: Blood Vengeance、William Shatner's TekWar、およびCorridor 8: Galactic Warsのソースコードも、開発者 Les Bird によって 2007 年に公開されました。[ 45 ]ただし、これらの法的地位は不明ですが、Witchaven用に派生した EGwhaven パッチは、ゲームのSteamおよびGOG.com での再リリースに含まれています。 [ 46 ] JonoF は、2024 年 3 月 3 日にWitchavenとTekWarの移植版をリリースしました。 [ 47 ]また、派生した ETekWar と EWitchaven の移植版もプロトタイプ化されました。[ 48 ] Bloodのさまざまなアルファ版の完全なソースコードも、時間の経過とともにリークされています。[ 49 ]
これはその後、 BloodCMの以前の作者である Alexander Makarov (M210) によって 2017 年 5 月にLibGDXを使用してJavaにリバース エンジニアリングされたポート BloodGDXの参照として使用されました。[ 50 ]これは、作者が2016 年 1 月にリリースしたTekWarの以前のポートに続くもので、 [ 51 ] Witchaven、[ 52 ] Redneck Rampage、[ 53 ] Duke Nukem 3D、PowerSlave、Legends of the Seven Paladins、Shadow Warriorのポートが続き、現在はすべてまとめて BuildGDX と呼ばれています。[ 54 ] DukeGDX は、 Duke Nukem 3Dの20th Anniversary World Tourエディションのファイルもサポートしています。[ 55 ]
Bloodの別の移植版である NBlood は、EDuke32 [ 56 ]と、作成者の以前の Rednukem ポート for Redneck Rampage ( Duke Nukem 3DとDuke Nukem 64もサポート) をベースに、Alexey Khokholov (Nuke.YKT) によって 2019 年 1 月にリリースされました。[ 57 ] [ 58 ] PowerSlave用の EDuke32 ポートであるPCExhumedは、Nuke.YKT の協力を得て Barry Duncan (sirlemonhead) によって 2019 年 11 月 21 日にリリースされました。[ 59 ]ソース ポート Raze は、JFDuke3D、SWP、NBlood、Rednukem、PCExhumed など、さまざまな Build エンジン ポートをフォークし、開発者独自のGZDoom をベースにした新しい基盤バックエンドに結び付けています。[ 60 ] NBloodとPCExhumedも、 Amiga、PlayStation Vita、Nintendo 3DSなどのプラットフォームに適応させる目的でJFBuildにバックポートされている。[ 61 ]
Build の後継を設計しようと何度も試みた後、Silverman は 2006 年に再びそのようなアイデアの実験を開始しました。彼は、2007 年から 2009 年までサマー キャンプで子供たちに 3D ゲーム プログラミングを教えているときに、この作業 (現在はBuild 2と呼ばれています) を使用し、2011 年にプロジェクトへの興味を失うまで作業が続けられました。より高度な照明システム、エンティティのボクセル レンダリング、真の部屋オーバールーム 3D 空間を特徴とし、少なくとも部分的にはオリジナルの Build との後方互換性が維持されています。Silverman は、2018 年 3 月 7 日にドラフトを公開しました。[ 62 ] [ 63 ]ソース コードは、2019 年 6 月 8 日に独自の非商用ライセンスの下で公開されました。[ 64 ]
2005年4月1日、3D RealmsはGPLの下でSWのエンジンのソースコードを公開した。ソースの公開時期から、エイプリルフールのジョークだと考えられていたが、翌日にはJFShadowWarriorというタイトルの最初のソースポートが生まれ、JFDuke3Dの改良とLinuxサポートが盛り込まれた。
…私[JonoF]は1週間先行していた…
ゲームの現存する唯一の部分は、IntraCorpの閉鎖直前にリリースされた、7つの武器と10体の敵が登場する4レベルのデモです。...また、デモのコンテンツをDoomに移植するFatedoomというMODもあります。
パッチ適用済み (Enhanced) と、変更されていない体験を好む方向けの小売版 (Original) の 2 つのビルドが提供されます。どちらのビルドも、カスタム構成ツールを使用して DOSBox 上で動作します。Enhanced ビルドには、必須のコミュニティ プロジェクトである EGwhaven で導入された修正が含まれており、ゲームのさまざまなバグや問題に対処しています (このリリースへの貢献に対して ETTiNGRiNDER に感謝します)。さらに、コントロールは、最近のファーストパーソン ゲームでデフォルトとして期待されるものに再マッピングされています。
チームの 1 人は、Raze は「レンダラー、サウンド システム、入力/システム インターフェイス コードをゲーム間で共有する」ため、BuildGDX に少し似ていると考えてください、と述べた。
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク){{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)