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

空間情報を表す同一形状のオブジェクト(多くの場合、正方形または六角形)。

2
マップエディターのレイヤーの目的は何ですか?
Tiledなどの地図編集者について質問があります。私は現在、独自のマップエディターを作成しています。たとえば、タイル張りにレイヤー化する目的は何か教えてもらえないかと思います。マップの作成にはどのような目的がありますか?
8 tiles  maps 

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です。「キャラクターはいる?木はある?」 オブジェクトを保持するコンテナーや、レンダリングするものをクライアントに伝えるために必要なものだけを送信するサーバーロジックなど、別のアプローチを考えていました。おそらくそれ自体の内部にネットワーク情報を保持するオブジェクトがあり、サーバーから呼び出されたときに送信されます。

4
アイソメトリックタイルを描画するための最良のテクニック
HTML5 Canvasを使用してシンプルなアイソメトリックゲームを作成することを考えており、タイルをレンダリングする最速の方法は何だろうと思います。 タイルはひし形ですが、drawImageは四角形を描画するので、角(以下の黒い部分)を除外する必要があります。 私には3つの選択肢があると思います: アルファチャネル(.png)を持つ画像オブジェクトを使用します。パフォーマンスが低下する可能性があります。 クリッピングパスを使用します。レンダラーが最適化されている場合、これはかなり高速になる可能性があります。 このような正方形のタイルをプリレンダリングします: 私は黒い四角をメモリ内の1つの実際のタイルとして使用し、そのようなタイルを緑のフィールドとその隣、または上下にあるすべてのフィールドに描画します。対角線(青)のフィールドは、長方形のタイルの角で構成されます。これはクリッピングやアルファチャネルを回避しますが、タイルの可能なすべての組み合わせを事前レンダリングする必要があり、やり過ぎのようです。 アイソメトリックタイルを行うための最良または最速の方法は何ですか?FarmVilleなどの他のゲームは何を使用しますか?

3
マルチプレイヤータイルベースの動きの同期
私はインターネット上で複数のプレイヤーの動きを同期させなければなりません、そしてそれを行うための最も安全な方法を見つけようとしています。 ゲームはタイルベースで、4方向にしか移動できません。移動するたびにスプライトが32ピクセル移動します(もちろん時間とともに)。さて、この移動アクションをサーバーに送信し、すべてのプレーヤーにブロードキャストする場合、ウォークキーを押し続けている間、ウォーキングを続けるには、次のコマンドを実行してサーバーに送信する必要があります。そして、すべてのクライアントにとって、時間内に、または動きはもはやスムーズではなくなります。私はこれを他のゲームで見ました、そしてそれはラグがなくてもかなり醜くなります。だから私はこれが実行可能なオプションでさえあるのだろうかと思っています。これはシングルプレイヤーにとって非常に優れた方法のようですが、簡単で簡単です(次の移動アクションを時間内に実行してリストに追加するだけです)。マウスの移動を簡単に追加できます(タイルをクリックする)。キューへのパスを追加するために、それは歩きました。 私の頭に浮かんだもう1つのことは、誰かがどこかの方向に動き始めたという情報を送り、もう一度彼が停止または方向を変えたときに、位置とともにスプライトが正しい位置に表示されるようにするか、位置が間違っている場合は、位置を修正できます。これは(うまくいけば)誰かが本当に遅れている場合にのみ問題を引き起こすはずです。その場合、それは予期されることです。これがうまくいくためには、何らかの方向のキューが必要です。ここで、着信方向の変更やものが保存され、スプライトが次のタイルへの現在の移動が完了した後、どこに行くべきかがわかります。これは実際には機能するかもしれませんが、ちょっと複雑すぎるようです。これを行う唯一の方法かもしれませんが、吃音のリスクはありません。停止または方向変更がクライアント側で受信された場合 sはキューに保存され、charは停止または方向を変更する前に、指定された座標に移動し続けます。もちろん、新しいコマンドが遅すぎると、どもりも発生します... 私は方法を決めるのに苦労しており、まだこれに関する例を見つけることができませんでした。私の主な問題はタイルの動きをスムーズに保つことです。そのため、ピクセルベースの動きの同期に関する他のトピックがあまり役に立たないのはこのためです。 これを行う「標準的な」方法は何ですか?

3
グリッド上のタイル全体の範囲トレース
私は現在グリッド上でA *パ​​スファインディングに取り組んでおり、生成されたパスをスムーズにすると同時に、それに沿って移動するキャラクターの範囲も考慮しています。私はパスファインディングにグリッドを使用していますが、キャラクターの動きは自由なローミングであり、厳密なタイル間の動きではありません。 よりスムーズで効率的なパスを実現するために、グリッド上でライントレースを実行して、タイル間に歩行不可能なタイルがあるかどうかを判断し、不要なコーナーを削っています。 ただし、ライントレースは範囲がゼロであるため、キャラクターの範囲を考慮せず、悪い結果をもたらします(ラインが見逃した歩行不可能なタイルを返さず、不要な衝突を引き起こしません)。 したがって、私が探しているのは、その下のタイルを決定するラインアルゴリズムではなく、タイル全体のエクステントラインの下のタイルを決定するアルゴリズムです。これは私の問題を視覚化するのに役立つ画像です! 誰かが何かアイデアを持っていますか?私はブレゼンハムのラインや他の代替品を使って作業してきましたが、この特定の問題を解決する方法はまだわかりません。

5
タイルベースの柔軟なエンジンの設計
宝石をちりばめた、文明、倉庫番などと同じように、あらゆる種類の非リアルタイムパズルゲームを作成するための柔軟なタイルベースのゲームエンジンを作成しようとしています。 私が最初に行ったアプローチは、Tileオブジェクトの2D配列を用意し、次にゲームオブジェクトを表すTileから継承するクラスを用意することでした。残念ながら、その方法では、3D配列がなければ、同じタイルにゲーム要素をさらに積み上げることができませんでした。 次に、別のことを行いました。Tileオブジェクトの2D配列はまだありましたが、すべてのTileオブジェクトには、配置したリストと異なるエンティティが含まれていました。これは、20分前まではうまくいきました。多くのことを行うにはコストがかかりすぎることに気付いたとき、次の例を見てください。 壁エンティティがあります。更新ごとに、隣接する8つのタイルをチェックし、次にタイルのリスト内のすべてのエンティティをチェックし、それらのエンティティのいずれかが壁であるかどうかをチェックし、最後に正しいスプライトを描画します。(これは、互いに隣接する壁をシームレスに描画するために行われます) 私が今見ている唯一の解決策は、あらゆる状況に適する可能性のある多くのレイヤーを備えた3Dアレイを持つことです。しかし、その方法では、同じタイル上の同じレイヤーを共有する2つのエンティティをスタックできません。やりたいときはいつでも、新しいレイヤーを作成する必要があります。 より良い解決策はありますか?あなたならどうしますか?
8 c#  2d  performance  tiles 

1
タイルベースの2D衝突検出の問題
このチュートリアルhttp://www.tonypa.pri.ee/tbw/tut05.htmlに従って、タイルベースの世界でリアルタイムの衝突を実装しようとしています。 これらのプロパティのおかげで、エンティティの中心座標がわかります。 public float CenterX { get { return X + Width / 2f; } set { X = value - Width / 2f; } } public float CenterY { get { return Y + Height / 2f; } set { Y = value - Height / 2f; } } …

3
2Dトップダウンビューマップ
これがどのように機能するのか疑問に思いました。 あなたはロードするか、完全なゲームの起動時にマップを、または実行時にマップの部分をロードするのですか? そして、どのように地図を保存しますか?XMLか、それともバイナリ形式ですか? ありがとう!
8 2d  tiles  sprites  maps 

2
レベルでオープンスペースを見つけるための最良の方法は何でしょうか?
私は、ペイントを使用してレベルにタイルを追加する2Dゲームに取り組んでいます。現在、ワープタイルを追加するように取り組んでいます。特定の方向指向のペイントが2つのポイント(開始と終了)を使用して、タイルが指す方向(左、右、上、下)を決定するように設定しました。ワープタイルにはこれらのポイントがありますが、他の2つのリスト(ワープの開始と終了)に追加されました。ワープの仕組みは次のとおりです。プレーヤーが1つのタイルに当たると、対応するワープタイルにテレポートされます。さて、これを適切に機能させるには、プレイヤーが壁やマップの外にテレポートできないようにする必要があります。したがって、壁から1スペース離れた開いたタイルにポイントを移動する必要があります。 これを行う最善の方法は何でしょうか?
7 xna  c#  tiles 

2
2Dスペースにタイルコーナーが表示されるかどうかを確認するにはどうすればよいですか?
私は戦争の霧を実行しようとしています、そして私はトラブルに遭遇しました。プレイヤーが特定の半径内の各タイルのコーナーを見ることができるかどうかを確認したいのですが、コーナーのビジョンが遮られるかどうかを確認する方法がわかりません。これを行う簡単な方法はありますか?私は線を描き、線のあるタイルがルージュのように塗りつぶされたブロックであるかどうかを確認するシステムを使用しましたが、ルージュのようにタイルの一部を見ることができるため、この方法が適しているかどうかはわかりませんはいまたはいいえタイプのものです。 たとえば、黒いタイルが白いタイルのビューを部分的に遮っています。 赤い線はプレーヤーがコーナーを見ることができることを示し、青い線はコーナーが見えないことを示します(黒がそれを妨げているため)。
7 2d  tiles 

1
2D、さまざまなレベルのトップダウンマップ
それで、2D、トップダウン、スプライトベース(タイル)ゲームを作成しています。現在、マップ(現時点ではマップエディター)で作業していますが、マップを作成するので、基本的には同じです事)。 シナリオ それで、私は効率について考えて、地図をバラバラに作成しています。それぞれの作品で、「レイヤー」を持つことを計画しています。基本的に、私はそれを「ヒーローの下」レベルと「ヒーローの上」レベルまでレンダリングし、ヒーローが明らかにその間にレンダリングされることを計画しています。「ヒーローと同じレベル」のレイヤーも存在する可能性がありますが、私はまだそこにはいません。イベントや対話についてはまだ心配していません。画面上でヒーローを探しています。 移動のために、私は明らかにどのタイルがどの方向に移動できるかを知る必要があります。現時点での私の計画は、各タイルが8ビットを取得することです(4は「方向に入ることができます」ビット、4は「方向に出ることができます」)。これにより、移動を制限したり、一方向の方向移動を許可したりできます。 ジレンマ これは多くのシナリオに最適です。これにより、マップを基本的に3つのレイヤー(文字列)に保存できるようになり、今後の柔軟性が向上します。ただし、それ自体がレイヤーを持つマップを作成することはできません。良い例は、ユーザーが無効な動きを許可することなく、橋の下または上を移動できる橋です。私はプラットフォームを作成できず、その下を移動できません。これらは私のゲームに含めたいものです。 私の考え 理論的には、複数のヒーローレイヤーを許可してから、「下」と「上」のレイヤー(またはサンドイッチレイヤー)の複数のセットを許可できます。しかし、これは私のシステムを複雑にし、マップ間の移動を潜在的にトリッキーにします(ヒーローがマップの端の3番目のレイヤーにあるが、それが他のマップの2番目のレイヤーに対応している場合、移動を許可または禁止するにはどうすればよいですか)。 私の質問 このような複数のレベルを持つ複数のマップを管理するためのより良い方法はありますか?ユーザーレベルは異なるマップの異なるレベルで「接続」される可能性がありますか? あるいは... 私はこれを難しい方法でやっていますか?私が気付いていないトップダウンの2Dタイルマップを処理するより標準的な方法はありますか? 注意すべきこと、または役立つかもしれないこと これはJavaScriptで行われます(JSONで転送されます) 状態をすばやく転送する必要があるため、マップIDとx / y /方向は、ブール値の「移動可能」値を取得するのに十分なはずです。 マップは標準サイズではありません(特定のタイル数になります) 他の人に助けてもらえるように編集ツールを作るので、ツールで作成できるものが役に立ちます 「テレポーテーション」の場所は、マップの構築や、さまざまなマップセット(必ずしも接続されている必要はありません)へのアクセスや、マップセットへのアクセスのために存在している必要がありますが、まだ作成されていません(現時点ではイベントと一緒になっています)。

2
16進タイルをスクロールする方法は?
これに対する答えを見つけることができないようです。ヘックスタイルのマップがあります。スクロールを実装したい。 現在のコード: drawTilemap = function() { actualX = Math.floor(viewportX / hexWidth); actualY = Math.floor(viewportY / hexHeight); offsetX = -(viewportX - (actualX * hexWidth)); offsetY = -(viewportY - (actualY * hexHeight)); for(i = 0; i < (10); i++) { for(j = 0; j < 10; j++) { if(i % 2 == …

1
これらの要件を満たす2Dタイルベースの地形生成に適した手法は何ですか?
夏のプロジェクトとして、フラッシュゲームを作るのは楽しいだろうと思いました。今、私はTerrariaの外観のようなものを探しています。とても楽しかったですが、今日私は思わぬ障害にぶつかりました。私の世界を生成する方法が必要です。可能性としてPerlinノイズを読み上げましたが、私の試みは散発的に見える結果を与えてくれました。これらの2Dタイルベースのワールドを生成するために使用されるいくつかのテクニックは何ですか? 理想的には、山、平原、洞窟を生成できるようになりたいです。


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