C ++はゲーム開発で「まだ」優先されますか?[閉まっている]


17

私は2Dゲームプログラマーです。私が得意とするプログラミング言語はC、Java、C#です。また、Actionscript 2.0、3.0、およびいくつかのjavascriptも知っています。3Dゲームプログラミングの学習に興味があります。これまでのところ、私はさまざまなゲーム開発フォーラムや記事をグーグルで読んで蓄積してきました。ほとんどのプログラマーはC ++を好む傾向があることに気付きました。また、オンラインゲームプログラミング教育コースでは、C ++とVisual C ++を開始コースとして教えることを好むことに気付きました。3Dゲームプログラミング用のC ++、C#、Javaの「強さ」の違いを知りたいので、この質問をしている理由です。

また、すでに2Dのゲームプログラマー向けの優れた 3Dゲームプログラミングの記事へのリンクを含めます。

PS:私見、私はまたC + +が不可解であることがわかりました。


それもたくさん得ます。そこで、プロのゲームプログラマが持つべきスキルについてコミュニティで質問しました。ゲーム開発のためのより良い言語としてのC ++に焦点を当てたいくつかの良い答えを得ました。check ..gamedev.stackexchange.com/questions
5552

@GamDroid:私はプロの2Dゲームプログラマーを作るものを知りたくありません。私はVisual C ++について知りたいのですが、なぜそれが話題になっているのですか。
ヴィシュヌ

2
ところで:Visual C ++?単なるC ++ではありませんか?
スピーダー

Visual C ++エディターはクールですが、Visual C ++言語(つまり、Win32 GUI APIを備えたC ++、MS Visual C ++またはBorland C ++ Builderの両方を備えたもの)はかなりわかりにくいため、ゲームには使用しないでください(あまりにも膨張し、GDIを使用すると、たとえばSDLを使用してウィンドウを制御するよりも遅くなります)
スピーダー

1
@Vishは謝罪しますが、これまでのコメントを念頭に置いて、より正確に編集してください。Win32プログラミングが混乱しているということなら、それを言ってください。
Tetrad

回答:


30

はい、C ++は最も頻繁に使用される言語です(ただし、一部の人々はまだCを使用しています)。

これには多くの理由があります。純粋な勢いは1つです。それは単に長年使用されてきた言語であり、多くの技術がすでに存在し、人々はそれに満足しているため、一晩で変化は起こりません。

次に、制御の問題があります。ゲーム開発者はコントロールマニアであり、コードで行われているすべてのことを知りたいです。C ++は、コントロール、C#、およびJava(2つの選択肢から選択)がコントロールを奪うことを可能にします。多くの点でそれは良いことかもしれませんが、ゲームコーダーはそれを好きではありません:)

最後に、さまざまなプラットフォームのSDKが非常にC ++中心であるという単純で実用的な問題があります。別の言語を使用するには、必然的にラッパーの作成、VMへのクロスコンパイルが必要になり、場合によっては(一部のコンソール開発の場合)プラットフォームホルダーによって許可されません(最初はJITコンパイルを実行する人が嫌いです)。


2
主流の開発業界では、はい。
-JasonD

2
言語に関しては、主にC ++です。すぐにどこにも行きません。などのLua、Pythonの、 -私はそれがまた、スクリプト言語に精通して損はないことをお勧めしたい
JasonD

8
Visual C ++は言語ではなく、IDEです。
SurvivalMachine

2
はい。おそらく最も使用されているIDEなので、C ++を学習すると同時にそれを知る価値があります。
JasonD

1
@SurvivalMachineまあ技術的には方言です(標準には存在しないMSVC ++拡張機能がたくさんあります)
-bobobobo

4

ゲーム開発のトピックに関するほとんどの出版物を見るとわかるように、C ++が依然として好まれています。私は現在、私が書いているC ++コードがテンプレート機能を乱用し、RAIIを広範囲に使用し、動的メモリ割り当てなど、私が見たものからゲームコードで行うべきではないその他の単純な理由で、ゲーム開発に飛び込むために現在Cを使用していますこれまでのところ。

Cにこだわると、私はミニマルになり、自分がやっていることを考えるようになります。STLが無料で提供するものを再実装しなければならない場合は困難になる場合がありますが、良い面としては、よりクリーンなコードを記述し、そのことをデバッグする時間が得られると思います。


3
RAIIはゲームコードで完全に受け入れられます(推奨されます)。
ストーンメタル

1
@stonemetal:RAIIは、遅延した、したがって予測できないリソース割り当てを推奨します。それが推奨されるかどうかは、ゲームのサイズとターゲットプラットフォーム(および問題のリソース)によって異なります。平均して私はそれを奨励しません。さらに、C ++のOOはスタック割り当てを難しくしすぎるため、C ++のRAIIはヒープ割り当てで最も一般的に使用されます。

3
RAIIはどのようにリソース割り当ての遅延を促進しますか?GLFWを使用するときは、コンストラクターでGLFWのinit関数を呼び出し、デストラクタでGLFWのクリーンアップルーチンを呼び出すGLFWRAIIというクラスを作成します。mainの先頭でスタックに割り当てますが、遅延や予測不可能なことは一切ありません。他の用途としては、レベルの開始時に割り当て、レベルの終了時にクリーンアップすることがあります。テクニックを不適切に使用しても、それが貧弱なテクニックになることはありません。RAIIについては、不適切な使用以外の予測できないリソース割り当てを示唆するものはありません。
ストーンメタル

これらの機能の使用を避ける必要があります。私はC ++を使用し、コードでテンプレートを使用したり、コンストラクターで例外をスローするオブジェクトを使用したりすることはありません。Cでは、引き続きダイナミックアロケーションを使用できます(3Dゲームの場合は必須です)。また、他の誰かが理解しやすい方法でコーディングする必要があります。純粋なCコードの大きなプロジェクトは、たとえそれ理解していても、地獄になる可能性があります。言語があなたを強制しなくても、あなたがしていることについて考えることを学ぶなら、他の多くの言語でもきれいなコードを書くことができるでしょう。
パブロアリエル

1

私は個人的にはC ++のファンではなく、Javaが好きです。ただし、業界のほとんどの人はそれを使用しており、ラッパーや仮想マシンなしで他のプラットフォームに変換するのが最も簡単な言語です。

ただし、他の言語がゲーム開発に適している場合もあります。私はLWJGLでJavaを使用していますが、それは驚くべきことです。C ++を学ぶ必要なしに3DプログラミングとOpenGLから始めたい場合は、JavaでLWJGLを試してください。非常に軽量で、実際にはJNIを介して実行されるC ++コードだと思います。

長期的にはC ++に切り替えたいかもしれませんが、C#またはJavaで開始して練習できます。ほとんどのゲームコードはその言語の経験に基づいていますが、使いやすい言語でOpenGLを試してみてください。また、グラフィックスを練習しているときに、OpenGLでGLSLを試してみる必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.