2016-05-06 5 views
-2

私のゲームは巨大な世界であり、最終的には無限大になります。 と私はすべてのゲームオブジェクトをマップの正方形のセクションに保存します。これは、プレイヤーがそのエリアにいるときだけオブジェクトをチェック/レンダーすることです。 私の目的に適したデータ構造ソリューションは何でしょうか? (ハッシュセットの3次元配列リスト)

私が「3D」hashsetsarraylist、「行」である第1のリスト、「列」とhashsetsのすべての異なるタイプのためのリストである第3のリストである第2のリストを使用していますこれを達成するために異なるゲームオブジェクト。

私はもともと、ハッシュセットがジェネリッククラスである2dのarraylistしか持っていなかったので、正しい順序でオブジェクトをレンダー/ティックするために、instanceofとし、それをそれぞれの一時リストに追加しました。これは非常に遅かったです。

私は、多次元のリストが欲求不満であると聞いてきました。このすべてを達成するには、よりよい方法はありますか?木など?彼らはサイズが大きくなる必要があるので、私は通常の配列を使用することはできません。

+0

私はあなたの要件を十分に理解していませんが、おそらくそれは配列のgrifを使用するのに役立ちますか?現在の配列では不十分な場合は、その隣に別の配列を追加します。 (リストのような)いくつかの拡張可能な外部構造のすべてのarayを管理します。編集:考えて、 'ArrayList'あなたを助けるかもしれない。自動的に拡大し、内部的に配列を使用します。 –

+0

私は何らかの並べ替えや 'ArrayList'を言っていますが、ゲーム/あなたが必要とするものについてもっと知ることなく、本当にあなたに品質のアドバイスを与える方法はありません。 – Turtle

+0

@Turtleゲームについてもっと必要なことはありません。プレーヤがその中にいるときだけレンダリングが必要なマップのセクション、つまり多次元リスト。特定のものが互いにレンダリングする必要があるので、セクションの「ただ1つ」の「HashSet」を持つことはできません(タイルは他のものの前にレンダリングする必要があります)。私は、ハッシュセットの3次元配列のリストがあまりにも単純すぎて、別のデータ構造でより簡単に達成できる何かのために複雑すぎると思っています。 –

答えて

1

あなたはプレイヤーの現在の位置でそれらのセットにアクセスする必要があるように聞こえます。

効率的な方法は、多次元マップを使用することだと思います。多次元地図の優れた実装方法は、GoogleのGuava Tableです。それを探してください。

関連する問題