テクスチャ差し替えとタイルテクスチャ
マップタイル(ブロック、床、オブジェクト、装飾、セルエフェクト)は、いくつかの大きなスプライトシートから描画されます。各シートは同じ大きさのセルに区切られていて、ソース行はどのセルを描くか(tiles 列)だけを保持しています。自作のアートを持ち込む方法は2つあります。
| 方式 | フォルダ | 用途 |
|---|---|---|
| テクスチャ差し替え(Texture Replace) | Texture Replace/<sheet>_<slot>.png | すでに存在するセルを塗り替える場合:バニラのアート、またはアイテム/NPCのスプライト。 |
| タイルテクスチャ(Tile Textures) | Texture/<テーブル名>/<alias>.png | 新規の Block / Floor / Obj / Deco / CellEffect 行のアート。ゲームが起動時に空きセルを探してくれます。 |
新規行にテクスチャ差し替えを使わないでください
スロット番号はただの数値です。2つのModが同じスロットを選ぶと、何の警告もなく互いを上書きし合います。ゲームのアップデートがそのセルを使い始めれば、両方とも上書きされます。新規行では必ず下記の Texture/<テーブル名>/ フォルダを使ってください。
テクスチャ差し替え
ファイルはModの Texture Replace フォルダに置き、<sheet>_<slot>.png という名前にします(拡張子は小文字の .png)。
| スプライトシート | セルサイズ | 使う行 |
|---|---|---|
block、blockSnow | 64×64 | Block 行(壁、ブロック、屋根、柱) |
floor、floorSnow | 64×48 | Floor 行 |
obj、objSnow | 64×64 | _idRenderData が obj の Obj 行 |
objS、objSSnow | 32×32 | obj_S / obj_S flat の Obj 行(小さな植物、作物、雑草) |
objL、objLSnow | 80×64 | obj_L / obj_LV の Obj 行(樹木、背の高いオブジェクト) |
objC、objCL、objCLL | — | スロット式の _idRenderData を使う Thing / Chara のスプライト(Thing を参照) |
- スロット番号:
row * 100 + columnで、シートの左上のセルから数えます。これが行のtiles列に入る数値であり、テクスチャビューアー(Esc → ツール → テクスチャビューアー)に表示される数値でもあります。 - 画像サイズ:セルサイズの整数倍であれば任意です。大きい画像はスロットの左上を起点に、その右側と下側のセルを覆います。
- 雪:
...Snowシートは別物です。block_1234.pngを塗り替えたら、blockSnow_1234.pngも塗り替えてください。 - ファイルはゲームの実行中に再読み込みされるので、再起動せずに調整できます。
新規行のタイルテクスチャ
行に alias を設定し、tiles 列は空のまま(またはデフォルトの 0 のまま)にして、PNG を Texture/<テーブル名>/<alias>.png に置きます。
Mod_MyTiles/
package.xml
LangMod/EN/mytiles.xlsx ← Block / Floor / Obj / Material ... という名前のシート
Texture/
Block/
mymod_wall.png ← 64×256:壁 + 柱の3行(「壁と柵」を参照)
mymod_wall_snow.png ← 任意の雪バージョン、同じサイズ
Floor/
mymod_floor.png ← 64×48
Obj/
mymod_statue.png ← 64×64
mymod_path.png ← 1024×48:16 種類のオートタイルの縁形状(floor_obj)
mymod_wheat.png ← 448×64:7 つの成長フレーム<テーブル名>はBlock、Floor、Obj、Deco、CellEffectのいずれかです。フォルダ名とファイル名の大文字小文字は区別されません。- ファイル名は行の
aliasと一致していなければなりません。雪バリアントは、その隣に<alias>_snow.pngを置きます。 - 画像は、その行のセルサイズの整数倍でなければなりません(上の表を参照。行の
_idRenderDataが決めます。例:obj_S flat→ 32×32、obj_LV→ 80×64)。最大で横 99 セル、縦 4 セルまでです。 - 起動時にゲームがシート内の空き場所を選び、そこに画像を貼り付けて
tilesを埋めます。空きが尽きることはありません:シートがいっぱいになると、ゲームがシートを大きくします。Texture Replaceファイルが使っているセルが割り当てられることはありません。
セル番号はセーブデータに保存されません
セルは起動のたびに割り当て直されます。セーブデータに残るのは行の id だけなので、他のModを導入したり削除したりしてもマップが壊れることはありません。tiles にセル番号を自分で書き込まないでください。
セルの中に何を描くか
Elin はアイソメトリック(2:1)の視点で描画されるため、セルは決して単に「塗りつぶす」ものではありません。タイルの種類ごとに固有の形とアンカー位置があり、ただの四角形を描くと大きすぎて地面に半分めり込んでしまいます。確実なのは、同じ種類のバニラのセルをテンプレートとしてコピーし(Esc → ツール → テクスチャビューアー)、その上から描き直す方法です。以下の数値はバニラのシートで実測したもので、ピクセルの行はセルの上端から数えています。

接地範囲は 60×30 の菱形です。 隣のタイルは横に 30 px、縦に 15 px 離れているので、隙間なく敷き詰められる菱形はこれだけです。1行下がるごとに、形はちょうど 4 px だけ狭くなるか広くなるかでなければなりません。傾きの違う菱形(たとえば 62×34)は、どれだけ大きく描いてもタイルのあいだに地面が斜めの筋となって見えてしまいます。
接地オブジェクト:広げるのは奥側の2辺だけ
手前のマスの床は必ずあなたのタイルの上に描かれるので、手前側の2辺(左下、右下)の外側数ピクセルは、何を描いても隠れます。細かい模様はそこに置かないでください。奥側の2辺(左上、右上)は何にも覆われず、道や畑の下の草が継ぎ目から見えるのはここです。
隣の同じタイルとつながって見せたい接地オブジェクトでは、奥側の辺を、その方向に同じタイルが続いている場合に限って約 5 px 外へ広げ、それ以外の辺は菱形の線ちょうどで止めてください。4辺すべてを広げると輪郭が壊れ、かえってタイル同士がつながって見えなくなります。2つの広げた部分は上の頂点で分けておきます:各辺はそれが向いている隣のマスの側にだけ広げ、斜め奥のマスへは決して伸ばさないでください。
カーペットはオブジェクトではなく床です
接地オブジェクトは、その下の草を隠せません。各マスの床は、その奥にあるマスのオブジェクトより手前に描かれ、草の葉は奥のマスの奥深くまで伸びて、ラグの縁だけでなく真ん中にまで乗ってしまいます。バニラのカーペットはすべて Floor の行です。一方でバニラのオートタイルのオブジェクトは道・苔・柵であり、縁がぎざぎざであることがむしろ自然に見えます。一面を覆うものとして見せたいものは Floor シートに置き、オートタイルのオブジェクトは道のために使ってください。
| セル | どこに何を描くか |
|---|---|
床(Floor) 64×48、および floor_obj の平らなオブジェクト | セルの (32, 25) を中心とする 60×30 の菱形、つまり 10–40 行目です。バニラの床は「接地範囲+手前側の2辺に約 5 px」で描かれ、奥側の2辺でははみ出しません。板張り風の床は上面を数行下げて、その下に厚みの縁を足しますが、それはアートのスタイルであって必須ではありません。 |
中実ブロック 64×64(_idRenderData は空) | セル全体を埋めるアイソメトリックな立方体:上面の菱形と、見えている2つの側面です。 |
薄い壁 block_thin 64×64 | 壁は菱形の奥左の辺の上に立つ板で、セルの左 38 px だけを使います(x 0–37、1–62行目)。右側は空けておきます。反対向きはゲームが左右反転して描くので、片方の向きだけ描いてください。4つの行は上から順に、壁 / 低い壁(16行目から)/ 角柱(x 25–39、12行目から)/ 低い角柱(28行目から)です。 |
オブジェクト obj 64×64 | 下端を基準に、左右は中央揃えです:接地点はセルの下端近く(バニラでは57–63行目)にあります。地面に平らに置かれるもの(道、苔、落ち葉)に obj を使ってはいけません。バニラの苔や花畑と同じく、床シート上(64×48)にあって床とまったく同じ形状を持つ floor_obj を使ってください。ただしカーペットは Floor シートに置きます。上のヒントを参照してください。 |
小さなオブジェクト obj_S flat 32×32 | 下端を基準に(27–30行目)、左右は中央揃えです。作物や雑草がこれを使います。 |
背の高いオブジェクト obj_LV 80×64 × 2行 | 樹木は2つのセルの境界を中心に配置します:幹の付け根は下のセルの上半分(バニラのパルルの木:0–28行目、その下の36行は空のまま)、樹冠は上のセルの下半分(27–63行目)です。収穫フレーム(果実)も下のセルの同じ位置に描きます。 |
1セル1フレーム:ストリップ
1セルより横に長い PNG はストリップです。各セルが1フレームで、フレームが何を意味するかは行によって変わります。
| 行 | フレームの意味 |
|---|---|
| 通常の行 | バリアント。tiles に複数の値を書いたバニラの行と同じように、ゲームが向きに応じて1つを選びます。 |
anime 列を持つ行(Floor、Deco、CellEffect) | アニメーションのフレーム。anime = frames,ms[,loop[,sound]]。 |
tag に autotile を含む Obj | 道や畑の16種類の縁の形状。フレーム番号は、同じオブジェクトが隣にない側の合計です:後ろ 1、右 2、前 4、左 8。フレーム0は四方を囲まれた形、フレーム15は単独の形です。画面上では、左が左上の辺、後ろが右上の辺、右が右下の辺、前が左下の辺に当たります。接地オブジェクトは _idRenderData = floor_obj を使います(フレームは 64×48)。カーペットは Floor シートに置いてください。 |
| CellEffect | 8フレーム。液体はフレーム5〜8がアニメーションします。 |
_growth を持つ Obj | 成長ステージ。下記を参照。 |
Obj 行の anime 列は何もしません。そこでは使わないでください。
壁と柵:下に足す追加の行
_tileType が Wall 系または Fence 系のブロックは、縦に積まれた4つのセルから描画されます。壁そのもの、低い壁(壁を低くしたときに表示)、角の柱、低い角の柱の4つです。画像は4セル分の高さにして、上から下へこの順に並べてください。柵には少なくとも壁と柱が必要です。
背の高いオブジェクト:上に足す1行
obj_LV で描画されるオブジェクト(樹木やその他の背の高いオブジェクト)は、ベースのセルの上にもう1セル使います。画像を2行分の高さにして、下の行に幹(その付け根はそのセルの上半分)、上の行に樹冠を配置してください。上の「セルの中に何を描くか」を参照してください。
成長ストリップ(作物、樹木、雑草)
_growth 列を持つ行(_growth = Class,stageFrame,harvestFrame,harvestThing,maxCount)では、ストリップが成長ステージを保持します。stageFrame と harvestFrame は、あなたのストリップ内のフレーム番号で、0から数えます。
_growth のクラス | ステージのフレーム | 収穫のフレーム | _growth の例 |
|---|---|---|---|
Crop、Berry、Plant、Flower、SunFlower、Herb | 4(最初のステージはゲーム共通の芽の画像を使用) | 任意、1フレーム | Crop,0,4,carrot,2 → 5フレーム |
Rose、Cactus、Cha、Pasture、Seaweed | 5 | 任意 | Rose,0,5,flower,1 → 6フレーム |
Kinoko | 4 | なし(0 と記入) | Kinoko,0,0,#mushroom |
Wheat、Rice | 5 | 必須、2フレーム:実った状態、そして収穫後 | Wheat,0,5,wheat,2 → 7フレーム |
Tree、TreeFeywood | 5(最初の2ステージはフレーム0を共有)、2行分の高さ | 任意、幹の上に描画 | Tree,0,5,apple,3 → 6フレーム × 2行 |
Weed | 5フレーム。3番目がメニューで使われる画像です | — | Weed,0 |
Deco、TreeCoralwood | フレームはバリアントで、ステージはありません | — | Deco,0 |
harvestThingは手に入るアイテムです(アイテムID、またはそのカテゴリのランダムなアイテムを表す#category)。maxCountは一度に手に入る最大数です。- メニューのアイコンは自動で選ばれます:樹木はフレーム2、それ以外の植物は収穫フレームがあればそれ、なければ成熟ステージです。
- 樹木には
_idRenderData=obj_LV、_tileType=Tree、valType=Growthが必要です。小さな作物や雑草はobj_S flatを使います。 - ストリップが短すぎる場合は、足りないステージが空白になるだけです。あなたのアートが他のModのセルにはみ出すことはありません。
作物に必要なその他の列は タイルシート を参照してください。
雪
雪用のアートは、タイルが雪に覆われているあいだ通常のアートの上に重ねて描画されます。そのため _snow.png のないタイルは、冬でも通常の見た目のままです。
- Block:積雪版が欲しい場合は
<alias>_snow.png(柱の行も含めて同じサイズ)を追加してください。 - Floor:屋外の床は、行の
tagにnoSnowがない限り、降雪中は雪の床に差し替えられます。_snow.pngが意味を持つのは、表示され続ける床だけです。 - Obj:オブジェクトは冬も見た目が変わらないので、雪用ファイルは省略して構いません。
snowTileが 0 より大きい Obj 行は、逆に雪の下では非表示になります。
リアルタイム編集
タイルの PNG も他の差し替えと同様、ファイルが変わると再読み込みされます。ゲームの実行中に画像サイズを変更しないでください:領域は起動時に確保されているため、大きくしたファイルは再起動するまで隣のセルにはみ出してしまいます。