• ベストアンサー

C++C#ゲーム開発においての差違は?

昔はC++&DirectXが基本というイメージがありました。 でも最近、C++.NETとかC#なんて言語があります。 DirectXの方も、Managed DirectXとかXNAという選択肢があるそうですね。 そこで質問です。 これらをどう組み合わせるのがディファクトスタンダードなのか、またそれぞれの長所・短所を教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

業務レベルの話をしますと Windows版のパッケージゲームがC#で開発される事は、ほとんどありません。 何年か前に、.NET Framework(C#)で作られたパッケージゲームがアメリカで発売され 話題になったことがありますが、話題になるぐらいマイナーだということです。 C++/CLIからも .Net Frameworkを呼び出す事は可能なので、Managed DirectXとして使う事もできるんでしょうが、 普通パッケージゲームソフトで.Net Framework自体使う事がほとんどありません。 (C#や.Net Frameworkを使うと他のプラットフォームへの移植性が下がりますし、 ユーザーにも.Net Framework環境が必要になる等のデメリットが考えられます。) DirectX SDK April 2005のサンプルにはManaged(C#とVB)のサンプルが入っていましたが 現在のSDK(March 2008)では消えていますね。 Windowsパッケージゲームソフトの開発環境のシェアはC/C++(というかVisual C++)とDirectX の組み合わせが90%以上だと思います。 ※C++.NETという言語は存在しません。以前 「Visual C++.NET 2003」という製品名はありましたが 2005年以降リリースされたVisual C++の製品名は「Visual C++ 2005」、「Visual C++ 2008」となっています。 ※XNAはDirectXの種類ではなくゲーム開発のためのツール或いは環境であり、開発言語はC#になります。 今のところ学生/初心者向けの色合いが強いと思います。

sankaku197
質問者

お礼

まずご指摘ありがとうございます。 C++.NETはC++/CLIのつもりで書いてました、正しくはC++/CLIですね。 XNAについてもManagedの後継のようなものだと勘違いしてました。 ネイティブコードよりマネージコードの方が速いという主旨の記事があたので、てっきりC++はもう実用的な言語ではないのかと思い今回の質問をしたのですが。 どうやら、C++&DirectXで良いようですね。 回答ありがとうございました。

その他の回答 (1)

  • monova
  • ベストアンサー率68% (68/100)
回答No.2

XNA は Managed DirectX の後継という認識でも間違いないと思います。 Managed DirectX の思想を受け継いで、XNA が開発され、Managed DirectXは、 開発が中止されています。 NO.1様が的確に回答されていますので、補足的に回答します。 現状では、マイクロソフトはXNAに寄る開発を推奨しています。 特に、ゲームの開発はXNAを推しています。 XNAは、プラットフォームが変わってもコンパイル仕直すだけで 各々のプラットフォームに対応できる事が謳われており、移植の 工数が減る事を利点としています。 特に、Windowsから Xbox360 への移植(もしくはその逆)に有利だと されています。また、次世代のXboxもXNAに寄る開発環境を 継承するとアナウンスされています。 ただ…XNAで作られた実行ファイルは一部、出力が遅くなる事が あります。 そうした場合は、 C++ で書き直したりする事もあります。 ハードをダイレクトに制御したい場合も、C++ の方が 有利なシーンも出てきます。 また、XNA の環境をサポートしていないプラットフォームに 移植する際、工数が増加してしまう場合が多いです。

sankaku197
質問者

お礼

おー、まるっきり勘違でもなかったみたいで。 ただなるほど、あくまで移植(特にXbox?)を視野に入れた場合の選択肢なんですね。 >XNAで作られた実行ファイルは一部、出力が遅くなる事が >また、XNA の環境をサポートしていないプラットフォームに >移植する際、工数が増加してしまう場合が多いです。 この辺りも考慮すると、私にはあまり魅力的な環境ではなさそうです。 回答ありがとうございました。

関連するQ&A

専門家に質問してみよう