12

私はずっと前からゲームプログラミングをしたいと思っていましたが、それを理解することはできませんでしたが、ついにそれを前に与えることにしました。シンプルな2Dプラットフォームのゲームを作ってみることにしました。私はXNAで簡単に遊んだことがあり、それが好きです。私が探しているのは、XNA、directx、OpenGLの比較です。主にそれらの間の長所と短所。私は過去4年間.net開発者であり、それが私の知識でした。

4

6 に答える 6

12

Direct Xを実行したい場合は、新しい最高の仲間としてWin32とCOMに挨拶してください。win32 APIの詳細については、早い段階で多くの時間を費やすことになります。DirectX with Win32は、サウンド、ゲーム入力、およびグラフィックス表示に必要なすべての機能を提供します。また、CまたはC ++で書くことになり、メモリ管理とCの考え方についてすべて学ぶことができます。軽くあきらめることを検討する必要はありません。主要なプロジェクトの言語としてCを学び、使用することは非常に明るいものであり、最新のプログラミング言語機能と設計要素に感謝することができます。ここでの開発に実際にCまたはC++を使用する必要はありません。Direct Xにはさまざまな.NETラッパーやその他の言語ラッパーがありますが、.NETの経験がある場合は、.NET用に作成されたフレームワークであるXNAを使用することをお勧めします。

XNAは、はるかに新しい.NETベースのツールセットです。Win32とDirectXを直接使用する場合と同じ機能(サウンド、入力など)の多くを提供しますが、管理対象プラットフォームでネイティブに使用します。ほとんどのゲーム(特に始めたばかりのゲーム)では、XNAゲームで優れたフレームレートを取得でき(ネイティブアプリでさらに多くのフレームレートを取得できます)、ゲーム開発の詳細を学ぶのに非常に適しています。本当にうまくいかない。必要な基本的なデータ構造のほとんど(クアッド/オクトツリー、モデルビューコントローラーアーキテクチャ、イベントの処理、プログラムの構造)は、引き続き自分で学習して実装する必要があり、.NETでそれを行うとほとんどの場合確かにCやC++よりも簡単です。良い副次的なボーナスとして、Xbox 360、XNAコミュニティゲームをお持ちの場合いくつかの作業で、XboxLiveマーケットプレイスからリリースできます。 基本的に、.NET開発者として、ここで最も快適に感じるでしょう。

OpenGLは、ポリゴンを描画するためのクロスプラットフォームライブラリです。Direct Xとは異なるフレームワークとAPIを備えており、OSインタラクションツールを提供していません。多くの異なる言語でOGLでプログラムできるパッケージがあります。ただし、他の人が言っているように、これはおそらくWin32やDirectXで書くのと同じくらいの作業になるでしょう。グラフィックス以外のその他の機能(キーボード、マウス、ジョイスティック、オーディオ)については、 SDLなどのフレームワークを使用して不足しているDirectX機能の一部を使用することを検討できます。ライブラリを取り巻くかなりまともなコミュニティがあり、このルートに行くと、ポインタやヒントを得ることができます。

これについてのより多くの考えは、ほぼ同じ記事で見つけることができます:direct-x、C Open GL、またはXNAを学ぶための推奨されるゲームプラットフォーム

于 2009-02-23T18:32:41.200 に答える
5

XNA は、360 または Windows プラットフォームでゲームを起動して実行するための最も簡単で迅速な方法になるでしょう。これにより、既に使い慣れた方法 (C#.NET) で開発を続けることができ、一般的に使用されるものを自動的に処理する大規模なフレームワークが提供されます。ただし、この簡単さにはいくつかの制限があります。前述のプラットフォームのみに制限され、フレームワークが大きいため、ほとんど使用されずにパフォーマンスに影響を与える多くのオーバーヘッドが発生しますが、単純な 2D プラットフォーマーでは、これはおそらく問題にならないでしょう。

DirectX はプラットフォームにも制限を加え、学習と開発をより複雑にします。また、ここでは C または C++ でプログラミングする可能性が高くなります。すべてを処理しているため、すべてを制御し、必要に応じてすべてを最適化できるため、パフォーマンスが向上します。最初のゲームでは、XNA から始めて、XNA を「成長」させた後に DirectX に移行する方がはるかに優れていると思います。特に、シンプルな 2D プラットフォーマーを作成することを目標にしています。

OpenGL を使用すると、ほとんどのプラットフォームでゲームを実行できますが、DirectX と同じくらい (それ以上ではないにしても) 複雑になります (ただし、OGREのように非常に簡単に使用できる OpenGL 用のグラフィック エンジンがあることに言及する必要があります。C で開発することもできます。 /C++ for OpenGL 次のステップに進む準備ができていると感じるまでは、XNA を選択することをお勧めします。

于 2009-02-23T18:45:17.610 に答える
3

あなたが言うように、あなたの経験が主に .NET である場合、XNA は参入障壁が最も短いですが、他のオプションで得られるほどのパフォーマンスは得られません。ただし、2Dプラットフォーマーの作成を計画していると言うように(ここでの含意が「非ハードウェア集約的」であると仮定すると)、XNAは十分すぎるほどであり、おそらくプロジェクトに最も適した選択肢です.

于 2009-02-23T18:38:13.480 に答える
2

DirectX は、ネイティブ コードを使用する必要があるという意味ではありません。マネージ ラッパーがいくつかあります。パフォーマンスの低下は、ネイティブ DirectX の 1 ~ 3% の範囲にありますが、何時間もの開発時間を節約でき、最後の 2% を必要としない可能性が高いことを考えると、マネージドが最適です。

次の例を参照してください: SlimDX - C# の DirectX 用の完全に管理されたラッパー

于 2009-02-23T18:45:12.433 に答える
1

1 つのオプションは、エンジンを .NET で記述し、レンダラーを C++/CLI で実装することです。私は自分のプロジェクトの1つでこれを行っています。XNA、OpenGL、および DX はすべて、私が望むものに対して低レベルすぎます。レンダラーを書きたくない、既存のものを使いたい。Ogre3D ラッパーである Mogre は完全に混乱しているように見え (Mogre、Ogre3D、またはその両方の設計によるものかどうかは不明)、他のほとんどのラッパーはどうしようもなく時代遅れです。代わりに、C++/CLI とIrrlichtを使用してレンダラーを実装しています。これは、Ogre3D よりも高速で、より適切に設計されているようです。

このようなことを考えるかもしれません。

于 2009-02-23T18:51:45.507 に答える
1

私は DirectX を使用し始めましたが、現在は XNA に移行しています。これは主に、ゲームの背後にあるテクノロジよりも実際のゲームプレイに集中できるようにしたいためです。もちろん、まだエンジンのコーディングを行う必要がありますが、ゲーム プログラミング用に特別に作成された既製の機能を提供するフレームワークがあると、非常に役立ちます。

于 2009-03-06T14:06:54.100 に答える