web-dev-qa-db-ja.com

Linux、Mac、Windowsで動作するDota 2-どうやってそれを行うのですか?

Valveは、Linux、Mac、Windowsで動作するゲームをどのように作成しますか?私は彼らが本当に悪夢になるであろう各プラットフォームのために1つのバージョンを実際に書いていないと思います...それとも彼らは?私はそれが移植可能なC++コード(またはC#?)で書かれていると思いますが、これについての詳細を知りたかったのです。私はAdobe AIRでアプリを開発し、アドビがLinuxサポートを放棄したため、それをdiff言語に移植することを検討しました。

7
StephenNYC

すべてのバルブ製品は、自社開発のゲームエンジン Source を使用して開発されています。 Source EngineはC++で記述されています。ソースエンジンにはOpenGLとDirectXレンダラーの両方が含まれており、クロスプラットフォームでの使用に役立ちますが、キーは[〜#〜] sdl [〜#〜]。オープンソース Simple Direct Media Library は、Valveの人気のある製品をクロスプラットフォーム化することをほぼ排他的に任されている、Valve内部のチームによって使用されます。 SDLにより、Valveはここ、あちこち、そしてどこでも機能する冗長なコードの作成に集中するのではなく、プラットフォームX、Y、Zでビルドが機能するように変更する必要があるものの修正に集中し、SDLに処理を任せることができます残り。

SDLは、ウィンドウ管理、コンテキスト管理、イベント処理などに関して、すべてのプラットフォーム(すべてのプラットフォームではなく、重要なプラットフォーム)で機能するシンプルなインターフェースを作成することにより、これを可能にします。SDLがなければ、次のように記述する必要があります。 Windows、OSX、Linuxのウィンドウを作成するコードで、基本的なウィンドウ管理機能をクロスプラットフォームで動作させるだけです。 SDLでは、3つの関数を呼び出し、ウィンドウがあります。人々が今それを使う理由を見ますか? SDLは今日からほとんどのバルブのゲームの中心にあります。なぜなら、彼らは最初からクロスプラットフォームについて考え始めているからです。

これが Linuxサポートと、Valveでそれを可能にするチームについての良い記事 です。

18
Johnny Rotten

私は特にDota2について話しているのではなく、一般的なクロスプラットフォームゲームのほとんどについて話しています。

通常、開発者はミドルを作成/使用し、GameEngineと呼ばれていました。これは通常、ゲームの物理処理、グラフィックオブジェクトの読み込みとレンダリング、スクリプトの読み込みと実行、ネットワーク関連の管理など、あらゆる種類のツールを含む大規模なライブラリの形式です。

そのGameEngine Thingは、複数のプラットフォームにわたってこれらの種類のサポートを提供することもできます。異なるプラットフォーム間で異なる実装を行いながら、統一されたインターフェースを開発者に提供します。クロスプラットフォームアプリケーションを目にするたびに、同じことが起こります。あなたが言及したC#自体でさえ、内部では同じことをしています。内部でプラットフォーム固有の違いを処理しながら、すべてのプラットフォームにわたって統一された開発エクスペリエンスを提供しています。

Valve(Dota2およびその他のゲーム)の場合、そのGameEngineは「ソースエンジン」と呼ばれます。 Source Engineの上に構築されたものはすべてプラットフォームに依存しませんが、エンジン自体はオペレーティングシステムごとに異なる実装を持っています。次に例を示します。エンジンに球を描画する関数がある場合があります。 WindowsではこのルーチンはDirectXを使用して記述されていますが、LinuxおよびMacではOpenGLを使用しています。

これは、ゲームロジックやゲームのほとんどすべてを実装している人を含む、より高いレベルの開発者がプラットフォームの変更にさえ気付かないことを意味しますが、そのベースレベルのコードでは、Dota2(および他のほとんどのゲーム)がプラットフォームごとに1回記述されます。

2
Ali1S232