0

私は現在、javascript に基づくマップ ジェネレーター アプリケーションに取り組んでおり、六角形のマップを作成し、タイルに座標を追加し、草や海などのタイルにテクスチャを追加し、城やユニットなどの要素にテクスチャを追加する 400 行以上のコードを書きました。 .

このオフライン マップ エディターには、ズームインとズームアウト、グリッドのオン/オフ、マップのドラッグなど、かなりの便利な機能が追加されており、現在、保存と読み込みの機能を追加する方法を研究しています。このオフライン ゲーム マップ エディターに。

ペイント アプリケーションのように見えますが、ピクセルを描画する代わりに、16 進タイルでマップを描画するために使用します。[新しいマップを生成] をクリックするだけで、目的のマップ サイズ (例: 幅 64 タイル、高さ 64 タイル) を指定すると、マップが描画されます。タイルは、相対的な背景画像をテクスチャとして持つシンプルな div です。タイルは単純な for ループを使用して 1 つずつ描画されます。しかし、コードのサイズが大きくなるにつれて、私の心配も大きくなります。

自作のマップエディタで作成したマップをオンラインマルチプレイヤーゲームで使用するので、巨大になります!たとえば、今後のゲームで少なくとも 20000 人のユーザーをサポートするには、少なくとも 20000 のタイルが必要です。ユーザーが占有するためだけに、彼らが所有する領土、山、ジャングル、野蛮な部族などは言うまでもありません..

計算を行ったところ、512 x 512 (約 262000 タイル) のマップで、多くのユーザーのニーズに十分に応えられることがわかりました。ただし、マップは巨大になります。そこで、可能な限り最小限のプロセスで作成したコードを使用して、そのようなマップを作成するのにどれくらいのロード時間がかかるかをテストして確認することにしました。ゲーマー視点。

たとえば、このような巨大なマップでズームインすると、262000 個のタイルごとにループしてサイズを変更することになります。このプロセスは、マップを最初から描画/ロードするよりも時間がかかりませんが、それでも遅い.

ブラウザのウィンドウにも収まらないほど巨大なマップを考えていたのですが、なぜマップ全体を描画する必要があるのでしょうか? 代わりに、ユーザーが現在見ている部分をロードしないでください。必要な部分のみをロード/描画することで、ロード時間を短縮し、パフォーマンスを向上させます。しかし、これは実際の課題であることが証明されており、そのような機能の実装に関するオンライン リソースは非常に限られています。どこから始めれば?問題とそれぞれの解決策にどのようにアプローチしますか?

4

1 に答える 1

1

私はあなたの懸念をもう少し分離することから始めます. WxH のピクセル数を表示でき、ユーザーの画面の左上は (x,y) 座標にあります。あなたが指摘したように、マップ全体をロードするのはクレイジーです。しかし、ゲームの世界の大きさと、その世界でのユーザーの座標がわかれば、表示されているアイテムのサブセットを簡単に選択できます。ズームアウトした解像度では、フルサイズの画像を使用しないでください。262000 枚の画像 (マップだけで!) を読み込むと負荷がかかりすぎて、クラッシュする可能性があります。ズーム レベルごとに異なる画像が必要です。これはより大きな問題であり、本を購入して Google でさらに調査を行う必要があります。しかし、少なくとも「ユーザーがどこにいるか」と「世界のアイテムがどこにあるか」についての考え方 私が始める場所です。それが役立つことを願っています。

于 2013-05-31T18:02:08.577 に答える