[前へ] [目次へ] [次へ]

マップタイル詳細解説

(21/11/24) 多種オートタイル(8x9入力)のパターンユニットテーブルに誤りがあったため修正しました。

Fuku Game Studioのマップで使用するタイルに関する詳細解説です。
タイル関係で詳細な処理をする人やオートタイル素材を作成する人向けの解説です。

タイルサイズは @@tile_width および @@tile_height で指定され、デフォルトは両方とも32です。
全てのタイル仕様において、素材画像は縦横ともに8192ピクセル以下である必要があります。

●タイルID

   FGSでタイルの種類を決定するための32bit整数値です。
   チップセットおよびタイルセットの内容を含め規定されています。
   
   タイルIDの0xFC(bit2〜7)が全て1である場合、エクストラタイルとして扱います。
   エクストラタイルは何も描画されません。
   
   上記以外の場合、IDの0x0F00_0000(bit24〜27)をタイルセット番号として参照し、対応するチップセットを特定します。
   それ以外のビットはチップセットの種類に従って以下の通り解釈します。
   
   ・通常チップ/アニメーションチップ
マスク内容
0xF000_0000(bit28〜31)必ず0
0x0F00_0000(bit24〜27)タイルセット番号(0〜15)
0x0080_0000(bit23)必ず0
0x0040_0000(bit22)オートタイルCグループフラグ(注)
0x0020_0000(bit21)オートタイルBグループフラグ(注)
0x0010_0000(bit20)オートタイルAグループフラグ(注)
0x000F_0000(bit16〜19)必ず0
0x0000_FF00(bit8〜15)タイルX(横方向)番号(0〜255)
0x0000_00FF(bit0〜7)タイルY(縦方向)番号(0〜251)
   注:タイルセット番号12以上に配置された時、オートタイルとの共同判定でのみ使用
   
   ・非多種オートタイル
マスク内容
0xF000_0000(bit28〜31)タイルX(横方向)番号(0〜14)
0x0F00_0000(bit24〜27)タイルセット番号(0〜15)
0x0080_0000(bit23)オートタイル無効フラグ
0x0040_0000(bit22)オートタイルCグループフラグ
0x0020_0000(bit21)オートタイルBグループフラグ
0x0010_0000(bit20)オートタイルAグループフラグ
0x000F_0000(bit16〜19)必ず0
0x0000_FF00(bit8〜15)オートタイルパターン番号(0〜255)
0x0000_00FF(bit0〜7)タイルY(縦方向)番号(0〜251)
   
   ・多種オートタイル
マスク内容
0x8000_0000(bit31)必ず0
0x6000_0000(bit29〜30)タイルX(横方向)番号(0〜3)
0x1000_0000(bit28)必ず0
0x0F00_0000(bit24〜27)タイルセット番号(0〜15)
0x0080_0000(bit23)オートタイル無効フラグ
0x0040_0000(bit22)オートタイルCグループフラグ
0x0020_0000(bit21)オートタイルBグループフラグ
0x0010_0000(bit20)オートタイルAグループフラグ
0x0008_0000(bit19)オートタイル左上多種フラグ
0x0004_0000(bit18)オートタイル左下多種フラグ
0x0002_0000(bit17)オートタイル右下多種フラグ
0x0001_0000(bit16)オートタイル右上多種フラグ
0x0000_FF00(bit8〜15)オートタイルパターン番号(0〜255)
0x0000_00C0(bit6〜7)必ず0
0x0000_0020(bit5)オートタイル左多種フラグ
0x0000_0010(bit4)オートタイル下多種フラグ
0x0000_0008(bit3)オートタイル右多種フラグ
0x0000_0004(bit2)オートタイル上多種フラグ
0x0000_0003(bit0〜1)タイルY(縦方向)番号(0〜3)
   

●種類:通常チップ

   チップセットタイプが通常チップである場合、画像をタイルサイズ毎に分割してタイル番号を割り当てます。
   タイルIDのタイルX番号、タイルY番号により参照して単純に選択します。
   通常チップでは横方向は最大256枚、縦方向は最大252枚まで割り当てられます。
   
   例えば、以下の画像であればツボはX=2,Y=0、椅子はX=1,Y=2となります。


●種類:アニメーションチップ

   チップセットタイプがアニメーションチップである場合、
   画像をタイルサイズ毎に分割して、アニメーションが枚数分右に向かって並ぶものとして扱います。
   そして、アニメーション1単位ごとにタイル番号を割り当てます。
   タイルIDのタイルX番号、タイルY番号を割り当てたタイル番号に従って選択します。
   アニメーションチップでは横方向は最大256枚、縦方向は最大252枚まで割り当てられます。
   
   アニメーションは左側が最初に表示される画像で、右側に向かってアニメーションします。
   アニメーション規則は右端まで行くと左端に戻る「循環」と左右を往復する「往復」が選択できます。
   例えば3枚絵の場合、「循環」は0→1→2→0→1→2→0(2周)となり、
   「往復」は0→1→2→1→0→1→2→1→0(2周)となります。
   4枚絵の場合、「循環」は0→1→2→3→0→1→2→3→0(2周)となり、
   「往復」は0→1→2→3→2→1→0→1→2→3→2→1→0(2周)となります。
   アニメーション枚数および表示速度は表示時に設定します。
   
   例えば、以下の画像をアニメ枚数=3とした場合、ツボはX=1,Y=0、テーブルはX=0,Y=2となります。


●種類:オートタイル用チップ、共同オートタイル、半共同オートタイル
●種類:簡易斜めオートタイル用チップ、簡易斜め共同オートタイル、簡易斜め半共同オートタイル

   チップセットタイプがこれらのオートタイル系チップである場合、まず画像をタイルサイズ毎に分割します。
   これを横4、縦2並べたものを「パターンユニット」とします。
   
   ↓パターンユニットの例


   そしてパターンユニットがアニメーション枚数分右に向かって並ぶものとして、
   アニメーションを含む1単位を「タイルユニット」とし、これにタイル番号を割り当てます。
   
   ↓タイルユニットの例(アニメ枚数=3)


   アニメーションは左側が最初に表示される画像で、右側に向かってアニメーションします。
   アニメーション規則は右端まで行くと左端に戻る「循環」と左右を往復する「往復」が選択できます。
   例えば3枚絵の場合、「循環」は0→1→2→0→1→2→0(2周)となり、
   「往復」は0→1→2→1→0→1→2→1→0(2周)となります。
   4枚絵の場合、「循環」は0→1→2→3→0→1→2→3→0(2周)となり、
   「往復」は0→1→2→3→2→1→0→1→2→3→2→1→0(2周)となります。
   アニメーション枚数および表示速度は表示時に設定します。
   
   タイルIDのタイルX番号、タイルY番号を割り当てたタイル番号に従って選択します。
   オートタイルでは横方向は最大15枚、縦方向は最大252枚まで割り当てられます。
   
   ・オートタイルによるパターン選択
   この種類のオートタイルはパターンユニットに含まれる各チップを4分割したサブチップを、
   周辺8マスの配置状況に合わせて1/4ずつ独立して選択し、256通りのパターンを生成します。
   選択されるサブチップは各チップの同じ位置から選ばれます。
   ↓の例では左上は赤い部分、右上は緑の部分、左下は青の部分、右下は紫の部分から選ばれます。

   
   選択する部分の決定には隣接する周辺8マスのタイルIDを参照し、
   以下の条件を全て満たすものを1、満たさないものを0とし、後述のテーブルに従って決定します。
   なおマップ外は無条件に1として判定されます。
   ・対象がエクストラタイルではない
   ・自身と対象のタイルセット番号が同じか、対象のタイルセット番号が12以上
   ・自身がオートタイルグループAを持つ場合、対象もオートタイルグループAを持つ
   ・自身がオートタイルグループBを持つ場合、対象もオートタイルグループBを持つ
   ・自身がオートタイルグループCを持つ場合、対象もオートタイルグループCを持つ
   ・横方向を共同も半共同もしていない場合、タイルX番号が同じ
   ・横方向が半共同の場合で自身のタイルX番号が奇数である場合、タイルX番号が奇数
   ・縦方向を共同も半共同もしていない場合、タイルY番号が同じ
   ・縦方向が半共同の場合で自身のタイルY番号が奇数である場合、タイルY番号が奇数
   注:対象のタイルセット番号が12以上である場合、横方向が共同、縦方向が半共同扱いになります。

   この判定結果を 方向IDのビット(1<<方向ID) に入れたものがオートタイルパターン番号となります。

   オートタイルのパターンユニット内の画像選択は、それぞれの接する3枚(例えば左上なら左、左上、上)の判定結果で行い、
   それ以外の5枚は画像選択に関わりません。
   パターンユニット内の画像選択は以下のテーブルに従います。


   簡易斜めオートタイルのパターンユニット内の画像選択は以下のテーブルに従います。
   記載のない位置は画像選択に関わりません。
   アルファベット記載の位置は別記します。

   A:上下左右が全て0。このパターンは他より優先して選択されます。

●種類:斜めオートタイル用チップ、斜め共同オートタイル、斜め半共同オートタイル

   チップセットタイプが斜めオートタイル系チップである場合、まず画像をタイルサイズ毎に分割します。
   これを横8、縦4並べたものを「パターンユニット」とします。
   
   ↓パターンユニットの例


   そしてパターンユニットがアニメーション枚数分右に向かって並ぶものとして、
   アニメーションを含む1単位を「タイルユニット」とし、これにタイル番号を割り当てます。
   
   アニメーションは左側が最初に表示される画像で、右側に向かってアニメーションします。
   アニメーション規則は右端まで行くと左端に戻る「循環」と左右を往復する「往復」が選択できます。
   例えば3枚絵の場合、「循環」は0→1→2→0→1→2→0(2周)となり、
   「往復」は0→1→2→1→0→1→2→1→0(2周)となります。
   4枚絵の場合、「循環」は0→1→2→3→0→1→2→3→0(2周)となり、
   「往復」は0→1→2→3→2→1→0→1→2→3→2→1→0(2周)となります。
   アニメーション枚数および表示速度は表示時に設定します。
   
   タイルIDのタイルX番号、タイルY番号を割り当てたタイル番号に従って選択します。
   オートタイルでは横方向は最大15枚、縦方向は最大252枚まで割り当てられます。
   
   ・オートタイルによるパターン選択
   斜めオートタイルはパターンユニットに含まれる各チップを4分割したサブチップを、
   周辺8マスの配置状況に合わせて1/4ずつ独立して選択し、256通りのパターンを生成します。
   ただし斜めオートタイルは基本的に上下左右を全て選択条件にしているため、
   斜め方向が揃っている場合は各チップをそのまま選択しているように見えます。
   斜め方向が異なる場合、異なる部分だけ別の場所から選択されます。
   なお選択されるサブチップは各チップ内の同じ位置から選ばれます。
   
   選択する部分の決定には隣接する周辺8マスのタイルIDを参照し、
   以下の条件を全て満たすものを1、満たさないものを0とし、後述のテーブルに従って決定します。
   なおマップ外は無条件に1として判定されます。
   ・対象がエクストラタイルではない
   ・自身と対象のタイルセット番号が同じか、対象のタイルセット番号が12以上
   ・自身がオートタイルグループAを持つ場合、対象もオートタイルグループAを持つ
   ・自身がオートタイルグループBを持つ場合、対象もオートタイルグループBを持つ
   ・自身がオートタイルグループCを持つ場合、対象もオートタイルグループCを持つ
   ・横方向を共同も半共同もしていない場合、タイルX番号が同じ
   ・横方向が半共同の場合で自身のタイルX番号が奇数である場合、タイルX番号が奇数
   ・縦方向を共同も半共同もしていない場合、タイルY番号が同じ
   ・縦方向が半共同の場合で自身のタイルY番号が奇数である場合、タイルY番号が奇数
   注:対象のタイルセット番号が12以上である場合、横方向が共同、縦方向が半共同扱いになります。

   この判定結果を 方向IDのビット(1<<方向ID) に入れたものがオートタイルパターン番号となります。

   斜めオートタイルのパターンユニットの画像選択は、
   接する斜め方向の判定結果が0ならパターンユニットの左半分、1ならパターンユニットの右半分を参照します。
   パターンユニットの内側4x4の参照位置は上下左右の判定結果で決定し、以下のテーブルに従います。

   注:このテーブルは他と違いチップ単位です。
   

●種類:多種オートタイル

   多種オートタイルはオートタイル32枚をひとつのオートタイルとして扱い、65536通りのパターンを生成します。
   多種オートタイルは必ずオートタイル横8枚、縦64枚で編成し、4x4の16枚の多種オートタイルとし、
   ↓の構成を縦に16個繋げます。

   この表では縦方向を数値、横方向を大文字アルファベット、横部分を小文字アルファベットで表記しています。
   横方向のAとB、およびCとDは対Aタイルとします。
   横方向のABとCDは対Bタイルとします。
   斜め方向のオートタイル多種フラグが設定されていない場合、その位置は a のオートタイルを参照します。
   斜め方向のオートタイル多種フラグが設定されている場合、その位置は b のオートタイルを参照します。
   (簡単に言うと b 側の左半分は斜め方向が対Aタイル、右半分は斜め方向が対Bタイルの時に使用されます)
   縦に並ぶ構成はオートタイル多種フラグの上下左右で選択します。
   構成の選択に対する各ビット割り当ては以下の通りです。
   ・上:1
   ・右:2
   ・下:4
   ・左:8
   
   選択する部分の決定には隣接する周辺8マスのタイルIDを参照し、4グループに分けます。
   なおマップ外は無条件にグループ1として判定されます。
   グループ0:1,2,3いずれのグループの条件も満たさなかったタイル。
   
   グループ1:同種か、共同しているタイル。
   具体的には以下の条件を全て満たすもので、かつグループ2,3のどちらでもないタイル。
   ・対象がエクストラタイルではない
   ・自身と対象のタイルセット番号が同じか、対象のタイルセット番号が12以上
   ・自身がオートタイルグループAを持つ場合、対象もオートタイルグループAを持つ
   ・自身がオートタイルグループBを持つ場合、対象もオートタイルグループBを持つ
   ・自身がオートタイルグループCを持つ場合、対象もオートタイルグループCを持つ
   ・横方向を共同も半共同もしていない場合、タイルX番号が同じ
   ・横方向が半共同の場合で自身のタイルX番号が奇数である場合、タイルX番号が奇数
   ・縦方向を共同も半共同もしていない場合、タイルY番号が同じ
   ・縦方向が半共同の場合で自身のタイルY番号が奇数である場合、タイルY番号が奇数
   注:対象のタイルセット番号が12以上である場合、横方向が共同、縦方向が半共同扱いになります。

   グループ2:対Aタイルか、対Aとして共同しているタイル。
   具体的には以下の条件を全て満たすもの。
   ・対象がエクストラタイルではない
   ・自身と対象のタイルセット番号が同じ
   ・自身がオートタイルグループAを持つ場合、対象もオートタイルグループAを持つ
   ・自身がオートタイルグループBを持つ場合、対象もオートタイルグループBを持つ
   ・自身がオートタイルグループCを持つ場合、対象もオートタイルグループCを持つ
   ・タイルX番号の2のビットが同じで、1のビットが逆
   ・縦方向を共同も半共同もしていない場合、タイルY番号が同じ
   ・縦方向が半共同の場合で自身のタイルY番号が奇数である場合、タイルY番号が奇数
   
   グループ3:対Bタイルか、対Bとして共同しているタイル。
   具体的には以下の条件を全て満たすもの。
   ・対象がエクストラタイルではない
   ・自身と対象のタイルセット番号が同じ
   ・自身がオートタイルグループAを持つ場合、対象もオートタイルグループAを持つ
   ・自身がオートタイルグループBを持つ場合、対象もオートタイルグループBを持つ
   ・自身がオートタイルグループCを持つ場合、対象もオートタイルグループCを持つ
   ・タイルX番号の2のビットが逆
   ・縦方向を共同も半共同もしていない場合、タイルY番号が同じ
   ・縦方向が半共同の場合で自身のタイルY番号が奇数である場合、タイルY番号が奇数
   
   この判定結果グループの1のビットを 方向IDのビット(1<<方向ID) に入れたものがオートタイルパターン番号となります。
   そして判定結果グループの2のビットを各方向のオートタイル多種フラグに入れます。
   選択したオートタイル内のパターンユニット選択規則は元の設定に従います。
   

●種類:多種オートタイル(8x9入力)

   多種オートタイルは必要素材枚数が多く準備が大変なため、
   少ない枚数のデータから多種オートタイル画像へ変換する機能がFGSに実装されています。
   この機能はマップエディタのタイル編集モードでGキーを押して出るウィンドウから
   「↑の範囲をオートタイル化して画像保存」または「指定画像をオートタイル化して画像保存」で使えます。
   
   この項はこの機能で使用する「8x9入力」の仕様です。
   この仕様の画像を直接マップチップデータベースで読み込むことはできませんのでご注意ください。
   
   「8x9入力」は通常オートタイルを拡張した形で、以下のパターンユニットを使用します。

   このパターンユニットを通常オートタイルと同様に
   アニメーション枚数分横に並べたものを横に2つ並べたものがタイルユニットになります。
   ここで並べたアニメ単位2つのうち、左側が多種オートタイルの a 、右側が同 b となります。
   
   このタイルユニットを最大4x4まで並べることができます。
   

●種類:多種オートタイル(16x24入力)

   多種オートタイルは必要素材枚数が多く準備が大変なため、
   少ない枚数のデータから多種オートタイル画像へ変換する機能がFGSに実装されています。
   この機能はマップエディタのタイル編集モードでGキーを押して出るウィンドウから
   「↑の範囲をオートタイル化して画像保存」または「指定画像をオートタイル化して画像保存」で使えます。
   
   この項はこの機能で使用する「16x24入力」の仕様です。
   この仕様の画像を直接マップチップデータベースで読み込むことはできませんのでご注意ください。
   
   「16x24入力」は斜めオートタイルを横に2個、縦に6個並べたものを使用します。
   斜めオートタイルと同様に、
   接する斜め方向の判定結果が0ならパターンユニットの左半分、1ならパターンユニットの右半分を参照します。
   パターンユニットの内側4x4の参照位置は上下左右の判定結果で決定し、以下のテーブルに従います。

   パターンユニットを斜めオートタイルと同様に
   アニメーション枚数分横に並べたものを横に2つ並べたものがタイルユニットになります。
   ここで並べたアニメ単位2つのうち、左側が多種オートタイルの a 、右側が同 b となります。
   つまり、 b 側はパターンユニットの左半分が接する斜め方向の判定結果が2の時、
   パターンユニットの右半分が接する斜め方向の判定結果が3の時に参照します。

   このタイルユニットを最大4x4まで並べることができます。
   


[前へ] [目次へ] [次へ]

最終更新 2021/11/24