タグ付けされた質問 「tilemap」

タイルマップは、小さなグラフィックピース、タイルを何度も再利用して、ゲームフィールドを形成する手法です。

0
OpenFLを使用したSceneManagerの実装
OpenFLとHaxeを使用して基本的なSceneManagerを実装しようとしています。OpenFLとHaxeの使用経験はあまりないので、いくつか問題があります。 以下は、SceneManagerクラスの設計方法です。 package; import openfl.display.Sprite; import openfl.Lib; class SceneManager extends Sprite { private var currentScene: ...; public function new(rootScene: ...) { super(); currentScene = rootScene; Lib.current.addChild(currentScene); } public function changeScene(newScene: ...): Void { Lib.current.removeChild(currentScene); currentScene = newScene; Lib.current.addChild(SceneTwo); } } 「...」は、どのシーンでも保持できる一般的な「クラス」タイプに置き換える必要があります。 誰かがこれを解決するのを手伝ってくれるなら、私は本当に感謝するでしょう。

1
RPG Maker Auto Tilingの実装
私は現在Phaserと協力して、手続き的に生成されるゲームを作成しています。ゲームでRPGメーカーアートを使用したかった(参考として、RTPを使用している)。私はこの記事を偶然見つけました。自動タイルがどのように機能するかを分析しました。自動タイルについて説明している別の記事にリンクしているこの回答も偶然見つけました。 ここにあること、私はこのようなものをどのように実装するかわかりません。どのタイルセットが他のどのタイルセットに接続できるかを追跡する必要があると確信しています(つまり、一部のタイルは外側に草があり、内側に砂があります。そのため、この例では、「草"タイルは外側のタイルでした)。 私はマップジェネレーター(ここを参照)を作成しましたが、タイル領域間をシームレスに接続したいと考えました。たとえば、茶色の領域は「密な」領域(森、洞窟など)になります。紫色の領域は石の床で、緑色の領域は草です。このようなものに非常にうまく機能するタイルセットがあります: それで、左上の草と、草に接続する3番目のタイルセットである石を使用します。 これらの種類のタイルセットを使用して自動タイリングを実装する場合、どのようなことを考慮する必要がありますか?実装するために確認できるアルゴリズムはありますか?

4
タイルの間にある壁を保管する
私はc ++でアイソメトリックエンジンを書いています。次の図に示すように、より現実的なアプローチを採用し、壁を1つのタイル全体ではなく2つのタイルの間のスペースに配置することにしました(シムズの場合と同様)。 私の問題は、タイルマップ関連のデータをグリッドではないものに保存する方法がわからないことです。この状況では、それをA *フレンドリーにする必要があると思うので、壁で分割されていないタイル間にノードとエッジがあります。ここに私が達成したいことを示す別の写真があります: だからここに質問があります: どうすればよいですか: タイルと壁の両方のマップ全体を保存する レンダリング用に最適化する A *やその他のアルゴリズムに使用して、単純なグリッドに実装するのはかなり簡単ですが、壁(エッジ)を使用して可視性や衝突などを決定しますか?
8 tiles  tilemap  grid 

3
タイルベースのマップに収まるが、複数のタイルにまたがる遠近法でオブジェクトを作成するにはどうすればよいですか?
私はタイルマップ都市を作成し、ユニークな建築シーンを作成する最も効率的な方法を見つけようとしています。コツは、2Dのような、ほぼ真上から見下ろしたパースペクティブを維持する必要があることです。これは、複数のタイルにまたがる建物や大きなオブジェクトでは困難です。 私は一度に3つの建物を作成して、次のようにベースレイヤーと色を混ぜ合わせてみました。 これは奇妙なオーバーラップ効果を生み出し、また、制作の観点からはそれほど効率的ではないようです。しかし、これは隣接する建物に影を正しく表示するための最良の方法でした。 モジュール式の建物が行く方法になるのだろうか?このようにして、任意の建物のセットをタイルとして組み合わせて組み合わせることができます。 建物を正しく配置するために、遠近法や影を付ける必要があると思います。 複数のタイルに相当する画面スペースにまたがっている間、このパースペクティブを維持するさまざまな建物(または他のオブジェクト)を作成できるようにするには、どのようなオーサリングプロセスを使用できますか?空白の建物を作成し、建物をユニークにするために必要に応じてアートオーバーレイを貼り付けることをお勧めしますか?または、それらを直接建物タイルの一部にする必要がありますか(たとえば、建物の看板と色の個別のタイルセットを作成します)?
8 tiles  tilemap  rpg  art 

1
OpenGLで頂点を描画する最も効率的な方法
私はOpenGL 3Dゲームを書いています。地形や使用中のオブジェクト用の多数の三角形があります。 私はOpenGL公式ガイドから勉強していて、最初に提示された方法は、描画したい各頂点のglVertex後に関数を呼び出すglBeginことです。 ただし、何千もの三角形を描く必要がある場合、この方法はかなり古くて非効率的です。各フレームで変化しない情報をグラフィックカードのメモリに保存する方法があるので、各フレームをレンダリングすると、その情報はすでにそこにあります。より「不安定な」情報については、おそらくフレームごとに新しい頂点データを送信する必要があるため、別の手法の方が効率的かもしれません。 私の質問に来ます:頂点情報をハードウェアに送信し、レンダリングするための指示を与えるために使用される最も近代的で効率的なOpenGL関数と技術の明確な説明をお願いします。 フレーム中にめったに変化しない頂点データをレンダリングするための順序を送信するための最良の方法とOpenGLツールは何ですか(私は地形とオブジェクトについて考えます)、フレーム中に大きく変化する頂点データを送信するための最良の方法は何ですか?

3
サーバーがタイルベースの領域のみをクライアントに送信することは可能ですか?
はじめに、私はネットワーキング(ハードウェア、ルーターなど)については十分な知識を持っていますが、ネットワークプログラミングの基本的な知識はほとんどありません。これは馬鹿げた質問のように思えるかもしれませんが、自分のゲームでのマルチプレイヤーの実装を理解しながら、自分が何に興味を持っているのかを知りたいのです。 シンプルな2D配列によって生成されるタイルベースの世界を作成しています。簡単にするために、World [100] [100]のようなものを考えてみましょう。 現在、renderメソッドは、ウィンドウの解像度と1つのタイル(移動中のスムーズなレンダリング用)に基づいてタイルのみをレンダリングします。世界がどれほど大きい場合でも(10x10、1million x 1million)、レンダリングのパフォーマンスは完璧です。 ゲームプレイでは、現在表示されているもの(画面+1にレンダリングされたもの)と、おそらくプレーヤーの周囲の領域にあるタイルのいくつかの情報を知るだけです。 したがって、サーバーから送信されるものはすべて、完全なタイル情報にはなりません。例 地面、地面のタイプ、木などの上に置かれるアイテムは、プレーヤーの視野の外側の領域では重要ではなく、クライアント/プレーヤーがそれらのタイルについて知っておく必要があることだけです。(例:プレーヤー[キャラクターまたはプレーヤー]がレンダリングビューのタイルを超えていることをプレーヤーが知ることができるUltima Onlineの「着信名」。) 私はネットワーキングについてあまり知らないので、おそらくこれを知って、これが私の質問に答えるかもしれません。しかし、これが実現可能な解決策なのか、あるいはアイデアが単に笑えるものなのか、私は興味があります。 送信される情報は、タイルの約10x15の領域であり、各タイルはタイルの内容に関する情報を保持します。より効率的には、すべてがオブジェクトであり、タイルはタイル上のすべてのオブジェクトを保持します。例 Tile [4] [4]は、Sword#23452、Rock2、Tree5、Player3、Monster4を保持します。 初期化/ロード中にまだロードされていない場合、空のタイルは地形タイプ[草、砂、水]のみを送信します。一部のタイルには、少数のオブジェクトがあります[Tree2、Sword#924、Gold、Corpse、Rock3]。 したがって、クライアントが主にロードする必要のあるテクスチャとそれを画面に配置するために配置する必要があるため、タイルがサーバーからクライアントに送信する情報が非常に多いとは思えません。クライアントにレンダリングするように指示するファイルのリストでは、位置は2つの整数のみであり、テクスチャは1つの整数です。 最悪の場合、サーバーは150個のタイルに少数のオブジェクトOnLOADの情報のみを送信し、それ以降は更新によってタイル(存在する場合)と新しいタイル(プレーヤーが方向に移動するたびに10から15)への変更のみを送信します。 )と画面上のキャラクターの移動方向(クライアントがタイル間のスムーズな移動をシミュレートできるようにするため)。 これはインターネットまたはピア間で送信される信じられないほどの量の情報であると私は思っているので、私は正しいと思います。それとも、ネットワーキングについてあまり知らないので、ようやくマルチプレーヤーネットワーキングに関する本を開くことに取り掛かったとき、私の心は打たれるでしょうか。 クライアント/サーバー間で送信される情報の量が非常に少ない場合、初期化時に全世界を単にロードする方が理にかなっていますか?または、世界が大きすぎる場合は「マップ」。そして、LOADの後、更新されたタイルのみを送信しますか? どうすれば具体的なデータの扱い方を考えているのか。私が参照として使用している本では、オブジェクトを追加および削除するリンクリストが必要なので、すべてがboolです。「キャラクターはいる?木はある?」 オブジェクトを保持するコンテナーや、レンダリングするものをクライアントに伝えるために必要なものだけを送信するサーバーロジックなど、別のアプローチを考えていました。おそらくそれ自体の内部にネットワーク情報を保持するオブジェクトがあり、サーバーから呼び出されたときに送信されます。

3
単一のタイル画像よりも大きい等角図の描画順序-描画順序アルゴリズム?
さまざまな画像を配置するアイソメマップがあります。ほとんどの画像は単一のタイルに収まりますが、一部の画像はわずかに大きくなります。たとえば、2x3タイルのサイズのベッドがあります。 これにより、一部のタイルが他のタイルと誤って重なるため、オブジェクトを画面に描画するときに問題が発生します。 私が知っている2つの解決策は、画像を1x1タイルセグメントに分割するか、たとえば各画像に番号を割り当てることによって、独自の描画順序アルゴリズムを実装することです。番号1の画像が最初に描画され、次に2、3などが描画されます。 誰か私が何をすべきかについてのアドバイスはありますか? アイソメトリック画像を分割することは非常に明白ではないように思えます。画像のどの部分が特定のタイルに含まれるかをどのように決定しますか?すべての画像を手動で分割する余裕もありません。 描画順序アルゴリズムはより良い選択のように見えますが、実装が簡単になるかどうかはわかりません。私は頭の中で、1つの画像のインデックスを変更する状況に対処する方法を解決できません。誰かがこれについてのリソース/チュートリアルを持っているなら、私は最も感謝します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.