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

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

3
ランダムマップ生成
Javaで2DタイルマップRPGゲームを開始/開始しました。ランダムマップ生成を実装したいです。さまざまなタイル(汚れ/砂/石/草/砂利など)のリストと水タイルおよびパスタイルがあります。問題は、マップをランダムに生成し始める場所がわからないことです。 地形セクションが必要になります(その一部は砂、土などです)。Minecraftでさまざまなバイオームがあり、それらが互いにシームレスに変換される場所と同様です。最後に、これにランダムなパスを追加する必要があります。また、マップ全体で異なる方向に進みます。 私は誰にも私にすべてのコードや何かを書くように頼んでいるのではなく、ただ正しい方向に私をpしてください。 tl; dr-バイオーム、パスを含むタイルマップを生成し、バイオームがシームレスに相互に入るようにします。
63 tiles  maps  tilemap 

6
スプライトタイルが適切に機能するかどうかをすばやく確認するにはどうすればよいですか?
私はうまくタイルを張るタイルマップスプライトを作成しようとしていますが、タイルがどれだけうまく並べられるかを確認するのは本当に面倒です。 理想的には、このようなレイアウトを表示するイメージエディターが欲しいので、手動で確認することなくタイルがうまく表示されるかどうかを確認できます。 [img] [img][img][img] [img] どのプログラムがこれを行うことができますか、またはどのようにしてこれを簡単にすることができますか?


3
マップ生成のランダムシード関数?
マップの視覚的境界が(マップを通過することで)変化するときに、ランダムなタイルベースのマップを生成する関数を探しています。マップを無限に大きくし、迷路のような構造にする必要があります。 ただし、世界が無限である場合、プレイヤーが以前にいた場所に戻ると問題が発生します。ゲームは、そこにあるすべてのものが実際にどのように見えるかを覚えていなければなりません。 だから、私は考えていました-「Minecraftはこの問題をどのように解決するのですか?」そして、シードを持つ何らかの乱数関数を使用する必要があると思いました。それは前方にも後方にも進むことができ、そのようにして、古いインスタンスを正確に、しかし新しいインスタンスで再生成します。 これについてどう思いますか?

2
接続されたパスを持つ手続き型2Dマップのアルゴリズム
解決すべき問題:すべての部屋が接続されているタイルベースのゲームのランダムな2Dダンジョンマップを生成します。 現在のソリューションよりも優れたソリューションを探しています。 私の現在の解決策は、2つのアルゴリズムを実行することです。最初の部屋ではダンジョンを生成します。2番目は、すべての部屋が接続されていることを確認します。私は他の解決策が存在するかもしれないと思っています。より高速および/または簡単など。速度は実際には問題ではありませんが、実際のコストをかけずに速度を上げることができれば、それは良いことです。さらに重要なことは、私と他の読者は、問題にアプローチして解決するさまざまな方法を学ぶことができるということです。 以下は私の現在の実装です。現在、部屋には出口がないか、2、3、または4方向に出口があります。 ダンジョンルームの生成 セットアップ:現在の部屋を左上の部屋に設定します。 部屋の有効な部屋タイプを取得します(有効な部屋タイプとは、ダンジョンの出口がなく、上の部屋と左の部屋の出口に一致する出口があるタイプです。以下の手順2のために残されました)。 部屋を置いて、x座標を1ステップ進めます。X座標がダンジョンの幅を超える場合、X座標を0に設定し、Y座標を1ステップ進めます。y座標がダンジョンの高さを超えている場合、完了です。 #1から繰り返します。 次に、すべての部屋が接続されているかどうかを確認します。すべてが接続されていない場合は、2番目のアルゴリズムを実行します。接続されるまで。 すべての部屋が接続されているかどうかを確認する セットアップ:パスを表す整数の2Dマップを作成し、エントリを「未処理」(まだ通過していない)-1に初期化します。現在のパスを追跡する開始パスインデックス整数を1に設定します。チェックする部屋のスタックに追加することにより、現在の部屋を左上の部屋に設定します。 スタックにチェックするルームが含まれる場合、ポップしてルームのパスインデックスを現在のパスインデックスに設定します。スタックに部屋が含まれていない場合は、パスインデックスを増やし、まだ処理されていない部屋を取得するまで、列ごと、行ごとに進めて部屋を取得してください。部屋が見つからない場合は、完了です。 部屋の左側に出口があるかどうかを確認します。まだそこにない場合、スタックに左の部屋を追加している場合。 下方向、右方向、および上方向について手順2を繰り返します(部屋を上方向から時計回りに移動するスタックを使用しているため)。 手順1から繰り返します。 パスインデックスのカウントが1より大きい場合、接続されていない部屋があります。 接続されていない部屋がある場合は、パスインデックスで部屋をグループ化し、最大のパスのインデックスを取得し、他のすべての部屋をそれらの部屋に接続します。これは進行中の作業ですが、私の(現在の、「強烈な」)計画は、部屋グループ(最初の部屋を除く)の各部屋を通過して、biggeset部屋グループへの水平または垂直パスがあるかどうかを確認することです。その場合、間に部屋を挿入/更新することにより、そこに水平/垂直パスを作成します。すすぎ、繰り返します。glyい、はい、しかしそれは視覚的なパターンの点で目立たないものなので、その意味で機能します。

3
チームはソースファイルの上書きをどのように防止しますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 4年前に閉鎖されました。 たとえば、ゲームエンジンなどが複数の人によって同時に処理されているときに、上書きをどのように防ぐことができるのか、ということが起こりました。 開発者1が作業してAudio.cppおり、開発者2も作業をしているとしましょう。Audio.cppこれは、一般的に大規模なチームで上書きに対処するためにどのように管理されていますか?(つまり、開発者2がファイルを開くのを停止して、開発者1が終了するまで)
26 project-management  version-control  teamwork  java  2d  collision-detection  vector  collision-resolution  unity  directx  directx11  directx10  xna  ios  monogame  windows-phone-8  xamarin  design-patterns  oop  xna  collision-detection  collision-resolution  bounding-boxes  rotation  collision-detection  mathematics  javascript  algorithm  separating-axis-theorem  xna  2d  monogame  image  xna  directx  graphics  performance  opengl  2d  3d  c++  directx11  unity  c#  scale  c#  xna  collision-detection  collision-resolution  leaderboards  scoring  glsl  srgb  tilemap  three.js  tiled  unity  physics  xml  dialog-tree  xna  c#  .net  opengl  lwjgl  vbo  physics  graphics  procedural-generation  simulations  water  opengl  java  textures  lwjgl  frame-buffer  unity  unity  2d  collision-detection  collision-resolution  trigonometry  java  android  libgdx  xna  c#  frame-rate  c++  unreal-4  procedural-generation  java  graphics  lwjgl  slick  c++  software-engineering 

4
タイルマップの生成
私はタイルベースのゲームをプログラミングしており、いくつかの基本的なタイル(草、汚れなど)を持っていますが、タイルが本当にランダムに選択された場合、草/汚れでなければなりません、私はこれを取得します: 私はこれがなぜ起こっているのか理解していますが、私が望むのは、草や土のランダムな連続領域を作成することです。次のような、より意味のあるもの:

3
タイルエンジンでランダムな「世界」を作成するにはどうすればよいですか?
クラシックタイルエンジンで動作するゲームを設計していますが、その世界はランダムに生成されます。これを行う既存のゲームやアルゴリズムはありますか?私が見つけた手続き生成アルゴリズムは、タイルシステムを使用することはありません...タイルシステムを使用して「世界」全体を生成する最良の方法は何でしょうか。私はブロックの迷路についてではなく、全体的な「世界地図」について話している

3
マップ座標系のベストプラクティス
ゲームマップの座標系に関する慣習や既知の方法はありますか?通常、原点はマップの中央に配置されていますか?それとも、コーナーに住んでいて、マップは3D空間の1つのオクタントに構築されていますか?

6
シームレスなタイルマップレンダリング(境界のない隣接画像)
タイルセットイメージからタイルを描画してタイルマップを描画する2Dゲームエンジンがあります。デフォルトでは、OpenGLはテクスチャのGL_REPEAT一部()ではなくテクスチャ全体のみをラップできるため、各タイルは個別のテクスチャに分割されます。次に、同じタイルの領域が互いに隣接してレンダリングされます。意図したとおりに動作しているときの外観は次のとおりです。 ただし、分数スケーリングを導入するとすぐに、継ぎ目が表示されます。 なぜこれが起こるのですか?これは、四角形の境界線をブレンドする線形フィルタリングによるものだと思いましたが、それでもポイントフィルタリングでは発生します。私がこれまでに見つけた唯一の解決策は、すべての位置決めとスケーリングが整数値でのみ発生するようにし、ポイントフィルタリングを使用することです。これにより、ゲームの視覚的品質が低下する可能性があります(特に、サブピクセルの配置が機能しなくなるため、動きがそれほど滑らかになりません)。 私が試した/考えたこと: アンチエイリアスは、継ぎ目を減らしますが、完全に排除しません ミップマッピングをオフにしても効果はありません 各タイルを個別にレンダリングし、1ピクセルずつエッジを押し出します-しかし、これは最適化されていません。タイルの領域を一度にレンダリングできなくなり、透明領域のエッジに沿って他のアーティファクトを作成するためです。 ソース画像の周囲に1pxの境界線を追加し、最後のピクセルを繰り返します-しかし、それらは2のべき乗ではなくなり、NPOTサポートのないシステムとの互換性の問題を引き起こします タイル化された画像を処理するためのカスタムシェーダーを記述しますが、それではどうしますか?GL_REPEAT境界で画像の反対側からピクセルをつかみ、透明度を選択しないでください。 ジオメトリは正確に隣接しているため、浮動小数点の丸め誤差はありません。 フラグメントシェーダーが同じ色を返すようにハードコーディングされている場合、縫い目は消えます。 テクスチャに設定されている場合GL_CLAMPの代わりにGL_REPEAT、継ぎ目が消え(レンダリングが間違っているが)。 テクスチャがに設​​定されているGL_MIRRORED_REPEAT場合、縫い目は消えます(ただし、レンダリングは再び間違っています)。 背景を赤にしても、縫い目は白のままです。これは、透明ではなく、どこかから不透明な白をサンプリングしていることを示唆しています。 そのため、シームGL_REPEATは設定されている場合にのみ表示されます。このモードでのみ何らかの理由で、ジオメトリの端にブリード/漏れ/透明度があります。それはどうですか?テクスチャ全体が不透明です。

1
Unity 2017.2タイルマップのサイズ制限は何ですか?
Unity 2017.2のタイルマップ機能に関するドキュメントを掘り下げてきました。 Unityは、特定のタイルマップメッシュでサポートするタイルの最大数を制限していますか? 各タイルは1回インスタンス化され、実行時にTilemapメッシュのクワッドをテクスチャリングするために使用されることを知っているので、メッシュクワッドカウントの制限は最終的にハードウェアに依存し、多かれ少なかれ任意に高くなると思います。 それは正しい仮定ですか、それともエンジンにハードキャップがありますか?
17 unity  2d  tilemap 

3
XNAでは、大きな2D世界地図の一部を動的に読み込むにはどうすればよいですか?
巨大な世界地図を作りたい。少なくとも8000×6000ピクセルのサイズ。私はそれを800×600ピクセルのPNG画像の10×10グリッドに分割しました。すべてをメモリにロードしないようにするには、グリッド内のプレーヤーの位置に応じて画像をロードおよびアンロードする必要があります。 たとえば、位置のプレーヤーは(3,3)次のとおりです。 彼がに向かって右に移動すると、左端(4,3)の3つの画像の割り当てが解除され、右の3つの画像の割り当てが解除されます。 おそらく、グリッドの各セル内に、ロードとアンロードをトリガーするしきい値があるはずです。ロードはおそらく別のスレッドで行われるはずです。 そのようなシステムをどのように設計しますか?

1
2Dタイルマップで「ビジョンコーン」を計算する効率的な方法は?
特定のユニットがタイルマップ上の特定の方向を向いている場合(特定の範囲と向きの角度内)に、どのタイルが「見える」かを計算しようとしています。最も簡単な方法は、一定数のタイルを外側に描画し、各タイルにレイキャストすることです。ただし、もう少し効率的なものを望んでいます。写真は千の言葉を言う: 赤い点はユニット(上向き)です。私の目標は、黄色のタイルを計算することです。緑のブロックは壁です(壁はタイルの間にあり、2つのタイルの間を通過できるかどうかを簡単に確認できます)。青い線は、私が話していた「レイキャスティング」方法のようなものを表していますが、これを行う必要はありません。 編集:ユニットは北/南/東/西(0、90、180、または270度)にのみ向くことができ、FoVは常に90度です。一部の計算を簡素化する必要があります。ある種の再帰的/スタックベース/キューベースのアルゴリズムがあると考えていますが、それを理解することはできません。 ありがとう!
13 2d  algorithm  tilemap 


2
多くの小さなコライダーを大きなものに結合する
私は何千ものグリッドの正方形で作られたタイルマップを使用してゲームを作成しています。現時点では、各正方形には衝突をチェックするための正方形コライダーがあります。 しかし、何千もの小さなブロックがある場合、それらすべての衝突をチェックするのは非効率的です。タイルマップが事前にこのように見えることを事前に知っていた場合、数千の小さなコライダーではなく、3つまたは4つの大きなコライダーを使用できたはずです。 多くの小さな隣接するタイルを最大限に大きなタイルに結合するための何らかの標準的なアルゴリズムはありますか?もしそうなら、誰かがそれをここで説明したり、そのようなアルゴリズムに関する文献を指すことができますか? あるいは、この方法でタイルコライダーを前処理することは、完全に間違ったアプローチかもしれません。もしそうなら、非常に多くのコライダーの効率に対処するための正しいものは何ですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.