ゴールドスラエンジン:ポータビリティの基礎

ハーフライフのクロスプラットフォームのジャーニーは、エンジン、GoldSrcから始まります。 id Softwareのライセンスを取得した、非常に変更されたQuakeエンジンから派生したValvalのエンジニアリングチームは、モノリシックでプラットフォームの結び目のあるコードベースが将来の拡張を妨げることを早期に認識しました。 GoldSrcは、システムインターフェイスからゲームロジックを分離する抽象的なセットを中心に構築されました。 このモジュール性は、プラットフォーム固有のコードを意味し、レンダリング、入力、サウンド、ネットワークなど、これらのレイヤーを適切に定義するだけでなく、これらのレイヤー全体が再構成されるようにしました。

C(エンジンツーリング用C++)を使用するバルブの決定も、移植性に貢献しました。Cコンパイラは、ほぼすべてのプラットフォームで利用可能で、言語の低レベルの自然許可エンジニアは、プラットフォーム固有のランタイムライブラリに依存することなく、メモリとパフォーマンスを細かく制御できるようにしました。エンジンの動的にリンクされたライブラリシステム(ゲームロジック用のDLLモデル)は、ハードウェアとOSの変更からさらに絶縁されたゲームプレイコードです。

グラフィックの抽象化: レンダリングパイプライン

DirectX、OpenGL、ソフトウェアフォールバック

ハーフライフは、WindowsゲームエコシステムがDirectX 5と6によって支配されたときに1998年に出荷しました。 しかし、バルブは、LinuxとmacOSポートの先頭に計画されています。 レンダリングエンジンは、Direct3D(ラターDirectX)、OpenGL、または純粋なソフトウェアレンダラーによってバックアップできる抽象的な「ラダー」インターフェイスの周りに構築されました。 このアーキテクチャは、ゲームが3Dアクセラレーションなしでハードウェア上で実行することを可能にします。これは、オフィスと初期のLinuxマシンで、各プラットフォームで利用可能なAPIを利用することにも役立ちます。

OpenGL のレンダラーは、DirectX が存在しない Linux と macOS にとって特に重要でした。 バルブは、GLQuake のような技術を採用しましたが、テクスチャ管理とレベルのデテールの大きな改善が進んでいます。 現代の標準で遅いながら、ソフトウェアレンダラーは、ゲームがサポートされていないハードウェアでも起動できるのを防ぎ、クロスプラットフォームのテストに重要な考慮事項を保証します。

シェーダーとグラフィック 機能 ポータビリティ

プログラム可能なシェーダーが標準になった前に、GoldSrcは固定機能のパイプライン機能に依存しました。 バルブ抽象的なテクスチャーブレンド、マルチテキスト化、および構成可能なコールバックの背後にある環境影響。 これは、異なる固定機能パイプラインを持つプラットフォームへのポートを意味し(例えば、PlayStation 2のGSまたはSega DreamcastのPowerVR)は、レンダリングパス全体を書き換えることなく、それらのコールバックを再導入することができます。 同じ抽象化は、ESLのモバイルの努力を緩和しました。

入力とオーディオ:ユニバーサルインターファック

入力 抽象化

Half-Life の入力システムは、ポーリング抽象化レイヤーとして設計されました。このゲームは、キーボード、マウス、ジョイスティックデータのための汎用的な「入力状態」構造をqueried。プラットフォーム固有のコードは、DirectInput、Linux evdev、または macOS HID Manager から構成されていることを埋めました。この設計では、同じプレーヤーの動きと武器コードが USB キーボード、ゲームパッド、またはタッチスクリーン用のオンスクリーン仮想キーボード(後でコミュニティで見られる)で動作するように許可しました。

可聴周波可聴周波可聴周波可搬性

オーディオは、DirectSound、OSS(Open Sound System)、ALSA、Core Audioを抽象化したミドルウェア製品であるMiles Sound Systemを利用しました。 Milesは、Mirage Sound、ストリーミング、サンプル再生の一貫したAPIを提供しています。 バルブの選択肢は、各プラットフォームのオーディオバックエンドの書き換えの負担を軽減しました。 その後、GoldSrc SDKのオープンソースリリースでは、コミュニティ開発者がOpenALまたはSDL mixerでMilesを交換し、プラットフォームのサポートを拡張しました。

ネットワークコードとマルチプレイ: 一定したワイヤプロトコルを維持

ハーフライフのマルチプレイヤーは、UDPベースのクライアントサーバーモデルに依存しています。 つまり、ネットワークプロトコル、パケット形式、デルタ圧縮、ステート同期、下流輸送レイヤーとは独立して定義されています。 これは、Linuxクライアントが同じプロトコルバージョンを理解した限り、Windowsサーバーとその逆に接続できることを意味します。 バルブは、ハーフライフSDKでプロトコル仕様を公表し、サードパーティのサーバーとクライアントの実装を有効にします。

ネットワークの抽象化も、エンドアンネスとパケットのアライメントを処理しました。GoldSrcは、必要に応じて、データをネットワークバイトオーダーに変換するために、LittleLong]、BigFloat)を使用して、さまざまなCPUアーキテクチャ(x86、PowerPC、ARM)間で互換性を確保します。バイトオーダーの正しいネスに対するこの注意は、Slimend-Slim-Slim(Slim-Slim-Slim-Slim-Slim-Slim-Slim-Slim-Slim-Slim-Slim-Slim-Slim-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-Slim-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S

歴史ある港: DreamcastからXboxへの

セガ・ドリームキャスト (2000)

ハーフライフのDreamcastポートは、限られたRAM(16 MBシステム、8 MBビデオ)でゲームをコンソールに持って来る最も野心的だった。 バルブとポートリングパートナーギアボックスソフトウェアは、パワーVRシリーズ2ハードウェア抽象層を使用するためにレンダラーを回転させ、優れたテクスチャ圧縮(VQ)を与えられたが、慎重なアセットトリエージ。 Dreamcastバージョンは、また、「ハーフライフ:ブルーシフト」拡張を導入しました。 パフォーマンスの課題にもかかわらず、GoldSrcSrcがハードウェアスケールを埋め込むことができることを実証しました。

プレイステーション2(2001)

ハーフライフのPS2ポート(ハーフライフ:デケイ)は、日本でしか出荷されていないが、技術的な好奇心のままです。Emotion Engineのベクターユニットを使用して、世界ポリゴンのソートとソフトウェアの変換と照明をスピードアップしました。バルブは、同じレンダリングロジックを維持しながら、Sonyの独自のGSKitとOpenGLの呼び出しを交換しなければなりません。オーディオのバックエンドは、ソニーのSPU2サウンドプロセッサ用の書き換えられました。このポートは、モジュラーサウンドと抽象的なレイヤーの音を強調しました。

Xbox (2001) の

元のXboxの場合、ハーフライフは、NV2A GPU(GeForce 3デリバティブ)のフル活用を取った、非常にカスタマイズされたGoldSrcで実行しました。 バルブは、ダイレクトX 8シェーダーを使用して、バンプマッピングとスペクトラム効果、エンジン使用のプログラム可能なピクセルシェーダーを初めて示しました。 Xboxポートは、メモリマネージャ()を収容するために、RAMの48 MB)]と入力システム(このアナログエンジンが、次のグラフィックエンジンを再生することなく、このグラフィックを再生する必要でした。

ソースコードのリリースとコミュニティポート

2004年、バルブは、変更が許されないライセンスの下で半減期SDKをリリースしました。しかし、2013年に、GoldSrcソースコードはオープンソースライセンスの下でGitHubで公開されました。これにより、コミュニティ主導のポートの波が解除されました。Xash3D]と]]などのプロジェクトは、iOS用のModern およびiOS用のModern に加えて、iOS用のAndroid用のiOS用のGoldSrcをアップグレードするなど、iOS用のプラットフォームを追加して、iOS用のOpenHLをアップグレードしました。

Xash3Dエンジンは、例えば、SDL2とOpenGL ES 2.0で元のDirectX/OpenGLバックエンドを置き換え、GPUドライバなしでデバイス上で実行するためにハーフライフを有効にします。 これらのコミュニティポートは、バルブの元の抽象化時に頻繁に改善され、Vulkanサポートとアンキャプされたフレームレートを追加します。 彼らはまた、オーディオレイテンシーと入力ポーリングで長期にわたる問題を修正し、それで反復しながら元の設計の強さを引き起こします。

近代的な可搬性:逆工学およびレガシー

現在は、Windows 10/11、macOS(Steam Play)、Linux(Steam Linuxのランタイムを介してネイティブ)で再生可能なハーフライフが残っています。 GoldSrcエンジンは64ビットアーキテクチャに移植され、Valve独自の「Half-Life: Source」は、Rendererを Sourceエンジンに交換しましたが、そのより明るいフットプリントにより、元の方がより広くサポートされています。

現代のゲームエンジンで、ハーフライフのクロスプラットフォームの努力を主張するエンジニアリングレッスン。Unreal Engine、Unity、Godotは、ハードウェアの抽象レイヤー、オーディオと入力のためのミドルウェア、およびネットワークプロトコルのバージョンアップを採用しています。GoldSrcの先駆的または洗練された概念です。また、SDKのオープンソースを選択すると、開発者がプロジェクトの開始からポータビリティを検討する世代にも影響します。

コンテンツ

Half-Lifeのクロスプラットフォームの互換性は、事故ではありませんでした。それは、モジュラーエンジン、抽象的なレンダリングと入力システム、オーディオ用のミドルウェア、そして慎重にバージョンのネットワークプロトコルの決定の結果でした。これらの選択肢は、ゲームは、Windows PCからDreamcastのすべての上で実行することができ、彼らは近代的な時代にコミュニティポートをサポートし続けています。どんな開発者にとっても、ハードウェアの変更の10年間にわたって続くゲームを構築することを目指し、GoldSrcbookは貴重な言及を残します。

] 読み方:[