TiledMapEditor/Automapping

TiledMapEditor

概要

このページではTiledMapEditorの自動マッピングの使い方を紹介します。



自動マッピングとは

自動マッピングとは、配置したマップのタイルを入力として、特定のルールを元に、タイルレイヤーを自動生成する方法です。これにより以下のメリットが得られます

  • 作業の効率化: 少ない時間で定型的な作業を完了できます。これにより作業時間を減らし、作業速度をアップすることができます
  • 入力ミスの削減: 自動化により入力ミスを減らします。適切にルール設定ができていればエラーは発生しません

自動マッピングの仕組み

01.png
  1. 元となるデータを「main.tmx」とします。ここにObjectsレイヤーを作成します
  2. 次にrules.txtを作成します。ここにはルールファイルを定義します
    1. 例では、「rule1.tmx」「rule2.tmx」を参照する設定をしています
  3. rule1.tmx、rule2.tmxにルールの定義を設定します
    1. このときレイヤー名に気をつけます
    2. 入力情報となるレイヤーには「input_もとのレイヤー名」
    3. 出力情報には「output_出力レイヤー名」とします
  4. rules.txt / rule1.tmx / rule2.tmx が適切に設定されていれば、「main.tmx」のメインメニューから「マップ > 自動マップ」を選ぶと、「Collision」レイヤーが自動生成されます

基本

※バージョン 0.13.1 にて動作確認※

まずは基本的な自動マッピングの使い方です。 配置したタイルをもとに、コリジョンを自動配置する手順を解説します。

素材のダウンロード

まずは素材として、こちらの map.png をダウンロードします。

map.png

main.tmxの作成

元となるマップデータを作成します。TiledMapEditorを起動して、新規作成します。

02.png

マップの大きさは「8x8」、タイルの大きさは「32px」とします。 続けて、タイルレイヤーを追加します。

03.png

「Background」「Objects」の2つのタイルレイヤーを作成します。Backgroundには通行可能なタイル、Objectsには通行できないタイルを配置します。 タイルセットにはダウンロードした「map.png」を設定します(マップ > 新しいタイルセット)。

04.png

そうしたら、Backgroundレイヤーに草原を配置します。

05.png

次に、Objectsレイヤーに木を配置します。

06.png

これで元となるマップデータの作成は完了です。ファイル名を「main.tmx」として任意の場所に保存します。

自動マッピングテキスト(rules.txt)の作成

テキストエディタを開いて、以下のように記述します。

rule1.tmx

記述できたら、main.tmxを保存したフォルダと同一のところに、ファイル名を「rules.txt」として保存します。

自動マッピングルール(rule1.tmx)の作成

TiledMapEditorの新規作成を選んで、ルールを作成します。 マップサイズはいくつでも構いませんが、わかりやすくするために「1x1」にしておきます。

08.png

そして、ルール用のレイヤーを作成します。

07.png
  • input_Objects: 入力レイヤー
  • output_Collision: 出力するコリジョンのレイヤー

タイルセットにはダウンロードした「map.png」を設定します(マップ > 新しいタイルセット)。

04.png

では、ルールを作成します。 「input_Objects」レイヤーを選択して、木を配置します。

09.png

これにより、Objectsレイヤーに「木が配置されていたら〜」という条件を指定できます。 次に、「output_Collision」レイヤーに、バッテンマークのコリジョンを配置します。

10.png

これにより、「Collisionレイヤーにはバッテンマークを配置する」という出力を指定できます。

では、ファイル名を「rule1.tmx」として、main.tmx / rules.txt と同一のフォルダに保存します。

自動マッピングの実行

main.tmxを開いて、メインメニューから「マップ > 自動マップ」を選びます。

11.png

しかし、エラーメッセージが表示されてしまいます。

12.png

これはrule1.tmxに、入力/出力とする領域(region)が設定されていないためです。

Regionの設定

領域(region)とは、有効な入力となる範囲や出力を行う範囲の設定です。

では、再び、rule1.tmxを開きます。そして、Region用のタイルセットを追加します。 タイルセットはこちらの「rules.png」をダウンロードして使います。

rules.png

「RI」とは、「regions_input」の頭文字を取ったものです。「RO」は「regions_output」です。

13.png

メインメニューから「マップ > 新しいタイルセット...」を選び、画像の「パス」に「rules.png」を指定します。 タイルセットを追加できたら、レイヤーを追加します。

14.png

「regions_input」「regions_output」を追加しました。 次に、「regions_input」レイヤーを選んで、「RI」タイルを配置します。

15.png

続けて、「regions_output」レイヤーに「RO」タイルを配置します。

16.png

そうしたらrule1.tmxを保存します。

再び自動マッピングを実行

main.tmxを開いて、メインメニューから「マップ > 自動マップ」を選びます。すると、自動マッピングが実行され、Collisionレイヤーが追加されます。

17.png

完成データ

今回の自動マッピングの完成データ一式はこちらにあります。うまく行かない場合は、こちらの設定と比較しながら違いを確かめていきます。


Regionの仕組みを理解する

Regionの仕組みを理解するために、rule1.tmx を修正してみます。

rule1.tmx を開いて、「マップ > マップサイズを変更...」を選びマップサイズを変更します。

20.png

マップサイズを「3x3」に変更します。

21.png

変更したら、まずは「input_Objects」レイヤーだけを可視化して、中央にだけ木を配置します。

22.png

次に、「output_Collision」レイヤーに、コリジョン(バッテン)をすべての場所に配置します。

23.png

木の周りにもコリジョンを配置するようにしました。 続けて、「regions_input」レイヤーを選び、「RI」タイルを中央に配置します。

24.png

最後に、「regions_output」レイヤーを選び、「RO」タイルをすべての場所に配置します。

25.png

では保存して、main.tmx を開き、自動マッピングを実行してみます。

26.png

木の周りにもコリジョンが自動配置されました。このようにRegionの範囲を広げると、そのぶんだけ対象を広くすることができます。 ……ただ右上だけはうまく配置されていませんね。原因は不明ですが、木の位置を下にずらすとうまく配置されるので、配置を工夫しなければならないのかもしれません。

オートタイル

RPGツクール や WOLF RPGエディターで採用されている、オートタイルを実現する方法を説明します。 ここでは、足場の右側に何もなかったら、そのタイルは右端用のタイルとする、という自動マッピングを行います。

40.png

このように配置したタイルを……、

41.png

自動でこうなるようにします。

素材のダウンロード

オートタイルを作成するために、素材画像をダウンロードします。

素材の内容は、以下の3つの画像です。

base.png
base.png: オートタイルの元となる画像
tileset.png
tileset.png: オートタイルで出力する画像
rules.png
rules.png: Region定義用の画像

main.tmxの作成

Tiledを起動して、8x8のサイズで新規作成します。

30.png
  1. レイヤー名を Base に変更します
  2. タイルセットとして、base.png / tileset.png を読み込みます
  3. baseタイルセットから以下のようにタイルを配置します
31.png

ファイル名を main.tmx として保存しておきます。

rules.txtの作成

テキストエディタから以下のように記述して、rules.txtというファイル名で保存します。

rule1.tmx

rules.txt は、main.tmxと同一のフォルダに配置します。

rule1.tmxの作成

ルールを作成します。 Tiledを起動して、5x5のサイズで新規作成します。

32.png

作成できたら、rules.png / base.png / tileset.png のタイルセットを作成します

33.png

regisons_inputレイヤーの作成

regions_input レイヤーを作成します。「タイル・レイヤー1」が自動で作成されているので、それをリネームします。 そして rules タイルを以下のように配置します。

34.png

input_Baseレイヤーの作成

次に input_Base レイヤーを作成します。このレイヤーは main.tmx の Baseレイヤーで指定したタイルを入力とするものです。

35.png

タイルはこのように配置しました。

inputnot_Baseレイヤーの作成

続けて、inputnot_Base レイヤーを作成します。

36.png

タイルは左から4番目に配置しました。 この「inputnot_Base」レイヤーがオートタイルのルール作る上で重要な部分です。inputnot_*という名前を指定することで、入力レイヤーに指定のタイルが「存在しなかったら」という条件を定義できます。

regions_outputレイヤーの作成

出力用のRegionレイヤーを指定します。regions_output レイヤーを作成して、baseタイルのROタイルを配置します。

37.png

output_Backgroundレイヤーの作成

出力するタイルレイヤーを指定します。output_Background レイヤーを作成して、tilesetタイルを以下のように配置します。

38.png

rule1.tmxとして保存

これでルールの作成は完了です。ファイル名を rule1.tmx で保存します。

main.tmx を開く

main.tmx を開いて、メインメニューから「マップ > 自動マップ」を選びます。 すると、Backgroundレイヤーに tilesetタイルが自動でタイリングされました。

39.png

なお、ここでは右側だけをオートタイルする方法を紹介しましたが、左側のルールも定義すれば、両端が自動でタイリングされるようになります。なお、自動マッピングのルールは左上から順に行われるので、優先順位の高いルールは後になるように定義します。

完成データ

今回作成したデータは以下のリンクからダウンロードできます。

うまく設定できない場合は、このデータと比較してみてください。

参考

  • Automapping
    自動マッピングの公式ドキュメントです(英語)