ゲーム開発者がWindowsを好むのはなぜですか?


396

OpenGLがクロスプラットフォームであっても、DirectXはOpenGLよりも簡単ですか、それとも優れていますか?WindowsのようにLinuxの本当の強力なゲームを見ないのはなぜですか?


55
誤った前提-ゲーム開発者がウィンドウを好むという証拠はどこにありますか?@ user17674の方がより正確だったと思う-彼らはプラットフォームのために開発したいので、彼らはより多くを売ってより多くのお金を稼ぐことができる:
ロリー・オルソップ

258
ウイルス開発者もWindowsを好みます。それはすべてユーザーベースです。
CesarGon

4
WindowsプログラマーがOpenGLよりもDirectXを好む理由は、おそらく歴史的にもっと興味深い質問です。以下のCarmackインタビューへのリンクが示すように、DXは以前嫌われていました。Xboxや最新の書き直しで人気が出るまで、MSがそれをサポートするのに十分なユーザーをどのように保持したかを知ることは興味深いでしょう。または多分それは常に十分に良かったので、人々はそれにこだわった。
CodexArcanum

100
なぜ人々は銀行を強奪するのですか? それはお金がある場所だから
GrandmasterB

7
@CesarGon:それはユーザーベースだけでなく、開発の容易さのためでもあります。
ジョルジオ

回答:


1154

ここでの答えの多くは本当に、本当に良いです。ただし、OpenGLDirect3D(D3D)の問題はおそらく対処する必要があります。そしてそれには...歴史のレッスンが必要です。

そして、始める前に、Direct3DについてよりもOpenGLについてずっとよく知っています。私はこれまでにD3Dコードを1行も書いたことがなく、OpenGLのチュートリアルを書いたことがあります。だから私が言いたいのは、バイアスの問題ではありません。それは単に歴史の問題です。

紛争の誕生

ある日、90年代前半のいつか、マイクロソフトは見回しました。彼らはSNESSega Genesisが素晴らしく、多くのアクションゲームなどを実行しているのを見ました。そして、彼らはDOSを見ました。開発者は、コンソールゲームのようなDOSゲームをコーディングしました:金属に直接。ただし、SNESゲームを作成した開発者がユーザーが使用するハードウェアを知っていたコンソールとは異なり、DOS開発者は複数の可能な構成を作成する必要がありました。そして、これは思ったより難しいです。

また、Microsoftには大きな問題がありました。Windowsです。開発者が何でもできるDOSとは異なり、Windowsはハードウェアの所有を望んでいました。アプリケーション間で協力するためには、ハードウェアの所有が必要です。協力はゲーム開発者が嫌いなものです。なぜなら、それは彼らが素晴らしいものになるために使用できる貴重なハードウェアリソースを占有するからです。

Windows上でゲーム開発を促進するために、Microsoftは、低レベルだった均一なAPIを必要とし、それによって減速されることなく、Windows上で実行し、すべてのほとんどのクロスハードウェア。すべてのグラフィックス、サウンド、および入力ハードウェア用の単一のAPI。

こうして、DirectXが生まれました。

3Dアクセラレータは、数か月後に誕生しました。そして、マイクロソフトはトラブルの現場に出くわしました。DirectXのグラフィックコンポーネントであるDirectDrawを参照してください。2Dグラフィックのみを扱います。グラフィックメモリを割り当て、メモリの異なる割り当てられたセクション間でビットブリットを行います。

だから、マイクロソフトは、ミドルウェアのビットを購入し、それがあったのDirect3Dバージョン3にそれを作ら普遍悪口。そして、十分な理由があります。D3D v3コードを見るのは、契約の箱を見つめるようなものです。

Id SoftwareのOld John Carmackは、そのゴミを一目見ながら、「ネジを締めろ!」と言いました。そして、別のAPI OpenGLに向けて書くことにしました。

マイクロソフトは、Windows向けのOpenGL実装でSGIの作業に忙しかったという、多面的な獣の別の部分を参照してください。ここでのアイデアは、典型的なGLアプリケーションの開発者、つまりワークステーションアプリを裁判することでした。CADツール、モデリング、そのようなこと。ゲームは彼らの心の中で最も遠いものでした。これは主にWindows NTの問題でしたが、MicrosoftはWin95にも追加することにしました。

ワークステーション開発者をWindowsに誘導する方法として、Microsoftは、これらの新しい3Dグラフィックスカードへのアクセスで彼らを買収しようとすることにしました。Microsoftは、Installable Client Driverプロトコルを実装しました。グラフィックカードメーカーは、MicrosoftのソフトウェアOpenGL実装をハードウェアベースのものでオーバーライドできます。コードは、利用可能なハードウェアOpenGL実装を自動的に使用できます。

初期の頃、消費者レベルのビデオカードはOpenGLをサポートしていませんでした。CarmackがSGIワークステーションでQuakeをOpenGL(GLQuake)に移植することを止めませんでした。GLQuake readmeから読むことができるように:

理論的には、glquakeはテクスチャオブジェクト拡張をサポートする準拠OpenGLで実行されますが、必要なすべてを高速化する非常に強力なハードウェアでない限り、ゲームプレイは受け入れられません。ソフトウェアエミュレーションパスを通過する必要がある場合、パフォーマンスは1秒あたり1フレームを大きく下回ります。

現時点('97年3月)で、glquakeを合理的に再生できる唯一の標準OpenGLハードウェアはintergraph realizmで、これは非常に高価なカードです。3dlabsはパフォーマンスを大幅に改善していますが、利用可能なドライバーではまだプレイするには十分ではありません。glintおよびpermediaボード用の現在の3dlabsドライバーの一部は、フルスクリーン実行を終了するときにNTをクラッシュさせる可能性があるため、3dlabsハードウェアでglquakeを実行することはお勧めしません。

3dfxは、glquakeが必要とするすべてを実装するopengl32.dllを提供していますが、完全なopengl実装ではありません。他のopenglアプリケーションは動作しない可能性が非常に高いため、基本的に「glquakeドライバー」と見なしてください。

これがminiGLドライバーの誕生です。ハードウェアがほとんどのOpenGL機能をハードウェアに実装できるほど強力になったため、これらは最終的に完全なOpenGL実装に進化しました。nVidiaは、完全なOpenGL実装を提供した最初の企業です。他の多くのベンダーは苦労しました。これが、開発者がDirect3Dを好んだ理由の1つです。ベンダーはより広範なハードウェアで互換性がありました。最終的にはnVidiaとATI(現在のAMD)のみが残り、両方ともOpenGLが適切に実装されました。

OpenGLアセンダント

したがって、ステージが設定されます:Direct3DとOpenGL。D3D v3の悪さを考えると、これは本当に素晴らしい話です。

OpenGL Architectural Review Board(ARB)は、OpenGLの保守を担当する組織です。彼らは多くの拡張機能を発行し、拡張機能リポジトリを維持し、APIの新しいバージョンを作成します。ARBは、グラフィックス業界の多くのプレーヤーと一部のOSメーカーで構成される委員会です。AppleとMicrosoftは、ARBのメンバーであります。

3DfxにはVoodoo2が付属しています。これは、マルチテクスチャリングを実行できる最初のハードウェアです。これは、OpenGLがこれまでできなかったことです。3DfxはOpenGLに強く反対していましたが、次のマルチテクスチャグラフィックチップ(TNT1)のメーカーであるNVIDIAはそれを気に入っていました。そのため、ARBは拡張機能GL_ARB_multitextureを発行しました。これにより、マルチテクスチャリングへのアクセスが可能になります。

一方、Direct3D v5が登場します。現在、D3Dは猫が吐き出すようなものではなく、実際のAPIになっています。問題?マルチテクスチャリングなし。

おっと。

人々はマルチテクスチャリングをあまり使用しなかったので、今では、それが本来あるべき程度にほとんど傷つけないでしょう。直接ではありません。マルチテクスチャリングはパフォーマンスをかなり低下させ、多くの場合、マルチパスと比較してそれは価値がありませんでした。そしてもちろん、ゲーム開発者は、マルチテクスチャーを持たない古いハードウェアでゲームが動作することを保証したいので、多くのゲームはそれなしで出荷されました。

したがって、D3Dには猶予が与えられました。

時間が経ち、NVIDIAはGeForce 256(GeForce GT-250ではなく、最初のGeForce)を導入し、今後2年間でグラフィックスカードの競争をほぼ終わらせました。主なセールスポイントは、ハードウェアで頂点変換およびライティング(T&L)を実行できることです。それだけでなく、NVIDIAは、OpenGLは自分のT&Lエンジンを効果的にそんなに愛されのOpenGL。ほとんど文字通り。私が理解しているように、それらのレジスタのいくつかは、実際にはOpenGL列挙子を値として直接使用していました。

Direct3D v6が登場します。やっとマルチテクスチャですが...ハードウェアT&Lはありません。OpenGLには常に 256の前にソフトウェアで実装されていたにもかかわらず、T&Lパイプラインがありました。そのため、NVIDIAがソフトウェアの実装をハードウェアソリューションに変換することは非常に簡単でした。D3Dが最終的にハードウェアT&Lをサポートするまで、D3D v7にはなりません。

Dawn of Shaders、Twilight of OpenGL

その後、GeForce 3が登場しました。そして、多くのことが同時に起こりました。

マイクロソフトは、彼らが再び遅れることはないと決めていました。そのため、NVIDIAが何をしていたかを見てから事実をコピーする代わりに、彼らは彼らに行って話しかけるという驚くべき立場を取りました。そして、彼らは恋に落ち、一緒に小さなコンソールを持っていました。

乱雑な離婚が後に続いた。しかし、それはまた別の時間です。

これがPCにとって意味したことは、GeForce 3がD3D v8と同時に登場したことです。そして、GeForce 3がD3D 8のシェーダーにどのように影響したかを見るのは難しくありません。Shader Model 1.0のピクセルシェーダーは、NVIDIAのハードウェアに非常に固有のものでした。NVIDIAのハードウェアを抽象化する試みは一切行われていません。SM 1.0は、GeForce 3が実行したものでした。

ATIがRadeon 8500でパフォーマンスグラフィックカードレースに飛び込み始めたとき、問題がありました。8500のピクセル処理パイプラインは、NVIDIAのもの​​よりも強力でした。そのため、MicrosoftはShader Model 1.1を発行しました。

これは、D3D側の障害のように聞こえるかもしれません。しかし、失敗と成功は程度の問題です。そして、OpenGLランドで重大失敗が起きていました。

NVIDIAはOpenGLが大好きだったので、GeForce 3がヒットしたとき、彼らは多数のOpenGL拡張機能をリリースしました。独自の OpenGL拡張:NVIDIAのみ。当然のことながら、8500が登場したとき、それらのどれも使用できませんでした。

少なくともD3D 8の土地では、SM 1.0シェーダーをATIハードウェアで実行できます。確かに、8500のクールさを活用するには新しいシェーダーを作成する必要がありましたが、少なくともコードは機能しました

OpenGLのRadeon 8500であらゆる種類のシェーダーを使用するために、ATIは多くのOpenGL拡張機能を作成する必要がありました。独自の OpenGL拡張:ATIのみ。したがって、シェーダーを使用するためには、NVIDIAコードパスとATIコードパスが必要でした。

ここで、「OpenGL ARBはどこにあり、その仕事はOpenGLを最新の状態に保つことでしたか?」多くの委員会がしばしば終わる場所:ばかげたこと。

上記を参照してください。ARB_multitextureは、これらすべてに深く関係しているためです。ARBは(部外者の観点から)シェーダーの考えを完全に避けたいように見えました。彼らは、固定機能パイプラインに十分な構成可能性を設定すれば、シェーダーパイプラインの能力に匹敵することができると考えました。

そのため、ARBは拡張後に拡張をリリースしました。「texture_env」という単語が含まれるすべての拡張機能は、このエージングデザインにパッチを当てるもう1つの試みです。レジストリを確認します。ARBとEXT拡張の間に、これらの拡張が8つ作成されました。多くがOpenGLコアバージョンに昇格しました。

マイクロソフトはこの時点でARBの一部でした。彼らはD3D 9がヒットした頃に立ち去った。したがって、彼らが何らかの形でOpenGLを妨害しようとしていた可能性は完全にあります。私は個人的にこの理論を2つの理由で疑っています。1つは、各メンバーが1票しか得られないため、他のARBメンバーから支援を得る必要があったことです。そして最も重要なのは、ARBがMicrosoftの助けを必要としていなかったことです。それについてのさらなる証拠を見るでしょう。

最終的にARBは、おそらくATIとNVIDIA(両方ともアクティブメンバー)の両方の脅威にさらされ、最終的に実際のアセンブリスタイルシェーダーを提供するのに十分な長さで頭を引き出しました。

さらに愚かなものが必要ですか?

ハードウェアT&L。OpenGLが最初に持っていたもの。面白いですね。ハードウェアT&Lから最大限のパフォーマンスを得るには、頂点データをGPUに保存する必要があります。結局のところ、頂点データを実際に使用したいのはGPUです。

D3D v7で、Microsoftは頂点バッファーの概念を導入しました。これらには、頂点データを格納するためのGPUメモリのスワスが割り当てられます。

OpenGLがこれに相当するものをいつ入手したか知りたいですか?ああ、NVIDIAは、OpenGLのすべてを愛する(独自のNVIDIA拡張機能である限り)、GeForce 256が最初にヒットしたときに頂点配列範囲拡張機能をリリースしました。しかし、ARBが同様の機能を提供することを決定したのはいつですか?

2年後。これは頂点シェーダーとフラグメントシェーダー(D3D言語のピクセル)を承認した後のことです。それが、ARBが頂点データをGPUメモリに格納するためのクロスプラットフォームソリューションを開発するのにかかった時間です。繰り返しますが、ハードウェアT&L 最大のパフォーマンスを達成するために必要なものです。

すべてを台無しにする一つの言語

そのため、OpenGL開発環境はしばらくの間破壊されました。クロスハードウェアシェーダーもクロスハードウェアGPU頂点ストレージもありませんが、D3Dユーザーは両方を楽しみました。悪化する可能性はありますか?

あなた...あなたはそれを言うことができます。3D Labsに入ります。

彼らは誰ですか?彼らは私がOpenGLの真の殺人者であると考えている古い会社です。確かに、ARBの一般的な無能さにより、OpenGLがD3Dを所有するはずだったときにOpenGLが脆弱になりました。しかし、おそらく3D Labsは、OpenGLの現在の市場状態に対する私の最大の最大の理由です。彼らはそれを引き起こすためにおそらく何をしたでしょうか?

彼らはOpenGLシェーディング言語を設計しました。

3D Labsは死にかけている会社でした。高価なGPUは、NVIDIAのワークステーション市場への圧力の高まりによって取り残されていました。また、NVIDIAとは異なり、3D Labsは主流市場に存在していませんでした。NVIDIAが勝った場合、彼らは死にました。

彼らがやった。

そのため、3D Labsは、製品を望まない世界で関連性を維持するため、「OpenGL 2.0」と呼ばれるもののプレゼンテーションを行うGame Developer Conferenceに参加しました。これは、OpenGL APIの完全なゼロからの書き換えになります。そしてそれは理にかなっています。当時、OpenGLのAPI には多くの問題がありました(注:その問題はまだ存在しています)。テクスチャの読み込みとバインドの仕組みを見てください。それは半難解です。

彼らの提案の一部はシェーディング言語でした。当然。ただし、現在のクロスプラットフォームARB拡張とは異なり、それらのシェーディング言語は「高レベル」でした(Cはシェーディング言語の高レベルです。はい、本当に)。

現在、Microsoftは独自の高レベルシェーディング言語に取り組んでいました。それらは、マイクロソフトのすべての集団的想像力の中で、高レベルシェーディング言語(HLSL)と呼ばれていました。しかし、それらは言語に対する根本的に異なるアプローチでした。

3D Labsのシェーダー言語の最大の問題は、組み込みであるということでした。HLSLはマイクロソフトが定義した言語でした。彼らはそのためのコンパイラをリリースし、Shader Model 2.0(またはそれ以降のシェーダーモデル)アセンブリコードを生成し、それをD3Dに送ります。D3D v9の時代には、HLSLはD3Dから直接影響を受けることはありませんでした。それは素晴らしい抽象化でしたが、純粋にオプションでした。そして、開発者は常にコンパイラーの背後に行き、最大のパフォーマンスのために出力を微調整する機会がありました。

3D Labs言語にはそれがありませんでした。ドライバーにCライクな言語を与え、シェーダーを作成しました。物語の終わり。アセンブリシェーダーではなく、他の何かをフィードするものでもありません。シェーダーを表す実際のOpenGLオブジェクト。

これが意味することは、OpenGLユーザーは、アセンブリのような言語をコンパイルするのに苦労している開発者の気まぐれに開放されていたことです。新たに命名されたOpenGL Shading Language(GLSL)では、コンパイラのバグが横行してました。さらに悪いことに、複数のプラットフォームでシェーダーを正しくコンパイルすることができた場合(決して偉業ではありません)、その日のオプティマイザーにさらされていました。それらは可能な限り最適ではありませんでした。

これはGLSLの最大の欠陥でしたが、唯一の欠陥ではありませんでした。はるかに

D3DおよびOpenGLの古いアセンブリ言語では、頂点シェーダーとフラグメント(ピクセル)シェーダーを組み合わせて使用​​できます。同じインターフェイスと通信している限り、互換性のあるフラグメントシェーダーと頂点シェーダーを使用できます。そして、受け入れられるレベルの非互換性さえありました。頂点シェーダーは、フラグメントシェーダーが読み取らなかった出力を書き込むことができます。などなど。

GLSLにはそれがありませんでした。頂点シェーダーとフラグメントシェーダーは、3D Labsが「プログラムオブジェクト」と呼んだものに融合されました。したがって、頂点プログラムとフラグメントプログラムを共有する場合は、複数のプログラムオブジェクトを作成する必要がありました。そして、これが2番目に大きな問題を引き起こしました。

ほら、3D Labsは彼らが賢いと思っていた。彼らはGLSLのコンパイルモデルをC / C ++に基づいていました。.cまたは.cppを取り、それをオブジェクトファイルにコンパイルします。次に、1つ以上のオブジェクトファイルを取得し、それらをプログラムにリンクします。これがGLSLのコンパイル方法です。シェーダー(頂点またはフラグメント)をシェーダーオブジェクトにコンパイルします。次に、これらのシェーダーオブジェクトをプログラムオブジェクトに入れ、それらをリンクして実際のプログラムを形成します。

これにより、メインシェーダーが呼び出すことができる追加のコードを含む「ライブラリ」シェーダーを持つなどの潜在的なクールなアイデアが可能になりましたが、実際には、シェーダーは2回コンパイルされました。コンパイル段階で1回、リンク段階で1回。特にNVIDIAのコンパイラは、基本的にコンパイルを2回実行することで知られていました。何らかの種類のオブジェクトコードを生成しませんでした。一度コンパイルして回答を破棄し、リンク時に再度コンパイルしました。

したがって、頂点シェーダーを2つの異なるフラグメントシェーダーにリンクする場合でも、D3Dよりもはるかに多くのコンパイルを行う必要があります。特に、Cに似た言語のコンパイルはすべてオフラインで行われたため、プログラムの実行開始時ではありません。

GLSLには他の問題もありました。おそらく、ARBが最終的に言語を承認し、組み込んだので、3D Labsに責任を負わせるのは間違っているように思われます(ただし、「OpenGL 2.0」イニシアチブの他には何もありません)。しかし、それは彼らのアイデアでした。

そして、ここに本当に悲しい部分があります:3D Labsは正しかった(ほとんど)。GLSLは、当時のHLSLのようなベクトルベースのシェーディング言語ではありません。これは、3D Labsのハードウェアがスカラーハードウェア(最新のNVIDIAハードウェアに類似)であったためでしたが、多くのハードウェアメーカーがハードウェアを使用する方向に最終的には正しかったためです。

彼らは、「高水準」言語用のコンパイルオンラインモデルを使用するのが適切でした。D3Dは最終的にはそれに切り替えました。

問題は、3D Labsが間違った時間に正しかったことです。そして、将来を早めに呼び込もうとするとき、将来を保証しようとするとき、彼らは現在を捨てます。これは、OpenGLがT&L機能の可能性を常に持っていた方法に似ています。ただし、OpenGLのT&LパイプラインはハードウェアT&Lの前にまだ有用でしたが、GLSLは世界がそれに追いつく前の責任でした。

GLSLは今では良い言語です。しかし、しばらくの間?それは恐ろしいことでした。そして、OpenGLはそのために苦しみました。

神格化に向かって落ちる

3D Labsが致命的な打撃を与えたと私は主張していますが、Aの中の最後の釘を動かすのはARBそのものでした。

これはあなたが聞いたことがあるかもしれない物語です。OpenGL 2.1の時点までに、OpenGLは問題に直面していました。これには、多くのレガシーな問題がありました。APIはもう使いやすいものではありませんでした。物事を行うには5つの方法がありましたが、どれが最も速いかはわかりませんでした。簡単なチュートリアルでOpenGLを「学ぶ」ことはできますが、実際のパフォーマンスとグラフィカルなパワーを提供するOpenGL APIを実際には学習していません。

そこで、ARBはOpenGLの別の再発明を試みることにしました。これは3D Labsの「OpenGL 2.0」に似ていましたが、ARBがその背後にあったため、より優れていました。彼らはそれを「ロングピーク」と呼びました。

APIを改善するのに少し時間がかかるのは何が悪いのでしょうか?これは、Microsoftが脆弱なままになっていたため、悪いことでした。ご覧のとおり、これはVistaの切り替え時でした。

Vistaを使用して、Microsoftはディスプレイドライバーに必要な変更を加えることを決定しました。彼らは、グラフィックスメモリの仮想化やその他のさまざまなことのために、ドライバーにOSへの提出を強制しました。

このメリットや実際に可能であったかどうかについて議論することはできますが、事実はこれにとどまります。MicrosoftはD3D 10をVista(およびそれ以上)のみと見なしました。D3D 10 対応のハードウェアがあったとしても、Vistaを実行しないとD3D 10アプリケーションを実行できませんでした。

また、Vistaを覚えているかもしれません...ええと、それはうまくいかなかったと言ってみましょう。したがって、パフォーマンスの低いOS、そのOSでのみ実行される新しいAPI、およびそのAPIとOSが前の世代よりも高速であるために必要な新しい世代のハードウェアがありました。

ただし、開発者 OpenGLを介してD3D 10クラスの機能にアクセスできます。まあ、ARBがロングズピークでの作業で忙しくなかったなら、彼らはできました。

基本的に、ARBはAPIを改善するために1年半から2年分の作業を費やしました。OpenGL 3.0が実際に登場する頃には、Vistaの採用が始まり、Win7はすぐにVistaを後押しし、ほとんどのゲーム開発者はD3D-10クラスの機能を気にしませんでした。結局、D3D 10ハードウェアはD3D 9アプリケーションを問題なく実行しました。また、PCからコンソールへのポートの増加(またはPC開発者がコンソール開発に飛びついています。選択してください)により、開発者はD3D 10クラス機能を必要としませんでした。

現在、開発者がWinXPマシンのOpenGLを介して以前にこれらの機能にアクセスできた場合、OpenGL開発は大いに必要なショットを受け取った可能性があります。しかし、ARBはチャンスを逃しました。そして、あなたは最悪の部分を知りたいですか?

APIをゼロから再構築しようとして2年の貴重な年月を費やしましたが... それでも失敗し、現状に戻りました(廃止メカニズムを除く)。

そのため、ARBは重要な機会の機会を逃しただけでなく、その機会を逃したタスクも完了しませんでした。ほとんどすべての叙事詩が失敗します。

そして、それがOpenGLとDirect3Dの物語です。逃した機会、ひどい愚かさ、故意の失明、単純な愚かさの物語。


24
これはどこかに書かれていましたか、それとも頭の上に書かれていませんか?
クリストファーホッホ

38
@Kristofer:作曲に1時間ほどかかったものを「頭の上の」と呼べるかどうかはわかりませんが、どこかに書かれていませんでした。
ニコルボーラス

18
@ F.Aquino:では、エンジン自体ではなく、FPSゲームが使用するレンダリングシステムに起因すると思いますか?CSはQuakeに基づくHalf-Life 1に基づいていますが?ごめんなさい; それを買わない。確かに、新しいFPSを中心としたeスポーツトーナメントはたくさんありますが、新しいFPSにはeスポーツの可能性がないという前提を購入しません。彼らはCSが一部のプレーヤーにもたらす魅力と同じではないかもしれませんが、それらのプレーヤーがすべてのFPS eスポーツを構成していると誤解しないでください。
ニコルボーラス

165
ワオ。私はこのようなもののほとんどを気にしません、そしてそれはまだ素晴らしい読み物です!
ピーターローウェル

12
Which they, in all of Microsoft's collective imagination, called... the High Level Shading Language (HLSL).これで6分以上笑われました。
ApprenticeHacker

133

質問が「ゲーム編集者」ではなく「ゲーム開発者」であるとき、誰もがユーザーベースに焦点を合わせているのは奇妙だとわかりました。

開発者としての私にとって、Linuxは血まみれの混乱です。非常に多くのバージョン、デスクトップマネージャー、UIキットなどがあります。作業をオープンソースとして配布したくない場合は、ユーザーがパッケージ、ライブラリ、および設定、それは悪夢です!

一方、Microsoftは(ほとんどの場合)信じられないほどの下位互換性とプラットフォームの安定性を提供しています。適切なDXまたはVC再配布可能ファイルがインストールされていないなど、Windows XP、Vista、7、32および64ビットフレーバーを実行しているコンピューターなど、1つのクローズドソースインストーラーですべてのマシンをターゲットにできます。

最後に、インターネット上のすべての人が、OpenGLとDIRECTXの比較をやめてください!Direct3DとOpenGLを比較するか、これを行わないでください。DirectXは、OpenGLにはない入力サポート、サウンドサポート、ムービー再生などを提供します。


40
「私にとって、開発者としてのLinuxは血まみれの混乱です。」確かに!私はFedoraとUbuntuのある環境で働いています。これら2つの間でも問題があります。(私はLinuxのファンです。)
デビッドプール

48
@ jv42:これはよくある誤解のようです。これらのバージョン、デスクトップマネージャー、UIキットなどのほとんどすべては、ゲームを起動して動作させるのにかなり無関係です。ゲーム(出荷時)がlibGL、libX11、およびlibasound(またはlibopenalまたはlibaoまたはliboss)以上に依存している場合、何かおかしいです。
greyfade

19
@greyfade「(出荷時の)ゲームがlibGL、libX11、およびlibasound(またはlibopenalまたはlibaoまたはliboss)以上に依存している場合、何か間違ったことをしていることになります。」-そして、libao-0.0.4alphaにリンクすると、ユーザーはlibao-0.0.5betaを持ち、何も機能しません。
quant_dev

17
すべてのLinuxディストリビューションで実行できるようにバイナリをパッケージ化するのはそれほど難しくありません。ちなみに、Blender開発者は各リリースでそれを行います。BlenderのLinuxリリースパッケージは1つだけです(2つ、32ビットと64ビット)。
datenwolf


88

地球上にはLinuxやMacよりも多くのWindowsユーザーがいるからです。真実は、人々が最大の市場を持っているもののために物を作るということです。
携帯電話にも同じことが言えます。AndroidとiPhoneには素晴らしいゲームがありますが、Windows MobileとSymbianにはありません...


24
@Mahmoud Hossam:それは違います。OpenGLを使用することは、アプリケーション全体が* nix環境で魔法のように動作することを意味するわけではなく、グラフィックエンジンが動作することを意味します(そして、それでも、(たとえば)Windows Linux上に存在する、またはその逆)。それだけではありません。複数のプラットフォームでコードを維持するためのかなりのコストがかかります。
エドS.

5
@Mahmoud:そのとおり。とにかくLinux / Mac OSへの移植を気にしないのであれば、ネイティブライブラリを使用してみませんか?DirectXはされてはるかに優れてOpenGLがあるよりも、Windows上でサポートされています。
ディーンハーディング

10
@Mahmoud:質問の前提はすべて「開発者がWindowsを好む理由」です。回答:それはゲーマーが使用するものだからです。市場の2%しか占めていなければLinux / Macに移植しても意味がありません。その場合、とにかく移植しないのであればOpenGLを使用しても意味がありません。
ディーンハーディング

4
@Mahmoud、それは人々をLinuxに切り替えるためのゲーム開発者の仕事ではありません。
GrandmasterB

6
@John 1000万人以上のWorld of Warcraftプレイヤーがあなたに一言お願いします。そして、これはただのゲームです。
マルセロ

50

Windowsの市場シェアは90%を超えており、Linux(特にLinuxについて質問したため)は、ソフトウェアの購入を好まないユーザーが多いという評判があります。それが真実かどうか、それがどれほど真実かは関係ありません。認識がそこにあり、それは人々の決定に影響します。


1
開発者がOpenGLを使用する場合、Windowsとlinuxの両方をサポートするため、実際に支払いを希望し、Linuxを使用しているLinuxユーザーの方が優れていると考えて、それを引き付けることはマーケティング上の利点になります。
M.Sameer

9
OpenGLを使用しても、クロスプラットフォームの開発とテストにはコストがかかり、Linux市場では正当化できません。Directxは、現時点では(残念ながら)PCゲームのプラットフォームとしてOpenGLよりも優れています。OpenGLで構築されているPC上の新しいゲームはほとんどありません。
マーティンベケット

25
クロスプラットフォームは、「OpenGLの単なるコード」ほど単純ではありません。
システムダウン

13
Linuxユーザーはソフトウェアにお金を払わないというのは、実際にはそうではありません。Humble Indie Bundle(お好きな金額で手に入れることができるゲームのバンドル)が2回行われ、LinuxユーザーがWindowsユーザーよりも多くをバンドルに支払うことが示されました。
Htbaa

9
@Htbaaもちろん、彼らはより多くのお金を払っていて、必死でした。おそらく、彼らがOSでプレイするのはこれが唯一のゲームです。
マルセロ

11

Windowsは巨大な組織に支えられているため、10年以上前にプラットフォームでゲーム開発を行うこと決定しました

これはMacには当てはまりませんでしたが、現在は当てはまりません。iOSでさえも。AppleはiOSゲーム開発用のツールを提供していません。しかし、それは巨大な市場であり(1995年にPCがあったよりも多くのiPhoneがあります)、競合は比較的少ないので、とにかく人々はそれをします。

Linuxに関しては、何らかの優先順位を設定できるような中央機関さえありません。Linuxが進む方向は、非常に優秀であるが、やや非現実的なプログラマーの集団によって決定されることはより少ない。

今日PCゲームを作成するには、多くの2d / 3dアーティスト、ゲームデザイナー、スクリプト作成者、俳優、テスターなどが必要です。実際のプログラミングについては、実際のゲームエンジン(CryEngine、Unreal Engine、Quake Engine、Source Engine)を使用するだけです。したがって、実際のプログラマーがいなくてもすべてを実行できる可能性があります。

そのため、またビジネスの性質上、プログラマーはどのプラットフォームが選択されるかについてほとんど語りません。通常、マネージャーはサポートを求めます。これは、Microsoftが提供すると主張するものであり、オープンソースでは実現できない思考パターンに何らかの形で収まるものに対処するためです。

そのため、ほとんどの商用エンドユーザーソフトウェア開発はWindows上で行われます。
私は、フラッシュゲームを作成する会社で働いているため、特定のプラットフォームに縛られていません。ただし、使用するツールのほとんどはLinuxでは使用できないため、すべてWindowsで開発しています。


2
「だから、実際のプログラマーがいなくても、すべてを行うことができるかもしれません。」皮肉を忘れた。
アロングララネク

@AllonGuralnek:皮肉はありません。ビッグゲームの古典的なゲーム開発では、プログラマーがエンジンとコンテンツと動作を提供する手段を作成し(ビジュアルエディターまたは実際のスクリプトを使用)、ゲーム/レベル/ミッションデザイナーがそれらの手段を使用します。実用的で十分に強力なエンジンを購入する場合、基本的にステップ1を削除できます。
back2dos

2
コードを1行も書かずに作成された、かなり注目に値するゲームの具体例はありますか?
アロングラネレク

1
@AllonGuralnek:私は誰もコードなしではなくプログラマーなしでゲームを作成するとは言いませんでした。完全にゲームを変えるMODを作成するためにプログラマである必要はありません。DotAは、私の頭の中で思い浮かぶ最も人気のあるものです。
back2dos

1
@AllonGuralnek:いいえ。コードを書く人はコードを書く人です。レベルデザイナーは、スクリプトについてある程度理解している必要があります。多くのプログラマーは、ある程度の管理スキルを必要とすることがよくあります。最初のプログラマをプログラマにしたり、2番目のマネージャをマネージャにしたりすることはありません。また、DotAの評価が間違っています。第一に、それは新しいにRTSを回し、完全にゲームを変えるだジャンル、第二に、それは多くのEsportsもリーグで別のゲームとして考えられているESWC含む
back2dos

10

すでに述べたように、最も重要な部分はユーザーベースです。PCユーザーの95%がWindowsを使用しています。PCゲーマーはほとんどWindowsのみを使用します。MacまたはLinuxを使用するユーザーでさえ、ほとんどの場合、仮想化またはエミュレーションを介してWindowsゲームを実行します(例外はほとんどありません)。

しかし、人口統計がすべてではありません。プラットフォームをゲーム開発者にとってより魅力的にするためにマイクロソフトが行っている部分を過小評価しないでください。基本的に、無料で、最も重要なのはXNA Game Studioのフル機能のツールセットを入手できます。これにより、WindowsだけでなくXbox360の開発も可能になります。そして、WP7電話でも最新版を使用できます。明らかにMicrosoftツールなので、OpenGLではなくDirectXを使用します。


3
時間旅行の読者への注意:2014年4月の時点で、XNAは正式に消滅します。最後のリリース(4.0)は2010年に公開されましたが、現在(2013)から日没までの間に新しいバージョンは表示されません。
アレン

1
時間旅行の読者へのもう1つの注意:Windows 8(およびそれ以降)の開発、将来無料はなくなります
-fouric

6

うわぁ、私はしません。私はほとんど独占的にLinuxを使用しています。WindowsをデュアルブートしてWindowsビルドを作成し、MacビルドにMacを使用しますが、それだけです。

トリックは、長年にわたって開発してきたクロスプラットフォームフレームワークです。私たちのゲームはその上に構築されており、Linux / OpenGL、Mac / OpenGL、Windows / Direct3D(およびまもなくiOS / OpenGL)でも同じように動作します。

確かに私の会社はAAAタイトルを提供していないので、これらには適用されないかもしれませんが、トップカジュアルゲームを作成します(ウェブサイト -CSI:NY、Murder She Wrote、および2つの2011年は、重要なライセンスを使用したタイトルの例です、シャーロックホームズ1と2の紛失事件も同様に非常に成功しました)

私はgedit + gcc + gdb + valgrindを他の何かのためにgiveめません。


3
geditはプログラミングのために過小評価されています
Alexander

2
@Alexander、過小評価されても説明し始まらない
Shahbaz

3
申し訳ありませんが、最後にgeditを放棄しました。私は今gvimを使用しており、より幸せです:)
ggambett

4
  1. 慣性。過去にWindowsを使用したことがある場合は、他のものに切り替えるのは面倒です。Windowsを使用している場合、DirectXはOpenGLよりも簡単で、うまく動作する可能性があります。
  2. 市場占有率。デスクトップ上のWindowsの市場シェアは、OS Xの市場シェアよりも大きく、OS XはLinuxの市場シェアよりも大きくなっています。お金の話。
  3. ブランド。DirectXは、SDL(OpenGLを超えるDirectXの機能の一部を複製するために必要なもの)のようなものよりもよく知られています。
  4. 混乱が少ない。ユーザーのLinuxはOpenGL 1.4またはOpenGL 2+までしかサポートしませんか?最新のOpenGLの紹介のようなOpenGL 2.0チュートリアルを使用できますか第1章:バージョンLinux のグラフィックパイプライン

最近のLinuxはゲーム開発に関しては時代遅れになっており、ほとんどの開発者は財政的にLinuxバージョンの前にOS Xポートバージョンを実行するほうがよいでしょう(Steamなどを参照)。それでも、コンソール市場は、これら2つのプラットフォームをゲームに組み合わせた以上の価値があります...

モノラルプラットフォームにしたい場合は、DirectXで十分です。クロスプラットフォームになりたい場合は、少なくとも他のプラットフォームのいくつかでOpenGLを使用する必要があります。


2
質問4に対する答えは2+です。Mesa3DはOpenGL 2.1までをサポートします。つまり、X11の3Dハードウェアのすべてのグラフィックドライバーは、Mesaバージョン6.8以降、少なくともOpenGL 2.1をサポートします。これは、過去数年間にリリースされたすべてのLinuxディストリビューションと、NVIDIAおよびAMDが3.0以降をサポートするバイナリドライバーを対象としています。これにはintel895のユーザーは含まれませんが、非推奨になりました。
greyfade

1
私はそうではないのではないかと心配しています。i915 / i945(GMA 900/950)チップセットを搭載したコンピューターは販売されており、非推奨ではありません。数か月前の最新のディストリビューション(Ubuntu 11.04 / Fedora 15)でも、glxinfoは1.4(Mesa 7.11-devel)以下のOpenGLバージョンを返します。このようなIntelハードウェアは、ソフトウェアの助けなしでは後のバージョンを実行できないため、デフォルトでソフトパイプが使用可能になるまで、そのようなカード上のLinuxは上位バージョンのOpenGLを実行しません。OpenGL 2.0(またはそれ以上)をターゲットにすると、広範囲のLinuxデスクトップシステムで実行されているプログラムが停止します...
Anon

それでも、私は懸念を見ることができません。これらの同じチップセットにはWindowsでの制限があるため、ほとんどのグラフィックを多用するゲームはとにかく
-greyfade

4

答えは明らかです。ゲームを書く目的は、お金を稼ぐことです。より多くのエンドユーザーがWindowsを実行しているため、より大きな市場があり、LinuxゲームよりもWindowsゲームからより多くのお金を稼ぐことが期待されます。とても簡単です。

「なぜ誰かが...」と自問する場合、お金が世界を回すことを覚えておいてください。


1
はい。ただし、クロスプラットフォームゲームを作成し、Windowsユーザー以上のものを獲得できます;)
M.Sameer

クロスプラットフォームであることだけがすべてではありません。追加のユーザー数が比較的少ない場合、追加の開発コストと継続的なサポートコストと、追加のユーザーから得られる追加のバランスを取り、実際のハードデータに基づいて十分な情報に基づいた決定を下す必要があります。その答えにはグローバルに正しいまたは間違った答えはありませんが、個々のプログラムごとに正しいか間違っている答えがあり、あるプログラムにとって正しいことは別のプログラムにとって間違っているかもしれません。
マキシマスミニマス

4

ツール、ツール、ツール。

それが結果です。Windowsで開発すると、地球上で最高の開発ツールにアクセスできます。Visual Studioのデバッガーの近くには何もありません。DirectXデバッグランタイムは素晴らしく、PIXは素晴らしく、同等の同等物は他のプラットフォーム/ APIには存在しません。確かに、良いものがいくつかあります。他のプラットフォームのツールが悪いと言っているわけではありませんが、MSが提供しているツールは、パックよりもはるかに先を行っている(名誉ある例外:Valgrind)ので、面白くさえありません。

一番下の行は、これらのツールがあなたを助けるということです。それらは、あなたが仕事を成し遂げるのを助け、あなたが生産的になるのを助け、文書化されたように全く振る舞わないAPIと格闘するのではなく、あなた自身のコードのエラーに集中するのを助けます。


PIX 素晴らしいです。面倒なピクセルをクリックしてシェーダーをデバッグし、何が起こったかを見るのは素晴らしいことです!
クリスピットマン

4

だから私はこれらのすべての答えを調べましたが、ウォルマートの棚にあったコンソールゲームのコードを持っているゲーム開発者として、私は非常に異なる答えを持っています。

分布。

任天堂のコンソールになりたい場合は、任天堂の許可を取得し、任天堂の工場から購入し、任天堂の諸経費を支払い、ウォルマートと交渉し、倉庫に対処しなければなりません。 、すべての保険などを行うために。

XBoxを使用する場合は、XBLAがあることを確認しますが、Microsoftの祝福が必要です。順番を待つ必要があります。パッチをリリースするだけでも数万ドルです。

iOSでは、Appleの大丈夫がまだ必要です。彼らは気まぐれにあなたを引っ張ることができます。

Steamでは、Valveの許可または青信号、および大金が必要です。

Windowsで?Webサイトとダウンロードボタンを設定します。

他のプラットフォームが価値がないと言っているわけではありません。しかし、そこにあるので、 *ずっと*恐ろしいもの私にはそれは、単にサイト上のバイナリを平手打ちし、仕事に集中することができるという約束は、あなたがゲームを開発しようとしているときに行く-少なくとも始めるために-実際に多くの潜在的な障害障壁を下げます。

「物事が安定したら、後からXBLAポートを作成できます」という考え方。

そして、それほどではないが、これもLinuxで問題ないことを確認してください。7人の顧客が良ければ、そこから始めることができます。

しかし、Windowsには3つの大きな利点があります。真にオープンな開発、真にオープンな展開、そして風変わりなものに興味を持つ非常に大規模で非常に活発な顧客ベースです。

他にどこから始めたいか想像するのは難しいです。


3

DirectXの歴史とこの記事について詳しく読む必要があると思います。

私は、MSがopenGLよりもDXを選んだのは、人々が自分のOSを使うようにロックしたいからだと思います。


4
いいえ、OGLは、Windows用に最適化されていないので、彼らはDXを作成し、新しいハードウェアとオペレーティングシステム開発の利点を活用するために迅速に展開することができない、音が組み込まれていない、入力を制御する、などなど。
jwenting

2
iow DXは、パフォーマンス上の理由からWindowsに特化しており、Microsoftがその方法を維持し、利用可能になったときに新しいテクノロジをすばやく組み込むことができます。OpenGLは、5年前に存在していたグラフィックスハードウェアサポートのレベルで立ち往生しています。
jwenting

1
@jwentingパフォーマンスが他のプラットフォームに移植しなかった唯一の理由だとは思いません。もし彼らがそれを移植したければ、少なくとも彼らはそれをオープンソース化し、実装するためにコミュニティに残したでしょうそれ。
マフムードホッサム

1
彼らはC#をオープンソース化せず、言語仕様を標準化団体に提出しました。マイクロソフトはこれらの標準化団体のメンバーであり、常にそのようなことを行っています(たとえば、html、javascript、およびその他の標準に大きく貢献しています)。オープンソースとは、APLのようなものの下でコンパイラとライブラリのソースコードをリリースすることを意味します。
11

1
@jwenting:記録のために、Gallium3Dフレームワークを対象としたLinuxでのDirect3D 10および11の実装があります。(そして、Wineとは何の関係もありません。)また、「OGLはWindows用に最適化されていない」というあなたの主張にも反対します。これはハードウェアドライバーの実装の問題であり、OpenGLの制限ではありません。
greyfade

1

多くは政治と管理に関係しています。90年代後半、SGIとMSは実際に取り組みを組み合わせることに同意しました。

http://en.wikipedia.org/wiki/Fahrenheit_graphics_API

SGIはプロジェクトに多額の投資をしましたが、MSはしませんでした。SGIは、MSがSGIを必要としていた以上にMSを必要としていました。残りは歴史です。

D3DとOpenGLは2つの非常に異なるAPIです。ニーズに合ったものを選択するのは開発者の責任です。


0

Linuxがデスクトップシステムとして恐ろしく失敗したからです。誰かが以前に指摘したように、Linuxは開発者にとって混乱です(異なるライブラリ、UIツールキットなど)

別の問題は、フリータディズムとプロプライエタリソフトウェアのサポートの欠如です。Nvidiaは常にLinux用の優れた(独自の)ドライバーを提供していますが、Ubuntuや他のディストリビューションは出荷していません。また、Windows用のLinux用のバイナリドライバーインターフェイスもありません。(binaryApiNonsense.txtと呼ばれるテキストファイルまたはカーネルソースに何かがあります)LinuxではNvidiaハードウェアのみが適切にサポートされていると述べました。Linuxでは、Nvidiaハードウェアを使用してほとんどのIDソフトウェアゲームをプレイできます。

次のもの開発ツール。MSFTは優れたC ++サポートを提供し、Visual StudioデバッガーはC ++に関してgdbよりも優れています。最後になりましたが、Photoshopなどのツールが不足しています。また、.netを使用すると、GUIツールをすばやく作成できます。多くのゲームスタジオは、.netフレームワークを使用して内部使用のためにツールをコーディングしています。

私はほとんど忘れていました。グラフィックシステムは恐ろしく、X11を移植したばかりの頃、それが最も簡単に機能したためです。彼らはOSxとWinが持っている現代のグラフィックシステムを適切に設計し、実装することに失敗しました。


4
うーん?Linuxで私のIntelカードとatiカードは正常に動作します...そしてX11の何が問題になっていますか?クライアント/サーバーアーキテクチャのおかげで、他のOS(特にWindows)の代替よりもずっと優れているといつも感じていました。
代替案

いいえ、彼らはglxinfoを入力せず、天気が良いかどうかを確認しません!X11は、theinvisiblethings.blogspot.com / 2010/08 /…の
Nils

最後の文を読んだ場合、Linus自身がカーネルレベルのパッチを実装しました-X11パッチではありません。
代替案

1
私はグラフィックシステムについてあまり知りませんが(ポイントがあるかもしれません)、デスクトップシステムとしてLinuxが失敗したというのは真実ではなく、少なくとも正確ではありません。私はWindowsからLinuxに移行し、それ以来ずっと生産的に感じています。Linuxのパフォーマンスは、使用したすべてのマシンでWindowsよりも優れていました。また、C ++をコーディングしていません。VisualStudioと比較して、EclipseがC ++ IDEとしてどこに位置するかを知りたいです。
M.Sameer

火炎放射器を置いてください。一般的に受け入れられている意見は、VSが最高のIDEだということです。ただし、Eclipseはまだ若く、まだまだ先があります。しかし、Linuxですべてが簡単にスクリプト化およびパイプ可能であることが大好きです。
ヴォラック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.