HN 日本語サマリー

← 一覧へ戻る
プログラミング

ゲームエンジンを作りたいと思ったあなたへ (2023)

So, you want to make a game engine (2023) (lisyarus.github.io)

51 pointsby kugurerdem30 コメント

要約

この記事は、近年のゲームエンジンの論争を受けて、独自のゲームエンジン開発のメリット・デメリットを考察しています。企業の方針に縛られない自由、パフォーマンス最適化、完全な制御、学習機会といった利点がある一方、莫大な時間と労力、既存エンジンとの機能差といった課題も指摘しています。ゲームエンジンとは、ゲーム制作を助けるあらゆるツールセットと定義し、プロジェクトの規模に応じた適切な複雑さが重要だと述べています。

全文翻訳

ゲームエンジンを作りたいと思ったあなたへ 2023年9月15日 Unityの最近の論争は、ゲームエンジンに関する激しい議論を巻き起こしました。一部の人は、誰もがすぐに新しいエンジンに切り替えるべきだと言い、他の人は、エンジンの切り替えには数ヶ月、あるいは数年かかる可能性があると返しました。また、最善の方法は自分でエンジンを開発することだと言う人もいれば、それは簡単な作業ではないと指摘する人もいました。そして、皆が正しいのです。単一の答えはなく、すべては特定のケースに依存します。しかし、もしかしたら、自分でエンジンを書くことは、思っているほど難しくないのかもしれませんか?そもそも、なぜそんなことをするのでしょうか?ゲームエンジンを作るということは、一体どういうことなのでしょうか?私は、自分のペットエンジン以外でゲームエンジンを使ったことは一度もありません。このエンジンは、3年間かけてゆっくりと拡張しており(現在約10万行のコード)、すでに十数個のジャムゲームと1つの商業リリースゲームで成功裏に使用しています。しかし、他の人がエンジンを使っているのを見てきました。他のエンジンに不満を言っているのを見てきました。自分のエンジンについて話しているのを見てきました。他の(オープンソースの)エンジンのソースコードを研究してきました。ですから、この問題についていくつか言えることがあると信じていますが、確かに私の経験はいくぶん偏っているか、型破りかもしれません。 目次 パート1:難しい質問 なぜ自分でゲームエンジンを作るのか? まず、部屋の象徴であるものから始めましょう。これは繰り返し議論されてきましたが、もう一度議論しても損はありません。自分でゲームエンジンを作る理由をいくつか挙げます。 最近の出来事が示すように、疑わしい企業の決定という重荷から解放される(これは大きな問題です)。 カスタムゲームエンジンは無料です(もちろん、開発コストは無視して、実際には何も無料ではありません)。 パフォーマンス、イテレーション時間(誰もがシェーダーの再コンパイルやライトマップのベイクを待つのが好きです)、エンジンのアーキテクチャ(数百万個の浮遊オブジェクトを持つゲームでは、従来のシーングラフではなくECSを使用するでしょう)など、自分のニーズ(または特定のプロジェクトのニーズ)に合わせてエンジンを最適化できます。 内部でどのようにすべてが機能し、どのテクノロジーが使用されているかを完全に制御できます。 お気に入りのプログラミング言語を使用できます(ただし、おそらく地球上のあらゆる言語に対応するゲームエンジンがあるでしょう)。 配布サイズをはるかに小さくできます(私のエンジンは2MB未満で、そのほとんどはSDL2.dllが占めています)。 エンジンをオープンソース化し、他の人がそれを使用しているのを見ることができます(ただし、FOSSプロジェクトの維持は基本的に地獄であることを忘れないでください)。 適切な品質であれば、エンジンを販売することさえできます(ただし、あなたの作品のマーケティングは基本的に地獄であることを忘れないでください)。 あなたが望む機能を実装していない愚かな開発者を理由に、イライラすることはありません。 インターネット上の見知らぬ人々は、あなたが自分でエンジンを作っているから、あなたがクールだと考えるでしょう。 それはとても楽しいです、約束します。 その過程でたくさんのことを学び、他のエンジンをより深く理解できるようになり、その結果、たとえ自分のエンジンを捨てたとしても、将来ゲームを作るのに役立つでしょう。 私個人としては、最後の2つの点が最も重要です。まず、学習は楽しいものです。もしそう思わないなら、始めるべきです。ゲームを作りたいなら、いずれにしてもたくさんのことを学ぶ必要がありますから、プロセスを楽しむことから始めましょう!第二に、私はコーディングが大好きです。アルゴリズムの実装、ライブラリとシステムの設計、低レベルのものを掘り下げるのが好きです。これを取り除くと、ゲーム開発は私にとって苦痛になるでしょう。 また、「イライラしない」という点についても詳しく説明したいと思います。これは私にとって、ある種の啓示でした。私は人々が常にエンジンについて不平不満を言っているのを見てきました。この部分は壊れている、この部分は他の部分を壊す、この新しい機能は古いものをサポートしていない、そしてこの機能は10年前に要求されたのにまだ実装されていない、と。もちろん、物事がそのようになっているのには常に理由があります。十分に大きな企業で働いたことがあるなら、おそらく共感できるでしょう。しかし、自分を責めるよりも他人を責める方が常に簡単です。「あの愚かな開発者はこの問題を解決しなかった!」なぜあなたがそれを必要としていたのに、それを解決しなかったのですか?まあ、それはあなたのエンジンではないですよね?それは彼らのものです。しかし、それはあなたのフラストレーションです。しかし、今、それはあなたのものです。今、あなたはあなた自身のエンジンを作っています。突然、フラストレーションはありません。あなたが今必要としている特定の機能がエンジンに欠けている理由を正確に知っています。あなたがそれを実装しなかった、それだけです。なぜ実装しなかったのですか?まあ、明らかにあなたは他のことで忙しかったのです!あなたは一人で、あるいは小さなチームで、ゲームエンジン全体を作っています。エンジンがいくつかのものをサポートしていないのは理解できます。それは期待されることですらあります。本当に必要になったら、その機能を実装するでしょう。もちろん、そうするでしょう。ただ、おそらく今は違います。他のことがあります。 私の言いたいことは、自分の仕事に対して自分を責めることは、他人の仕事に対して他人を責めることよりも難しいということです。なぜ自分でゲームエンジンを作らないのですか? いずれにしても、この全事業にはいくつかの欠点があるはずです。 それは困難で時間がかかります。つまり、ユースケースによりますが、3ヶ月のC++コースを受講した後に1年でUnrealのクローンを書くことを期待しないでください。 あなたは、これらの巨大で産業的なエンジン(同じ古いUnrealのような)に決して勝つことはできません。もちろん、あなたが大きくて裕福なスタジオでない限り、その場合、この記事はおそらくあなたのためではありません。 あなたのエンジンには機能が不足します。大きなエンジンの機能セットと使いやすさのほんの一部を達成するには、何年もハードワークが必要です。 実際のゲームを作るのではなく、エンジン開発に深入りしすぎてしまい、簡単に燃え尽きてしまう可能性があります。 インターネット上の見知らぬ人々は、あなたが自分でエンジンを作っているから、あなたが愚かだと考えるでしょう。 計画を正しく立てれば、自分でエンジンを作るコストは複数のプロジェクトに分散できることに注意してください。 では、ゲームエンジンを作るべきでしょうか?あなたが決めてください!できるだけ早くゲームを作りたいなら、既存のエンジンを選んで幸せになりましょう。ゲーム開発者として成長し、将来のプロジェクトを確保したい、そして時間があるなら、ゲームエンジンを作りましょう!それ以外の場合は、インターネットの見知らぬ人に頼るのではなく、自分で決める必要があります。 ゲームエンジンとは何ですか? 良い質問です!SDL2はゲームエンジンですか?私はそうではないと思います。それは本当にプラットフォーム抽象化ライブラリです。OpenGLはゲームエンジンですか?もちろん違います。それは低レベルのグラフィックスAPIです。stb_imageはゲームエンジンですか?確かに違います。それは画像読み込みライブラリです。SDL2、OpenGL、stb_imageを組み合わせて、画面上に動くスプライトを描画できるようにする小さなプロジェクトを想像してみてください。これはゲームエンジンと言えるでしょうか?確かにそう聞こえます!では、ゲームエンジンとは何で、他のライブラリやAPIとどう違うのでしょうか?グラフィックス、アニメーション、ユーザー入力の組み合わせでしょうか?さて、私の親愛なる友人は、グラフィックスやアニメーションが全くないターミナルで実行されるテキストベースのゲームを作ることに非常に成功していましたが、それらは完全に有効なゲームです。では、ユーザー入力があれば何でもゲームエンジンなのでしょうか?例えば、電卓はゲームですか?うーん、おそらくそうではないでしょう、あなたが死ぬほど退屈していない限り。 私は次の定義を提案します。ゲームエンジンとは、ゲーム制作を助けるために設計された、ツール、ライブラリ、その他のものの任意のセットです。この定義が、完全に無用なほど曖昧だと感じるなら、それはその通りです。しかし、それがポイントなのです。レトロスタイルの2Dピクセルアートプラットフォーマーを作っていると想像してください。複雑なマテリアルグラフ、ジオメトリの連続的なディテールのレベル、グローバルイルミネーション、高度なUI、逆運動学と統合されたフル機能の3D物理演算、マルチプレイヤーサポートなどなど、本当に必要でしょうか?必要ありません。必要なのは、ユーザー入力を処理し、画面に画像を表示し、おそらくいくつかのオーディオを処理することだけです。経験と頑固さによりますが、これは2日から30日程度の作業です。いずれにしても、それはあなたの仕事の1%に過ぎません。残りの99%は、実際のクソゲームを作ることです。素晴らしい@Enikoの言葉を見てください。