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で)は順調に進んでいます。何かが壊れたときは、簡単に修正できます。混乱が少ない。私は自分のコードに少し「あまりにも」執着する傾向があるので、今年中に自分のゲームを公に見せたいと思っています。
最後に、独自のエンジンを書くことで、どのように「どのように」それを行うかを学びましたが、すべてのコンポーネントが何をするのか、どのように機能するのかを正確に知って理解していると言えます。私は実際に、特に文書化されていない大規模なプロジェクトでは、他の人のコードを読むのが嫌いです。使用するものはすべて自分で作成したいです。
これは私だけです。おそらく、私が他の人のコードに座って対処するよりも自分のフレームワークを書くほうが楽しいのだと思うので、事前に作成されたエンジンを使用することを疑います。