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

物理的特徴を示す地理的領域の視覚的表現。

3
2Dトップダウンマップ:正規化かどうか?
私はゲームプログラミングの初心者ですが、この質問の定式化が不十分な場合、私の側のだらしさではなく、ゲームプログラミングの経験の欠如であることに注意してください。 私がコーディングする予定のゲームでは、トップダウンの2Dマップを「世界」として使用します。ワールドはウィンドウよりも大きくなる場合があり(ウィンドウはズームインまたはズームアウトできます)、車両はワールドの任意のポイントに配置できます(=タイルマップではなく、空間は「連続的」です)。 例で明確にするために:世界が1000x1000メートルの地形である場合、車両は(327.31、720.4)メートルの位置にあります。 私の質問は、内部で世界を表す最も便利な方法は何ですか?私はこれらの可能性を考えることができました: 何もせず、対象物を扱っているかのようにメーターを使用します。 最大ズームで1000メートルを表すためのピクセル数として世界サイズを定義するピクセルに正規化し、 サイズ1の正方形として単語を定義する1に正規化する ...しかし、他にもあるかもしれないし、私の一部は意味をなさないかもしれないと確信しています。それは私の最初のゲームであって、私は自分の前にある問題の明確な写真を持っていないというだけのことです。合理的に正しい初期選択を行うためのガイダンスをお願いします。 お時間をいただきありがとうございます。
11 2d  maps 

3
惑星表面を2Dで表す
惑星の管理(都市、工場、道路などの建設)を行うゲームを作りたいのですが、3Dは避けたいです-欲しいのは2Dだけです。しかし、私が惑星の表面をグリッドとして表す場合、極の近くに移動するのは奇妙です(上に行くと、マップの下部ではなく上部に表示されます-別の場所にのみ表示されます)。地形を整えるのは難しい(極が伸びる)。それを行う方法について何かアイデアはありますか?
11 2d  maps 

3
3Dマップ上のRTS、たとえば地球儀
既存のアートワークとマップが単純な2Dグリッドである場合、3D地球をどのように「タイル化」できますか? アートワークなどの多くを再利用できるアプローチはありますか?
11 3d  maps 

2
タイルマップとユニット間の依存関係を管理する方法
作品には2Dタイルベースの戦略があります。マップとマップ上のユニットとの関係をどのように処理するか迷っています。 タイルの座標を考えると、もしあれば、その上にユニットを立てられるようにする必要があります。同時に、ユニットが指定されている場合、そのユニットの座標を取得できるようにしたいと思います。 これに対する2つの解決策を見てきました。最初の解決策は、ユニットに座標を格納させ、マップにユニット参照をタイルに格納させることです。これにより、マップとユニットの間に循環依存関係が作成されます。ユニットが移動した場合、マップと任意のユニットが同期していることを確認する必要があります。 2番目の解決策は、ユニットに座標のみを追跡させることです。タイルにユニットが含まれているかどうかを確認し、そのユニットを取得するには、ユニットユニットのセット全体をループして、座標が一致するユニットを見つけます。これは循環依存関係を解消しますが、最初のソリューションがマップからユニットを検索するために持っていたO(1)プロパティを失います。これは、経路の検索、移動範囲の決定、特定のユニットの有効なターゲットの検索などの目的で定期的にマップをスキャンできるようにしたい場合に加算されます。 また、ユニットをマップに格納することもできません(または格納できますか?)。ユニットは、プレーヤーまたはAIの「軍隊」に関連付けられています。軍は、そのすべてのユニットに簡単にアクセスして反復できる必要があります。 これは戦略ゲームでは一般的な問題のようですが、ユニット/マップの関係を管理するために説明した2つのパターン以外に他のパターンはありますか?
11 tiles  maps  character 

3
マップ全体の設計とタイル配列の設計
私は2D RPGに取り組んでいます。これは通常のダンジョン/タウンマップ(事前生成)をフィーチャーします。 私はタイルを使用しており、それを組み合わせてマップを作成します。私の当初の計画は、Photoshopまたは他のグラフィックプログラムを使用してタイルを組み立て、1つの大きな画像をマップとして使用できるようにすることでした。 ただし、配列を使用してエンジンでマップを構築する方法について人々が話している場所をいくつか読んだことがあります(そのため、xタイルの配列をエンジンに与え、それをマップとして組み立てます)。方法は理解できますが、実装がはるかに複雑になり、明確な利点がわかりません。 最も一般的な方法は何ですか、それぞれの長所/短所は何ですか?
10 tiles  maps 

2
「実際の単位」をピクセルにスケーリングする一般的なパターンは?
これは、これに対するもう1つの質問です。 描画領域(現在は800x600ピクセル)に合わせるために、世界の表現(現在は160Kmx160Km)をスケーリングするための一般的/典型的/最良のパターンがあるかどうかを知りたいです。 私は少なくとも4つの異なるアプローチを考えることができます。 ナイーブ(これまでのやり方)sc(vector)渡されたベクトルの縮小されたコピーを返すだけのグローバル関数を実装しました。もちろんこれは機能しますが、次のようなコードを書く必要があります。 drawCircle(sc(radius), sc(position)) ラッピング関数。私はいくつかの関数を定義でき、それぞれが元のミドルウェアの関数をラップしています。たとえば、myDrawCircle最初にスケーリングが必要な引数をスケーリングし、次にdrawCircle後者を呼び出すように定義できます。これにより、コードが読みやすくなり、メンテナンスが容易になりますが、馬鹿げているように思える多くのラッピング関数を作成する必要があります。 関数デコレータ。既存のミドルウェア関数を装飾して、クラスのインスタンス化であるすべてのパラメーターに自動スケーリングを提供することもできますVector3Dが、問題はこれらの関数も同じパラメーターで動作listするVector2Dことであり、デコレーターは知る方法がありません。スケーリングする必要があるリスト(半径など)とスケーリングしないリスト(RGB値)。 表面の初期化。描画する表面を定義するときに、倍率を定義できます(そのため、パラメーターとしてピクセルではなくメートルを使用します)。これは私にとって透過的に機能し、私の選択するソリューションになりますが、もちろんミドルウェアに実装する必要があるため、実際のオプションではありません。 ...とにかく、これは非常に一般的な問題なので、見つけられなかったこの問題をエレガントに解決する確立されたパターンがあるのだろうか。 PS:このプロジェクトではpython(pygameを使用)を使用していますが、python / pygame固有の回答は非常に高く評価されていますが、具体的な実装ではなく、パターンの一般的/高レベルの説明に興味があります。 あなたの時間と専門知識を事前にありがとう。

2
六角形グリッド上で六角形タイルの構造を回転させるにはどうすればよいですか?
私の2Dアイソメトリックゲームでは、六角形のグリッドマップを使用しています。下の画像を参照して、ピンクの六角形を中心に水色の六角形構造を60度回転するにはどうすればよいですか? 編集: 主なヘクスは(0,0)です。他のヘクスは子供であり、それらの数は固定されています。1つの位置(この場合はその右)のみを定義し、必要に応じて他の方向(左下、右下、右上、左上、左)を計算します。他のヘクスは、Package.Add(-1,0)、Package.Add(-2,0)などのように定義されています。 switch(Direction) { case DirRightDown: if(Number.Y % 2 && Point.X % 2) Number.X += 1; Number.Y += Point.X + Point.Y / 2; Number.X += Point.X / 2 - Point.Y / 1.5; break; } このコードNumberではメインのヘクスでPointあり、回転させたいヘクスですが、機能しません。

3
マインクラフトの世界の照明
Minecraftは主に高さマップに基づいており、そのheigtmap情報を使用して世界に光を当てるゲームです。私の理解から、ハイトマップの最高点は太陽光の影響を受けた領域の終わりです。その上にあるものはすべて日光に照らされ、その下にあるものはすべて、半径8ブロックの近くにある光の影響を受けます。 したがって、世界の最上部に浮島がある場合、その下にあるすべてのものは本質的に洞窟と見なされます。2つのライトが同じポイントに影響を与える場合、より明るいライトが優先されます(それについては不明です)。 どちらの方法でも、Minecraftsライティ​​ングモデルにはいくつかの問題があります。まず、世界にハイトマップがない場合、太陽光を放出するはずであるものとそうでないものを正確に把握するのが難しくなります。単純な方法は、世界が(私の場合)浮遊岩であると仮定し、各軸を両方向からトラバースし、岩の始点と終点を理解することです。しかし、岩のへこみが暗闇にあるはずがないので、これは問題を完全に排除しません。 Minecraft自体は、ブロックのマテリアルに関する情報と一緒に、チャンク内のライト情報をキャッシュします。したがって、世界が変更された場合にのみ、照明を更新する必要があります。残念ながら、そのプロセスは、更新やライトの迅速な変更では依然としてかなり遅く、照明の遅れが見られます。これは、多くのブロック(TNT、日没など)が変更され、最速のコンピューター(またはMac上のJava)を実行していない場合に特に当てはまります。 私の3Dグラフィックス照明についてのまだ限られた理解から、Minecraftのような世界は最大の問題ではないはずです。どのように問題に取り組みますか? ボクセルの世界での照明の基本的な要件は 単一フレームで発生する可能性があるほど速く更新します。グラフィックデバイスでライティングを行い、変更されたライト情報をメインRAMにダウンロードできる場合があります。 ライト情報はメインゲームロジックですぐに利用できる必要があるため、グラフィックデバイスに完全に基づいているわけではありません。 ライトの更新はチャンクに対してローカルであるか、他の制限がある必要があるため、サイズが非常に大きい可能性のある世界全体を再ライトする必要はありません。 主なアイデアは、ライトの更新を高速にすることです。必ずしもより美しくする必要はありません。一般的なライトレンダリングのパフォーマンスを向上させるために、SSAOを簡単に追加することができます。
10 opengl  maps  lighting 

2
大きなタイルマップ上のエリアとダンジョンを「ゾーニング」
私のゲームは、疑似無限でランダムに生成される方法で、Minecraftのようなマップを持っています。そして大きい。ユーザーが1000x1000ゾーン(ここでは2D)を探索したとすると、1,000,000タイルになります。 もちろん、すべてをメモリに保存することはできません。また、10タイルまたはすべての半径からすべてを無視したくありません。どちらも更新されず(すべてのNPC、おそらくリアクティブタイル)、1382、12918のような厄介な位置で作業する必要があります。 したがって、チャンクやゾーン、または64x64タイルなどに分割する場合、各タイルとオブジェクトの位置を次のように保存する必要があります。 チャンクa、b。位置x、y。 しかし、マップにダンジョンなどが必要な場合はどうなりますか?つまり、それぞれが40x40の面積を持つ40階のダンジョンにつながる単一のタイルです。それらを同じマップに正確に格納することはできません。 そして、記憶の側面があります。どのくらいの量を同時に合理的に同時にメモリに格納できますか?IDでタイルを簡単に作成でき、そこに通常の2D配列を配置できます。または、タイルタイプのデータファイルよりも効果的な解決策はありますか?したがって、64x64の場合は、20K程度になるでしょう。最も現実的な更新のために、できるだけ多くの環境が読み込まれるようにしたいと思います。しかし、私は、メモリの浪費になることなく、どのような制限に達することができるのかわかりません。

1
マップ上に手続き的に生成された2Dカーブ道路
自分が取り組んでいるゲームのロードマップを自動的に生成するアルゴリズムを試しています。 「Kingdom Rush」ゲームは見栄えのするマップがいくつかあるので、参照ポイントとして使用しています。 私は手続き型のコンテンツ生成に不慣れで、ここに誰かがポインタを持っているのではないかと思っていました。いくつかの入口/ソースノード、いくつかの内部ノード(分岐とマージ)、いくつかの出口シンクノードなどのランダムな道路トポロジを生成し、グラフレイアウトアルゴリズムを使用して、この情報に基づいて実際の道路地図を作成する実験をしました。 以下は、道路レイアウトにFruchterman-Reingoldアルゴリズムを使用した1つの例です。 青いグラフは、ランダムに生成されたベジェコントロールポイントを使用して、エッジの直線性を低下させています。 同じアルゴリズムを使用して生成された別の例ですが、乱数は異なります。 問題は、ほとんどの結果が非常によく似たものになってしまうことであり、手順で生成されたマップの制御性と多様性を改善するためにどのルールを追加できるかわかりません。 助言をいただければ幸いです。

5
類似したタイルが互いに隣り合って生成される可能性を高める
私はタイルマップシステムに取り組んでいます。これは、ここではこのように見えます(緑は草、空気は白、石は灰色、青は水です)。 単純な乱数ジェネレータを使用して、タイルが草である可能性が45%、水である可能性が30%、石である可能性が25%になるようにします。 とにかく、草/石のブロックが固まり、陸塊を形成する傾向を高め、ウォーターブロックを海に形成することができますか(Minecraftのようなゲームで見ることができるもののようなものですか)?
9 java  algorithm  tiles  maps  lwjgl 

2
.PNGタイルから.PNGマップ
110以上の.pngマップタイルを1:1のピクセル比のサイズのマップ.pngに簡単に取得するにはどうすればよいかと思っていました。私はグーグルなどをスクロールしてきました、そして私が修正しているフリーウェアゲームのフォーラムですが、使用しているアプリは.pngファイルのみを認識し、マップの1%以上を必要としています。皆さんがプログラムを知っているなら、私はとても感謝しています。
9 tiles  maps 

2
高所の暑い地域ではどのような環境が予想されますか?
私は、世界地図がランダムに生成される「探索」ゲームを作成しています。バイオームは、「温度マップ」、「湿度マップ」、および標高マップなどのデータを使用して生成されます。たとえば、コールド+湿度=スノー、ホット+湿度=ジャングルなど私が残している問題は、暑い気候の高所地帯に対処する。現時点では、「裸の」バイオーム(次の写真の灰色の領域)に設定されています。これは、「無人の乾燥した土地」を意味すると思われます。一方、気温が低い高所ゾーンは雪(白)に設定されていますが、これは問題ありません。それで、私は寒い気候の高いゾーンにどのように対処すべきですか?私はいくつかのアイデアを持っていますが、どれもうまくいかないと思います:1)雪にも設定しますが、変に感じます2)「裸」に設定しますが、私はしません

2
タイルマップを効率的に保存してWebに表示する方法
約 これらは実際には1つの2つの質問です。まず、大量のタイルデータを効率的に格納する方法を探しています。もう1つの側面は、データセットのクエリとタイルの表示を扱います。まず、背景を説明しましょう。 私たちは、CraftyJSライブラリを使用してCanvasにレンダリングするブラウザーベースのマルチプレイヤータイクーンゲームを作成しています。GUIのバックグラウンドでは、PHPでYii Frameworkを実行しており、すべてがPythonランダムマップジェネレーターとゲームエンジンに接続しています。 これが最初のラフマップレンダーの外観です。http://i.imgur.com/khAXtl.png 地図データの保存 ゲームの世界は、ゲームが開始するたびにランダムに生成されます。サイズは、各プレーヤーの100x100六角形タイルです。つまり、3人用のゲームでは、90.000のタイルが作成されます。現在は、マップをレンダリングするためのJavaScript配列を作成しています。 これはレンダリングには問題なく機能しますが、マップを操作する場合は、タイルを所有するプレーヤー、その上に構築する構造の種類、現在の価格などを保存する必要があります。最初は、少なくともプロトタイプについては、MySQLを使用したかったのですが、いくつかのテストの後、それは私が望むほど正確ではありません。たぶん、MongoDBのようなオブジェクトストアは、SQLテーブルではなくタイルデータを格納するのに適しています。それとも何か他に? 地図を表示する 私が目にするもう1つの問題は、マップ内を移動することです。現在、ビューポートにない場合でも、タイルごとにCraftyエンティティを作成しています。Craftyはビューポート内のタイルのみをレンダリングしますが、保存し、各レンダリングイベントですべてのタイルを反復処理する可能性があるため、これは低速です。私が現在持っているのは、移動が非常に遅く、動きが途切れる、描画された生成されたマップです。これを再生可能にしたいと思います。 私の最初のアイデアは、ビューポートにあるタイルの表示されたサブセットをロードすることでした。しかし、プレーヤーがビューポートを空白の領域に移動する場合、サーバーにクエリを送信して応答が返されるのを待つ必要があります。そうしないと、マップをレンダリングできません。これはネイティブアプリケーションでは問題ありませんが、Webゲームでは遅延します。 マップからスムーズなパフォーマンスを得る方法は、タイルのより大きなサブセットをJavaScript配列にプリロードし、それをキャッシュとして使用することです。プレーヤーにはいくつかの画面が「キャッシュ」されており、ビューポートを移動すると、JSの「キャッシュ」により多くのタイルがロードされます。 私は正しい方向に向かっていますか?同様のことをした人からもっと情報をもらいたいです。私はゲーム開発に不慣れですが、ここ数週間にわたって多くの情報源を経験してきました。

3
あらゆる方向に無限に成長する可能性のある2Dタイルマップを保存するための適切なフラットファイル形式は何ですか?
私は、必要に応じて手続き的に生成されたコンテンツを使用して任意の方向に自動的に拡張する単純なマップエンジンを作成しています。 マップ上の四角形のサブセットをマップ上の任意のポイントからすばやく効率的に読み込むことができるように、0,0の原点にアンカーされたマップデータを格納するための適切な方法は何ですか? マップを異なるセクターにチャンク化し、何らかのヘッダー形式を使用して、ファイル内の特定のセクターが格納されている場所を特定する必要があると考えています。これは良いテクニックですか、それとも私が見ることができるより優れた、より効率的なテクニックはありますか?
9 tiles  maps 

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