2011-04-28 13 views
4

私は現在、ゲームエンジン用のメモリ割り当てシステムをコーディングしています。アロケータ構造が有用であることについて助言を与えることができる経験豊富な開発者がいれば、私は疑問に思っていました。ゲームエンジンのアロケータ

私はいくつかの人々に少し心配していると思うので、少し私の立場を正当化する必要があると思います。私は答えherehere(そして彼らがhereherehereを指しているブログ)を読んだ。しかし、私は「ゲームを最初から何度もやり直してみてください。そして、あなたが再利用するコードはあなたの「エンジン」なのです。それは本当に私のためには役に立たないのです。私は何度も何度も何度も何度も何度もやっていたことで、実際に私のコードをうまく再利用していなかったことに気がつきました。

私はこれらのことを私が何度も何度も何度も繰り返し使用しているとコード化することに決めました。一度やり直してください。

私は本当に自分のリーグから出てきたので、いくつかの本を買った。 Jason Gregory(GEA)のGame Engine Architectureは本当に素晴らしいですが、私はGame Coding Complete(McShaffry)とProgramming Game AI by Example(Buckland)も持っています。 GEAには、高性能アロケータについての良いアイデアがあります。本当に興味がありますので、私はそれをやり遂げると思っていました。

私はスタックベースのアロケータをコーディングしており、プールベースのアロケータはほぼ完成しました。両方とも、メモリアライメント可能な容量を有し、異なるメモリバジェットで動作するように割り当てることができる(すなわち、アロケータは、例えば、「小売」メモリまたは「開発」メモリなどを使用することができる)。私はプログラミングスキル/関心レベルの点でこれらのコンポーネントを作成するだけで有益なことを発見しました。

ゲーム開発で役に立つか、定期的に登場する他のアロケータ構造をお勧めしたい開発者がいるのでしょうか? ?または、自分のキャリア全体で他のことを一度も使用していない開発者がいる場合は、

もう一度私の質問を正当化します(「自分のゲームを作って、あなたが必要とする構造を見ている人は聞こえるかもしれませんが」...)Game Engine Architectureは私にとって素晴らしいリソースでした。著者は、 "ちょっと、これは業界が主にしていることです"と言っても構わないと思います。そして、誰かが「経験を再利用する」ことができ、「この構造について考える」と言えば、ゲームのヒープ全体を書いて、有用なものを見つけ出すのに多くの時間を節約できます。

答えて

0

まあ、正直言って、私が最もよく使ってきたのは、短命オブジェクトの場合はPool<T>で、C++のデフォルトのアロケータの代わりにあらかじめ割り当てられたヒープです。

もう一度、必要なときに必要なものをに作成してください。

+4

このパーティーに少し遅れましたが、カスタムアロケータを「必要なときに」開発することは、ゲームエンジンの非常に高価な命題になります。パフォーマンスのために開発サイクルが終わってしまうまでは、通常は「必要」ではありません。その時間までに、エンジンの大部分をリファクタリングして、それらを最も効果的に使用する必要があります。また、大量のオブジェクトを持つリアルタイムゲームを開発していて、デスクトップPCプラットフォーム以外のものをターゲットにすることを検討しているなら、長期的にそれらを必要とすることはほとんど間違いありません。もし可能ならば – Gerald

2

真剣に言えば、ゲームを書く上で最も大きな障害は、まずあらゆる種類の派手な図書館コードを設計する必要があると考えていることです。ほとんどのゲームでは、他のタイプのアプリケーションよりもずっと少ない種類のこの種のものが必要です。ゲームは、ほとんど常にデverlopersによって決定され、プレイヤーのアクション(このルールの唯一の例外である大規模なマルチプレイヤーゲーム)によってわずかに影響を受ける非常に有限の数のデータ/オブジェクトを処理します。したがって、静的あなたが少し夢中ならば、すべてのデータのための配列。

標準ライブラリが壊れているPlayStationやその他のコンソールジャンク用に開発しているのでなければ、独自のアロケータを書くことについて考えるべきではありません。ゲーム開発とは完全に直交し、あなたの時間を無駄にします。これは2011年ではなく1992年です。あなたは自分のデータのキャッシュと廃棄を管理しなければならない2〜4MBのRAMを備えたDOSシステムを扱っていません。仮想メモリシステムがあなたのために仕事をし、オペレーティングシステムの半分ではなく、ゲームを作るためにあなたの時間を費やすようにしましょう。

+1

+100。再利用可能なコード/エンジンのトンを書くことは素晴らしいです(私の2002年以来そこにされています)が、あなた自身のメモリアロケータを書くよりも多くのものが重要です。 – ggambett

+1

2を使用する1992年からいくつかのアーケードゲームを開発していない限り-4MBのRAMこの答えは完全にオフベースです –

+0

@MartinKällman:あなたはそれを考える理由を詳述しますか? –

関連する問題