既存のエンジンを使用する代わりに、ゲーム開発者が独自のエンジンを作成するのはなぜですか?


41

多くの大規模で有名なゲーム開発者は、多くの場合、独自のエンジンを開発しています。例には、Valve、Crytek、Ubisoft、Epic Games、Square-Enixなどがあります。

単純にそれらができるからでしょうか、それとも既存のエンジンが十分な要件を満たしていない可能性が高いので、独自のエンジンを開発しますか?特定のエンジンを必要とするゲームはほとんど想像できません。UnityやUnrealのようなものは、あらゆる種類のゲームを作成するのに十分です。そうでなくても、ソースコードがあり、特別なニーズにも対応できるように変更できます。

既存のエンジンを使用する代わりに、ゲーム開発者が独自のエンジンを作成するのはなぜですか?



1
彼らは他の会社のゲームエンジンにライセンスを供与して支払いを望んでいません。
ヤノストゥランスキー14年

私はそれはあなたが9K +従業員が転がっていたとき、あなたは何をすべきかだと思う...
glampert

3
UnrealCryEngineなどのサードパーティエンジンを使用してAAAタイトルを作成する大手スタジオの反例がいくつかあります。
フィリップ

3
ValveはQuakeエンジンの使用を開始し、その後、後のゲーム用に独自のエンジンを作成しました。多くの場合、利用可能なものを使用することを学ぶことの問題であり、最終的には既存のエンジンが提供する以上の何かを達成したいと考えています。その時点で、大幅な変更を加えるか、独自のロールを実行する必要があります。
ナイロウ

回答:


53

スタジオがテクノロジーを「購入」する代わりに「ビルド」することを選択する理由はいくつかあります。

  • レガシー技術。既存の実行可能なミドルウェアが存在する前に、スタジオが独自のツールチェーンの構築を開始した可能性があります。
  • 特定の要件; スタジオには、既存のミドルウェアに適さない特定の要件のコレクションがある場合があります。
  • 予算の懸念; スタジオは、既存のミドルウェアの費用や契約上の義務を負担できない場合があります。
  • 「ここに構築されていない症候群。」スタジオの技術的リーダーシップは、構築しなかった技術を十分に理解していないため、合理的または不合理に警戒している場合があります。

一般に、ビジネスの成功に不可欠なものを所有および管理し、そうでないものを外部委託することは理にかなっています。

一部のスタジオでは、ゲームのデザインやストーリーテリングの側面が、成功のために活用することが期待される重要なリソースになる場合があります。これらのスタジオでは、デザイナーが適切なビジョンを実現できるようにするテクノロジーを単に購入するのが理にかなっています。

他の人にとっては、技術が成功の基盤になるかもしれません。たとえば、MMOを構築するスタジオは、そのインフラストラクチャを成功に不可欠であるため、一般にそのインフラストラクチャを構築する必要があります(そして、既存のミドルウェアは、少なくともより大きな「AAA」タイトルには一般に不適切です)。

リストしたスタジオの一部(特にCrytekとEpic)は、ゲーム市場で直接勢力を支配しようとするのを基本的に止めており、ほぼ確実に、ゲーム開発者としてよりもミドルウェアベンダーとしてはるかに多くなっていることに注意してください。


20
「ここで構築された」技術には利点があることもあると付け加えます。1つの例は、Unity3DがバージョンごとにEULAを変更し、「ギャンブルゲーム」がないなどの奇妙な制限を追加する方法です。技術のライセンスを取得すると、特定の理由(ライセンスゲームを作成するための知的財産権で発生するなど)でライセンスを無効にしたり、ライセンスを取り消したり、バグを修正するために料金を請求したりすることはできません。
Skrylar

真剣に、Unityは「ギャンブルのゲームはありません」と言いますか?彼らはかつて彼らのウェブサイトのコミュニティセクションにギャンブルに関する特定のページを持っていました!
ジョッキング

Unityのページunity3d.com/industries/gamblingには、「Unity Gamblingライセンス」を購入できると書かれています。値段はわかりませんが、特別なライセンス料を払えば、ギャンブル用のゲームを作ることができるようです。
アレックス

1
さらに、エンジンとは何かを知らなくても、既に知っていることから始めてエンジンを構築するのが簡単です。エンジンはユースケースの集まりにすぎません。冗長性を削減しようとする場合、エンジンを作成することになり、ゲームを構築しようとすると、モノリシックシステムになります。ゲームエンジンを取得し、ピクセルを表示する方法を習得することは非常に困難です。そして、すべてをテクスチャとして認識しているため、それができないことに気付きます。あなたがあなた自身を書くとき、あなたはそれに対処する必要はありません。
ドミトリー

18

Josh Petrieによると:

ここに構築されていない症候群。」

私も自分のエンジンを書いています。理由はそこにいるすべての開発者によって異なると思いますが、実際、他の人のコードで作業するのは一般的に好きではありません。私は自分でそれを構築できると感じ場合、他に何かを決めても意味がないという意味で強迫的です

Ploobs、UNITY WaveEngine、XNAFinalEngine、Love、Ogreなど、特にレンダリングAPIなどのさまざまなタイプのゲームエンジンをテストしました。十分に文書化されたエントリポイント...

しかし、私の問題は当時、エンジンの下で何が起こっているのかわからなかったときでした。うまくコントロールしたかったし、手の甲のように知っているフレームワークが欲しかった。「HEY!仕組みを学び、それを理解する唯一の方法は、独自のエンジンを完全にゼロから構築することだと思います。プログラミングの歴史のほとんどは、Webと処理ソリューションに関するものでした。 -これは私にとってまったく新しい球技でした。

それが私がやったことです。

それで、私はすでにC#を知っていたのでXNAのセットアップを選択し、どのように、またはどこから始めるべきかを考え始めました。アイデアが必要でした。

私は、それを決めた私はストレート3Dに入るだろうか、関係なく

基本を理解するのはクールでした-スプライトのバッチ処理ですが、進行するにつれて新しい障壁や障害を発見することになりました-最初の本当の問題はバッチ制限です。私の目標は、視錐台に少なくとも10000個のエンティティをいつでもレンダリングできるゲームを構築することでした。

Shader Based Instancingを実装する新しい旅に出ました(そして、私はその間HLSLを学びました)代わりに、XNAに組み込まれたModelおよびEffectオブジェクトを捨てて、代わりに独自の置換を記述しました。最初はVBOストリームを理解できませんでした。私は物事を壊しました-私はインスタンス化するものについて質問をオンラインで行って、GPUが何をしていたかを最終的に理解するまでそれを続けました。報われました。PIX(dxsdk)を使用してVBOを数日間デバッグした後、ビューポートで2万を超えるテストエンティティがズームしました。

レンダリングパイプラインがどのように機能するかについて「ある程度」考えましたが、まだ完了していません-独自のゲーム状態、カメラ、ポストエフェクト、およびエンティティオブジェクトを作成し、独自のビルドによってXNAコンテンツパイプラインから移動しましたローダー(XNBのことに対する個人的な嫌悪感)、複雑な深さソートおよびブレンド状態分離ジオメトリチェーンを作成し、インスタンス化されたスプライトとテキストもすべてゲームシーンに投影されました。

私はこれをほぼ一年間継続的に追加、修正、変更、実験し続けました。最終的には、かなり良い結果が出ました。私はそれを作成したので、フードの下で何が起こっているのかを理解しました-私の赤ちゃん。

これで私のエンジンはほぼ安定し、ほぼ完成しました。完璧ではありません。スクリプトがきびしく、GUIがまったく良くありませんでした。しかし、私はまだそれを愛していました。数千行のコード、アセット、およびメディア-プライベートな2GB gitリポジトリに穴が開いており、これまでになかった種類の開発をしようとしたときに経験したすべての頭痛の種。私が克服したすべての障害は学んだ教訓であり、安心でした。

私はそれで欲しかったほとんどすべてをやってのけました。

しかし、最後に-私はそれが彼女を置く時間であると決めました。 ネットや他のgamedevの仲間からのアドバイスを受けて、自分でこのような巨大なエンジンを書くことに満足している間、私は今度はほとんど知っているので、もう一度やり直すことを決めました。私がやっていること。

そのプロジェクトはまだ私のGITリポジトリに隠れています。

新しいエンジンを作成する2回目のパス(今回はMonoGameで)は順調に進んでいます。何かが壊れたときは、簡単に修正できます。混乱が少ない。私は自分のコードに少し「あまりにも」執着する傾向があるので、今年中に自分のゲームを公に見せたいと思っています。

最後に、独自のエンジンを書くことで、どのように「どのように」それを行うかを学びましたが、すべてのコンポーネントが何をするのか、どのように機能するのかを正確に知って理解していると言えます。私は実際に、特に文書化されていない大規模なプロジェクトでは、他の人のコードを読むのが嫌いです。使用するものはすべて自分で作成したいです。

これは私だけです。おそらく、私が他の人のコードに座って対処するよりも自分のフレームワークを書くほうが楽しいのだと思うので、事前に作成されたエンジンを使用することを疑います。


13
これは、とりとめのない個人的な逸話によく似ています。おそらくこれを編集してより簡潔にすることができ、より良い答えが得られるでしょう。
ジョシュ

2
これはすべて学習するのに最適であり、すべてを行う時間があるときにゲームを作成するのにも最適です。本当にあなただけのとき。しかし、誰かとコラボレーションしたい場合はどうでしょうか?または、他のプログラマーと一緒に会社で働いていますか?誰かがあなたのプロジェクトに参加したい場合、彼らがあなたのコードを読むことになっているのは少し奇妙ではありません-他の人のコードのために..あなたが嫌い​​なことです。コードを読むことも非常に重要なスキルだと思います。違反はありません。あなたは多くのことを学び、クールなエンジンを書いたと確信しています-それがすべてではないことに注意してください。
2014

私は、あらゆる言語のあらゆる種類のコードに関わるすべての仕事が、私にとって常に単独であることを認識しています。
コーディモーガン

私は言わなければならない、私は人が自分のエンジン/ツール/何でもロールアウトする理由を正確に知っています。しかし、価格は(すべてのものと同様に)あります...私は、あなたがそこにある最もくだらないコードを読んだり理解できないとき、すべてのボスがただそれを嫌っているという感じを持っています。 *文書のないひどく書かれたひどく保守されたコードのトン、ただそれを感じてください(「現実の」世界)違反なし。
Quonux 14

それが、私たちプログラマーがいいものを持てない理由です。なぜなら、私たちは常に、実用的で信頼できる方法を使用するのではなく、すべて自分で作りたいからです。私はすべてを自分で書く必要がありますが、私は徐々に他人を信頼することを学んでおり、これまでのところ私は悪いことよりも良いことをしています:)
Maurycy

15

独自のエンジンを記述する絶対的な重要な理由(そして、これを誰もまだ呼んでいないことに驚いています)は、デバッグのためです

大きくて複雑なゲームを作成していて、クラッシュバグがあり、ソースコードを持っている場合(そしてそれを書いたおかげでそのソースコードに精通している場合)、単にデバッガーを添付することができますプロセスとクラッシュの原因を見つけます。できた

他の誰かの市販のエンジンを使用していて、そのエンジンのソースコードがない場合(通常はありません)、発生する問題をデバッグします-あなた自身のコード内であっても-途方もなく困難になります。また、エンジン自体の内部でバグに遭遇した場合、自分でバグを解決することはできません。リリース日から1週間遅れて、使用しているエンジンのクラッシュバグを発見してもらいたいと思います。クラッシュバグは、独自のエンジン内にあるため修正できないクラッシュバグです。ソースコードがありますか?私はこれが起こるのを見ました-あなたはベンダーに緊急のサポートコールを申し込む以外に選択肢がなく、彼らがあなたを探し回っている間、彼らがあなたのために問題を解決できる(そして興味がある)ことを願っています、

ゲーム開発は困難ですが、デバッグは数桁難しくなります。私の本では、ゲーム開発をより難しくするがデバッグをより簡単にするものはすべて大きな勝利です。


3
これは、オープンソースエンジン(cocos2d-iphone)を使用して経験した大きな利点です。作成したコードとまったく同じ方法でデバッグできます。私は実際に、オープンソースを考える方法は、それがあなたのコードだということだと思います。バグが存在する場合、我々は、我々のコードの他の部分のように、それらを修正する必要があります...
antont

1
これは、あらゆるミドルウェアについて言えることです。コードのデバッグはプログラマーの仕事の80%であり、ミドルウェアの処理は、私たちが数え切れないほど多くのミドルウェアを備えた今日の技術に共通する問題です。それを克服することを学ぶことは仕事の一部にすぎません。エンジンが壊れない場合、あなたが制御できない他の何かが意志します。可動部分を少なくするのは良い考えですが、ゲーム開発のように複雑になった場合は、とにかく多くの部分に対処する必要があります。
ティム

@ティム私は強く同意しませ -デバッグが難しい方法で外部の1つが誤動作する可能性があることは、単に肩をすくめて、すべてをデバッグが困難な方法で誤動作させるように辞任することを意味するものではありませ。明らかに、ケースバイケースで物事をとる必要がありますが、エンジンはトリッキーなバグがしばしば潜む大きなシステムです。あなたが自分でそれを作る余裕があるなら、なぜあなたあなたのコントロール下でそれを望まないのですか?
トレバーパウエル

@TrevorPowellそれは明らかにプロジェクトの複雑さに起因し、あなたが言うように、ケースバイケースの基礎ですが、単に車輪を再発明すること(特に大きな車輪の場合)は、しないことによって節約される時間に関して真剣に検討する必要がありますそれ。ミドルウェアは物事を簡単にします。開発者として、ソリューションをどれだけうまく組み立てるかを考慮することなく、いつでもソリューションを改良して改善できると信じています。いくつかのバンプ>再発明>完全に間違ったソリューション
ティム

2
@ティムRE:「ミドルウェアは物事を容易にします」、明らかにあなたとは非常に異なる経験がありました。
トレバーパウエル

9

ここには非常に良い答えがありますが、重要な追加ポイントが1つ欠けています。

今日のライセンス可能なエンジンの多くは、専用エンジンとして始まりました

Unrealは非常に遍在しているため、例として取り上げましょう。

今日、Unrealのことを考えると、ライセンスを取得し、独自のエンジンを構築する代わりに使用できるエンジンを考える傾向がありますが、常にそうであるとは限らず、かつてUnrealエンジンは別のエンティティ。

むかしむかし、Unrealと呼ばれるゲームがありました。開発者は、既存のエンジンのライセンスを取得するのではなく、独自のエンジンを構築することにしました。いくつかのイテレーションを通じて早送りすると、そのエンジンは今日知られているアンリアルエンジンになります。

ポイントは、これは鶏と卵の問題だということです。ライセンスできるミドルウェアはすべてどこかで始まり、ミドルウェアとしてまったく起動しなかったことがよくありました(ミドルウェアになることを意図して書かれておらず、現状は事実上事故です)。最終的に誰かがエンジンを作成する必要があるため、人々は独自のエンジンを作成します。今日の専用エンジンは明日のライセンス可能なミドルウェアになる可能性があります。


2
その価値は、アンリアルなどのゲームが最初に構築された当時、そのすべてをゼロから作成する以外に選択肢がなかったことに注意してください。それが唯一の過去だ夫婦我々が持っているの選択肢年のNの ...エンジンを
joltmode

3

スタジオがテクノロジーを「購入」する代わりに「ビルド」することを選択する理由は他にもあります。

  • 新しいプラットフォーム:新しいモバイルOS、コンソール、またはコントローラー。跳躍、グーグルグラスなどについて考えてください。クロスプラットフォームのサポートは難しいです
  • 新しいゲームの仕組みやゲーム内のエディター:数年前のFEZについて考えてみてください(2Dと3D)
  • 優れた無料のオープンソースゲームエディターの不足。古いゲームの既存のソースに関する適切なドキュメントの欠如
  • スタジオツールチェーンのツールの進化(または新しいツールの追加)
  • エンジンの価格設定とライセンス戦争

また、特定の要求/ニーズとエンジンの価格設定とライセンス戦争に同意し、一部のスタジオが一部のエンジンを展開することを強制しています。

他のエンジンを「購入」または「使用」する良い動機は次のとおりです。

  • コードの再利用:他のゲームで既に使用されているエンジンは、テストされ、安定しており、初日から必要な機能のほとんどを備えています。
  • 拡張:いくつかのオープンソースエンジンを拡張できます。
  • 無料:ほとんど無料です。無料のオープンソースエンジンでさえ、学習するには開発者の時間が必要です。

2

歴史的理由(主に)。
これは価格設定に関連しています。

過去数年間にUnrealまたはCryEngineを実行するのを見たすべてのゲームは、巨額のお金を払わなければなりませんでした。特に、ソースコードを取得する場合(つまり、UDKだけでなくUEが必要な場合)。

しかし、これは変わりました。価格競争が始まった今、誰もがさらに大きなエンジンを購入する余裕があります。
それはどういう意味ですか...

  • UE4とCryEngineの両方を使用したより多くのゲームが表示されます。
    ただし、これまでのようにAAAゲームにはなりません。
  • 各プロジェクトのカスタム要件とニーズはなくなりません。
    RelicのWarhammer40k / COHエンジン、またはEAで将軍が使用したエンジンをご覧ください。
    だから、だれかがより大きなエンジンを買う余裕があるとしても、彼らは必ずしもより良い選択を提供しません。
  • 市場には他にもあります。Unityのように。
    使いやすさ、パフォーマンスの高さ、巨大なアセットストアにより、人々は気に入っています。
    もちろん、Unityはほぼすべてのプラットフォームに展開できます。

ええ ニーズ、過去の価格など。


1
Havokを「大幅に変更された」とは呼びません。
ジョシュ

Havokは単なる物理エンジンではありませんか?
フィリップ

私は思い出すことができますが、GW2はあまり注意を払っていませんでした。
ジョシュ

じゃない(ie.: you want UE, not UDK only.)
Keavon

#JoshPetrie:申し訳ありませんが、正直なところ、私はHavokの経験がありません。それで私はGW2のLICENSEファイルにつまずいて、数日前にWikiページを訪れ、Havokを見ました。それから、ゲームの開始時に「Havok」を見たことについて古い思い出がありました。それがエンジンだと思いました。しかし、その後、私はまた、Havokを調べ、それが物理エンジンであることを知っていました。tl; dr:Havokについて物事を混乱させました。|| #Philipp:それはもう少しですが、実際にはゲームエンジンではありません。|| #Keavon:正しい、修正。ありがとう!
Apache

0

チーム組織はどうですか?

デバッグの背後には、ドキュメントとサポートがあり、コードはありません。なぜなら、最終的には、自分の建物グループが自分のエンジンのコードに触れることを望まなかったからです。それは混乱する可能性があります。

そのためには、サポートグループが必要です。しかし、それはコストを引き上げます:より多くの人々、より多くの場所、より多くの電話、より多くの管理...

これに対する1つの解決策は、ミドルウェア会社へのアウトソーシングかもしれません。つまり、ゲームを制作する私のビジネス、つまりクリエイティブグループとライターにリソースを解放します。

新興企業にとって、使用せずに構築することは悪い選択肢ではありません。そして、非常に多くの収入を得た後、あなた自身のエンジンを構築したいと思うかもしれません。


0

まあ。開発者が作成した独自のエンジンを使用するほとんどのゲームの場合。しばしば。サードパーティのエンジンでは処理できません。独自のゲームを開発しやすくするために、独自に作成します。または少なくとも可能。

そして、一般的に独自のエンジンを使用する多くのゲーム。より良く働く。なぜなら彼らはよりカスタマイズされており、100%自分のタスクに合っているからです。また、ゲーム自体の雰囲気も異なります。ゲームをプレイするのは本当に簡単で、それは作者によるものです。非現実的なエンジンなど。より多くのカスタムエンジンが一般的であり、ユニークなゲームになります。ユニークに見え、ユニークに機能し、既成のエンジンで作成されたゲームよりもパフォーマンスが優れているはずです。


0

私の答えは既存のものとは異なるので、遅れていますが追加します。

質問のバルブの例、またはウィッチャーシリーズの場合、プロセスは次のとおりです。

  • エンジンのライセンス
  • エンジンを目的に合わせて変更/適応する
  • ゲームをリリースしてお金を稼ぐ
  • 次のゲーム用に独自のエンジンを作成する

同じアプローチは、独自のエンジンを開発するほとんどすべての経済的に合理的な開発者によって採用されています。エンジンを変更することで、エンジンの動作方法に関する知識を蓄積し、ライセンスを取得したエンジンに起因する設計上の制約に直面します。最後に、彼らはエンジンを作成するために必要な社内知識、エンジンの作成に資金を供給するための現金、および専用エンジンの恩恵を受けるプロジェクトを持っています。その時点でエンジンを構築する理由は次のとおりです。なぜなら、それが賢明なことだからです。


-2

プログラミングの先生が教えてくれた、あなたが構築する方法を知っているAPI /メソッド/クラス/関数のみを使用する

あなたがそれを構築する方法を知らず、他の誰かの仕事のチャンスを使用している場合、それがどのように機能するかわからない場合、あなたは何かがどのように機能するかを知らないとき、あなたは多くのエラーと問題を起こしやすく、混乱の壁を打つ

単純なことを学ぶと、奇妙な問題が発生する可能性があり、ゲームエンジンのような複雑なものはもちろん、ゲームエンジンを使用して多くの予期しない結果や問題を引き起こす可能性がある場合は特にそうです

ゲームエンジンは、構築時に論理コードやその他のロジックに従ってはいけません。期待できることはいくつかありますが、実際には、プログラミング言語またはシステムの動作方法に関する他の誰かの理解と知識に基づいてすべてが構築されます

たとえば、数学の方程式を書くことを選択した場合、私はそれを非常に多くの方法で書くことができます。多項式、微分計算、基本的な幾何学、代数、または私に合ったもので表現できますが、私は欲しいので特定の形式/形式で書くことがあります簡単に利用できるものを操作できるように、頂点操作の多くを行う予定がある場合など、基本的なジオメトリを使用してこの数学モデルを書くかもしれませんが、勾配を使用して曲線を変更したい場合、微分計算に焦点を当てることができますグラデーションなどを簡単に操作するために、より簡単にアクセスできるように計画しています

そして時々、現在のゲームエンジンは私がやろうとしていることの柔軟性を与えないかもしれませんし、そのオプションを与えることさえありますゲーム内のオブジェクト

とにかく、私が指摘しようとしていたことを明確にしたいと思います


6
-1かなりの大きさのプロジェクトで作業する場合、実際にそれがどのように書かれているかわからない関数/クラスを使用することが期待されます。また、トピック。私はすべてのプログラマーが知っておくべきことについて話しているわけではありませんが、ゲームエンジンは巨大なプロジェクトであり、プログラマーXに特化したトピックXにはトピックYの知識がないため、関数を使用する必要があります。 APIの使用方法を知っているべきではないが、APIを記述するための十分な知識がない可能性があることを意味します。
concept3d 14

2
あなたの先生は、化学元素からゼロから完全な車を組み立てる方法を知っていますか?または彼はそれがちょうど働くと仮定してそれを運転します;-)
Kromsterはサポートモニカ14

1
@ concept3dは、他の誰かがあなたが使用する関数/クラスを設計するプロジェクトで作業するのとは異なります。通常、何かを理解していないと簡単に説明できるため、コードクラス/関数/ライブラリを使用するプログラマ/彼女が愚か者であることを知らない、公開されているクラスやAPIでさえ、それらのAPIや機能が何をするのかを説明するマニュアルやWikiが付属しているので、何をするのか知らずに使用することを期待している泳ぎ方を知らない深海で、本当に無知で間違いやすい
-thingybingytie

@ hopjoppe5受け入れられた答えを確認すると、これらが人々が独自の技術を構築する唯一の理由です。多くのライブラリ/コードは現実世界で外部委託されており、使用する必要があります。マニュアルを読むことは実装を知ることとは異なります。一部のアルゴリズムについては、自分で実装することを推奨しておらず、この分野の専門家が実装する必要があります。すべてを知ることは不可能です。
concept3d

抽象化の主な理由の1つは、コードがどのように機能するかを知らない人でも使用できるようにコードを書くことです。ピンポンよりも大きいゲームで作業する場合、すべてのコードに精通しているとは限りません。そして、ほとんどの場合、これは良いことです。なぜなら、入力システムが "On Action Key Down"イベントのリクエストをどのように処理するかを心配するのではなく、今取り組んでいることに集中できるからです。
アイディアカピ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.