グリッドにタウンレイアウトを生成する


9

次の要素を使用して、正方形のグリッドで町のレイアウトを生成します(等角投影でレンダリングされますが、問題ありません)。

  • 2x2ハウス
  • 道路、1ユニット幅
  • 運河、1ユニット幅

サンプルレイアウト:

レイアウト例

  • 私はいつも特定の数の家を持ち、それらすべてを接続するために必要なだけの道路と運河を持っています。
  • 家には、正面玄関の前に2つの道路が必要です(常に右側を向いています)。
  • 中間の草原(空)があるとよいでしょう。

このための既製のアルゴリズムはありますか?そうでない場合、これを実装するためにどの方向を検討する必要がありますか?

回答:


8

希望する方法に応じて、多くの方法があります。ここに私があなたの説明に合うと思う1つの方法の大まかな概要があります:

最初に運河を生成します。次に、ランダムに家の配置を開始します。配置する家ごとに、その前に道路を配置し、その部分から既存の道路ネットワークまでの道路を描きます。これが不可能な場合や、道路を前に配置すると、2x2の醜いブロックになります。道路は家を再配置します。互いに近いが既存の道路から遠く離れているいくつかの道路ポイントを検出し、それらのショートカットを作成してみます。

この種のものは何よりも実験と経験が必要です。多くの場合、ランダムな方法で詳細を作成することで良い結果が得られ、それがいくつかの基準を満たしているかどうかを判断し、満たされていない場合は取り消して再試行します。

この正確なタスクでは、確かに基本的なパスファインディングを十分に理解する必要があります。すでに専門家でない限り、トピックを読んでください。そして、パスファインディングは最短のパスである必要はないことを覚えておいてください。私の説明の最後の部分では、すでにそこにあるパスの再利用にある程度の重みを付けたいと思うかもしれません。

行き詰まって、コードといくつかの出力例を見せて、どのように違うものにしたいのかを詳しく説明した場合、これは決して簡単な作業ではありません。

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