web-dev-qa-db-ja.com

ゲームプログラミング:C#またはC ++?

ゲームプログラミングを本当にやりたいと思っています。それで問題は、独学でプログラミングを学びたい18歳のときに、C#とC++の間で最も適したプログラミング言語は何ですか? (私はUnixについては気にしないと述べなければなりません。ウィンドウズが依然として最も使用されるOSであると信じているからです)

私はC++の基本を知っていますが、C#については何も知りません。 C++にはそのようなチュートリアルガイド、dllなどがあるが、C#にはないが、1人でプログラムを開発する方がはるかに簡単に使用できることは知っているが、プログラムが難読化されている場合でも読んだそのソースを取得するのは簡単です。

さて、まずは基本的なことに集中したいと思います。C++の方が自分に適していると感じたからといって、C++を好みます。だから私はそれが好きだとしても、それが最善のことではないかもしれません。

どれを選択すればいいのか本当にわからない。さまざまなWebサイトでたくさんのスレッドを読んだことがあるが、C#はC++よりも人気が高まっているようだ。でも、そうですね、ゲームプログラミングもやりたいと指定しました。それで、「C++はそうではないが.netメモリ処理が原因でC#が簡単になる」というよりもいくつかの優れた点を知る必要があります。

15
Chronix

ゲームをプログラミングしてC++を学びます。それはとても楽しい経験でした。同じことをすることを強くお勧めします!

しかし、今はC#プログラマーです。当時C#が利用可能だったとしたら、はるかに生産性が高まったでしょう。

C#はゲーム開発の学習に最適です。それはあなたがフレームワークから本まで始めるのに必要なすべてを備えており、言語は素晴らしいです。

私は 数十冊の本 を特に見ましたC#ゲームプログラミングとMicrosoftは彼のフレームワークを改善するために多くの努力をしていますDirectXおよび[〜#〜] xna [〜#〜]

[〜#〜] update [〜#〜]this にも興味があるかもしれません。 Miguel de Icazaの最近のブログ投稿です。

UPDATE 2013-02-22マイクロソフトは XNAサポートを終了する を計画しています。

21
user2567

ほとんどのゲーム会社はC++を使用しており、おそらくpythonスクリプトまたは他の言語がバックグラウンドで実行されています。さらに、OpenGLとDirectXのバインディングはC++を対象としているためです(もちろん、 Direct3dのものはC#ですが、ゲームプログラミングではC++がメイン言語です。

私はあなたに公正な警告を与えるつもりです(そしてこれがあなたを思いとどまらせることはありません)が、3Dグラフィックスは非常に複雑になる可能性があります。新しいDirect3Dにより、以前よりもかなり簡単になりましたが、それでも数学はかなりわかりやすく(かなり混乱する可能性があります)、ライブラリ自体だけでも混乱する可能性があります。

まず、非常にシンプルなものから始めます。 2Dのものの場合、SDL(Simple Directmedia Layer)は(トップダウンゲームのような)3Dに入るとかなり使いやすくなります。 MSは、DirectX SDKドキュメントにいくつかの素晴らしいチュートリアル/サンプルを持っているので、一見の価値があります。 Neheのチュートリアルは少し古くなっていますが、それでも素晴らしいです。

しかし、あなたの質問に答えるには、通常、すべてC++で行われます。

12
user6791

まず、いくつかの優先順位を設定します。最初にゲームを作り、それからプログラミングのより高度な側面について学びたいですか、その逆ですか?どちらのアプローチにも長所と短所がありますが、私の意見ではどちらも正当です。

ゲームの作成を開始する場合は、C#を学ぶことをお勧めします。 C++の基本を既に理解している場合は、C#を選択しても問題はありません。 C#をツールにすることには利点があります。これは言語を学ぶのが簡単で(C++と比較して)、「管理された言語」です。つまり、自動的にメモリの配管を行います(多くのC++初心者でも、そうでない人でも、問題があります)。 )。また、MicrosoftのXNA Frameworkへのアクセスも提供します。これにより、ゲームサイクルやデザインなどに集中できるようになり、動作することを心配する必要はありません。確かに、このすべてのインスタ配管にはオーバーヘッドがあります。つまり、おそらく業界グレードの3Dゲームを作成することはありませんが、ゲームプログラミングに参入しているだけなので、次のHaloを最初のいくつかの試行で作成することはないでしょう。 。 :)

これは、成功したXNAゲーム(選択の武器)を開発した男の死後の様子です。彼は、C#/ XNAを使用することで、C++を使用する必要があるのではなく、開発時間をどのように節約したかを詳しく説明しています。 http://www.gamasutra.com/view/feature/3899/postmortem_mommys_best_games_.php

そうは言っても、少なくともバックグラウンドでどのように機能するかを知るために、少し時間をかける必要があります。 C++プログラマがそれを行う方法。ゲーム業界で足場を固めたい場合は、C++でゲームを作成することを学ぶと、他のゲーム開発チームに参加するのが簡単になります(そのほとんどはC++で動作します)。しかし、C++をまったく使用しない場合でも、内部がどのように機能するかを知ることは、使用する言語に関係なく、優れたプログラマーになるだけです。

8
System Down

生のゲームプログラミングはかなり冷たくなります。 C#またはC++のいずれかで低レベルのグラフィックス呼び出しを処理することはマイナーな悪夢であり、3Dモデルはもちろんのこと、2Dスプライトのレンダリングのホイールを再構築したくありません。あなたは独力でプログラミングを学びたいので、最善の策は、少し先に進めることができるフレームワークを見つけることです。

あなたはCベースの言語にある程度の知識があるので、私の提案は nity 3D を与えることです。商用ゲームの開発ショップからの採用が本格的に取り入れられているだけでなく、興味深いプラットフォームオプション(PC、Android、iPhone、Webランタイムなど)がいくつかあるだけでなく、非常に使いやすい無料バージョンと多くのチュートリアルがあります。コンセプトから実装に移行する方法を示します。何よりも(IMO)サポートされているスクリプト言語の1つはC#です。

3
Jacob Proffitt

ゲーム開発用にC++を大いに宣伝しています。いくつかの追加の障害があり、さまざまな長所と短所がありますが、最もよい理由の1つは移植性です。

C#を使用すると、最近の開発期間がかなり長くなり、驚くほど優れたエンジンがプログラムされています。これらはどちらもゲームプログラミングに適した言語です。Windows/ Xboxプラットフォームのみを対象とする場合は、特にC#を使用する理由があります。

あなたが学ぶべきだと私が最も思う言語はOpenCLまたはCUDA、いくつかのGPGPU言語でしょう。個人的には、OpenCLの方が長持ちし、さらに成長する可能性があるため、基本的にはCスタイルです。 OpenTK があり、C++またはC#のニースラッパーです。

私はいつもRubyゲームプログラミングはハードウェアアクセラレーションでどのようになるのか...と思っていました...

3
Garet Claborn

私は2年前にクラスでゲームを作成し(当時は私も18歳でした)、C#でゲームを作成しました。大規模なC#プログラムは通常、大規模なC++プログラムよりも動作が遅いことがわかりますが、C#を使用する場合の作業もはるかに少なくて済みます。メモリ管理は自動的に行われ、最初のゲームの範囲では、十分に高速です。 (私たちのゲームは、本格的な2DマルチプレイヤーのスタークラフトのようなRTSです。)

管理が簡単になるはずなので、C#をroot化します。ただし、プロのゲーム開発者になりたい場合は、Microsoftプラットフォームでのみ機能することを覚えておいてください。 (それでも、C#はC++への良い足がかりになる可能性があり、2つの言語を再学習する必要がある場合は、最初にC#を学習しようとします。)

2
zneak

私はC++に投票します-それは主にそれがクロスプラットフォームである可能性があるため(もちろん、コードの記述方法に応じて異なります)、また、メモリ管理に関するより多くの知識を提供すると思います-必要するため気にしてください。しかし、linux/unixは気にしないので、今のところメモリの複雑さを省きたい場合は、今すぐC#に集中して、C++も学習してみませんか?

1
Mauren