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