私は現在、ゲームエンジン用のメモリ割り当てシステムをコーディングしています。アロケータ構造が有用であることについて助言を与えることができる経験豊富な開発者がいれば、私は疑問に思っていました。ゲームエンジンのアロケータ
私はいくつかの人々に少し心配していると思うので、少し私の立場を正当化する必要があると思います。私は答えhereとhere(そして彼らがhere、hereとhereを指しているブログ)を読んだ。しかし、私は「ゲームを最初から何度もやり直してみてください。そして、あなたが再利用するコードはあなたの「エンジン」なのです。それは本当に私のためには役に立たないのです。私は何度も何度も何度も何度も何度もやっていたことで、実際に私のコードをうまく再利用していなかったことに気がつきました。
私はこれらのことを私が何度も何度も何度も繰り返し使用しているとコード化することに決めました。一度やり直してください。
私は本当に自分のリーグから出てきたので、いくつかの本を買った。 Jason Gregory(GEA)のGame Engine Architectureは本当に素晴らしいですが、私はGame Coding Complete(McShaffry)とProgramming Game AI by Example(Buckland)も持っています。 GEAには、高性能アロケータについての良いアイデアがあります。本当に興味がありますので、私はそれをやり遂げると思っていました。
私はスタックベースのアロケータをコーディングしており、プールベースのアロケータはほぼ完成しました。両方とも、メモリアライメント可能な容量を有し、異なるメモリバジェットで動作するように割り当てることができる(すなわち、アロケータは、例えば、「小売」メモリまたは「開発」メモリなどを使用することができる)。私はプログラミングスキル/関心レベルの点でこれらのコンポーネントを作成するだけで有益なことを発見しました。
ゲーム開発で役に立つか、定期的に登場する他のアロケータ構造をお勧めしたい開発者がいるのでしょうか? ?または、自分のキャリア全体で他のことを一度も使用していない開発者がいる場合は、
もう一度私の質問を正当化します(「自分のゲームを作って、あなたが必要とする構造を見ている人は聞こえるかもしれませんが」...)Game Engine Architectureは私にとって素晴らしいリソースでした。著者は、 "ちょっと、これは業界が主にしていることです"と言っても構わないと思います。そして、誰かが「経験を再利用する」ことができ、「この構造について考える」と言えば、ゲームのヒープ全体を書いて、有用なものを見つけ出すのに多くの時間を節約できます。
このパーティーに少し遅れましたが、カスタムアロケータを「必要なときに」開発することは、ゲームエンジンの非常に高価な命題になります。パフォーマンスのために開発サイクルが終わってしまうまでは、通常は「必要」ではありません。その時間までに、エンジンの大部分をリファクタリングして、それらを最も効果的に使用する必要があります。また、大量のオブジェクトを持つリアルタイムゲームを開発していて、デスクトップPCプラットフォーム以外のものをターゲットにすることを検討しているなら、長期的にそれらを必要とすることはほとんど間違いありません。もし可能ならば – Gerald