スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Unityでマップを自動生成する(その1)

外部に定義したマップファイルから、全体マップと戦域マップを自動生成する機能(一部)を実装しました。
外国産戦略シミュレーションゲームでは、画像ファイルから世界地図を自動生成するというような機能はよく見られます(パラドゲーなど)。
しかし、今作っているのは宇宙空間を舞台にしたものなので、本来、陸地や海といった行動できる範囲とできない範囲が分かれているということは考えにくいのが実態です。それでもなぜこの機能を実装したかというと、ひとえに「回廊の戦い」をやりたいから。これに尽きます。もっと言うと、ユーザが魔改造して勝手な地形を自由に生成して遊べるようなスケーラビリティを持たせたかったということもありますが。

実際にどんな処理をするかというと、大体次のような手順になります。
  1. 全体マップから戦域に相当する小領域を抽出
  2. 航行不能領域の膨張処理
  3. 同エッジ抽出
  4. エッジを元に頂点情報を生成
  5. 拡大戦域マップの作成(線引きおよび内挿補完)
エッジ抽出のために1ピクセル膨張処理を行っている特性上、隣接した孤立点があると正しくマップを生成できないのがこのアルゴリズムの不満点であり不完全な点ではありますが、そこはバリデータか何かを作って解決するようにしたいと思います。もちろん、これはゲーム起動時に自動チェックされるという前提で。

最後に実行結果です。

戦域マップ用のベース小領域20141201_1.png
ちなみにこれ、黒以外に色分けの意味はありません。

自動生成された戦域マップ
20141201_2.png
正しく実装されていることがわかります。まぁ、元のピクセル数が低い(11*11px)だけに、お世辞にも味のある戦域マップとはいえないですね。

オマケ

20141201_3.png

やっぱりこれくらいの大きさの、しかもこういう地形だと胸が熱いですね!! 単縦陣一航過で敵泊地に殴り込みをかけたくなります。

次回は、宇宙空間との合成と、航行不能領域の具体的なビジュアライゼーションを実装する予定です。早めにできるといいが……。
スポンサーサイト
sidetitlePROFILEsidetitle
AUTHOR: かいのしずく


詳しい自己紹介ページ
本棚(ブクログ)
平成20年以降にチェックしたのすべての本
本棚(読書メーター)
各月の読了ページ数管理用
チームカチューシャ
同人ゲームサークル MATRICES

sidetitleINFORMATIONsidetitle
VISITORS
CALENDAR
11 | 2014/12 | 01
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
SEARCH
RECENT ENTRIES
CATEGORIES
ARCHIVES
sidetitleLINKsidetitle
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。