オンラインフォーラムでゲーム開発について質問するときはいつでも、線の描画アルゴリズムの学習、ビットレベルの画像操作、ビデオの解凍などの提案を常に受けます。
しかし、ゴッドオブウォー3のようなゲームを見ると、これらのゲームがこのような低レベルのテクニックを使用して開発できるとは思えません。
そのようなゲームの純粋な素晴らしさは、(私にとって)わかりやすいプログラミング方法論に対抗できません。
ゲームハードウェアに加えて、最近は本当に怪物です。したがって、開発者がより高いレベルの抽象化で作業するのは当然のことです。
ゲーム業界の最新の開発方法論は何ですか? 30〜35名の開発者(そのほとんどが管理とマーケティングの綿毛)のチームが、このような気の遠くなるようなゲームを作ることができるのはなぜですか。
質問が一般的すぎると思われる場合は、戦争の神3のアーキテクチャを説明できますか?または、どのようにクローンを作成しますか?私は客観的に答えられるべきだと思います。
免責事項:私はビデオゲーム開発者ではありません。しかし、私は「趣味」の興味を持っています。
目にするAAAゲームのほとんどは、エンジンを使用して作成されています。それらはゼロから書かれていません。エンジンをフレームワークのようなものと考えてください。 .NETフレームワーク、Java SDK、Cocoaツールキット。
ソフトウェアの作成を簡単にし、キッチンシンクのコードを抽象化するためのすべてのこと。必要ですが、毎回書くのは非常に非生産的です。
これらのエンジンを使用すると、開発者はゲームを構築でき、基礎となるコードの一部を心配する必要がありません。 (間違いなく、ゲーム開発はソフトウェアエンジニアリングの最も難しい分野の1つです。)
たとえば、 nreal Engine 4 にはキラー開発キットとスタジオがあります。
http://www.youtube.com/watch?v=MOvfn1p92_8
世の中にはさまざまなエンジンがあります。有料のものもあれば、無料のものもあれば、もっと金属に近いものもあります。
例えば:
Gbjbaanbのコメントを参照して、ゲームプログラミングを楽しくするいくつかのことは、コードベースの寿命が限られていることと、精度を必要としないことです。たとえば、FPSゲームを設計していて、移動アルゴリズムによってゲームキャラクターが数ピクセル離れている場合がありますが、それは大した問題ではなく、誰も気付かない可能性があります。ビジネスソフトウェアを設計していて、合計関数で数ドルの割引が出る場合は、それははるかに深刻なバグです。そのため、ゲームを設計するとき、一部の側面の精度はかなり低くなる可能性があります(答えが正確に正しいことを確認する自動テストスイートではなく、人間のテストに合格するだけで済みます)。
私の経験では、特にリアルタイムゲームのゲームプログラミングは、GUI作業を除いて、他のほとんどすべてのソフトウェア開発とはかなり異なる経験でした。それはあなたが試さなければならないものです!
nity3D は本当に素晴らしいです。ここに私がそれについて好きないくつかのポイントがあります:
http://en.wikipedia.org/wiki/Unity_(game_engine)#Major_features
http://unity3d.com/unity/licenses
http://unity3d.com/unity/editor/importing (少し下にスクロール)
コーディング(スクリプト)は、優れたAPIとコンパイル時のチェックを備えた、Nice言語であるC#で実行できます。優れた開発環境(IDEおよびすべて)が付属しています。別のものが必要な場合は、Javascriptもサポートしています。
非常に優れた物理サポート(衝突、重力、力など):
http://docs.unity3d.com/Documentation/Manual/Physics.html
さまざまなモデル、スクリプト、アニメーションなどを購入できるアセットストアがあり、スキル(およびウォレット)に応じてそれらを取得/変更して、ゲームの適切なリソースをすばやく取得できます。
最後になりましたが、かなり高速です。モバイルデモを確認してください。IMHOは非常によく動き、非常にまともなグラフィックスを備えています。
http://unity3d.com/gallery/made-with-unity/game-list
これが私が現在待っている素敵なUnityプロジェクトです:
彼らは nityを選んだ理由 、および 他のユーザーがUnityをどのように使用するかについて議論している に関する素晴らしいブログエントリを持っています。
ID Softwareは、通常、最先端のゲームを公開しているベンダーの1つです。数年後、彼らはしばしばそれらをオープンソースとしてリリースします。 http://fabiensanglard.net/quake3/index.php に、Quake3ソースコードの分析があります。これは非常に冗長な説明であり、Quake3はかなり古いものですが、その概念はまだ現代のゲームに関連しています。
そして、はい、最先端のモダンで高速で競争力のあるゲームエンジンを構築したい場合は、それらすべての低レベルの要素を知っている必要があります。それらを気にしたくない場合:さまざまなエンジン(quake3エンジンまたは他の回答からのエンジン)が利用可能ですが、それでも新しい革命的なゲームを作成しているわけではありません;-)
多くの回答が述べているように、ゲームエンジンとライブラリが大きな役割を果たします。ただし、これは小さな「インディーズ」ゲームよりも中規模から大規模の商用ゲームに適用されることに注意してください。
たとえば、モバイルプラットフォームでは、ほとんどのゲームは、本格的なゲームエンジンのフレームワークに依存するのではなく、比較的原始的なライブラリのセットのみを使用して記述されています。それらは存在しますが、ほとんどの場合、それは以前のプロジェクトの独自のコードを再利用することです。