mcpField
L
layer-tilesets

layer-tilesets

github.com/layeraiその他70 回インストール今日更新
リポジトリ

layer-tilesets について

layer-tilesetsは、グリッドの整ったゲームマップを作るアーティスト向けのLayerスキルです。投影法と占有範囲を統一し、複数のエンジン形式へ書き出す方法を説明します。

主な機能

  1. 01タイルの投影法と占有範囲の統一
  2. 02正方形・六角形グリッドへの対応
  3. 03参照画像によるセットのスタイル維持
  4. 04建物の高さと向きの指定
  5. 05エンジン向けタイルセットの出力

活用シーン

  1. 01アイソメトリックな村マップの作成
  2. 02複数マス建物と異なる向きの作成
  3. 03GodotやUnity向けタイルセットの出力

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/layerai/skills --skill layer-tilesets

インストール後、Claude Code で/layer-tilesetsを入力して読み込まれたか確認します。

詳細

レイヤータイルセット

概要

タイルは、隣り合うタイルがあって初めて役に立ちます。わずかに異なる角度で描かれた、あるいはわずかに異なる土台に立つ、美しいアイソメトリックの家が2軒あっても、1つのマップ上には並べられません。プロンプトの表現を工夫しても解決できません。Layer は説明ではなく構造で解決します。execute_forge の tile_grid は、固定グリッドのブロックアウト上に各タイルを描画し、その後タイルを切り出してグリッドに合わせます。これにより、セット内のすべてのタイルが同じ投影とフットプリントを共有します。

このスキルでは、グリッド上に配置されるタイル(アイソメトリックのひし形、六角形、整列したトップダウンのセル)を扱います。草や石のように端から端まで繰り返される平面はテクスチャです。layer-textures の説明に従って、tileability を使用してください。生成の仕組み、費用のゲート、ポーリングについては layer を参照してください。

ここで名前が挙がっている関連スキルが利用可能なスキルに見当たらない場合は、ユーザーにインストールを依頼してください(npx skills add layerai/skills --skill <name>)。無人で進める場合は、ツールのスキーマに基づいて作業を続け、該当スキルがないことを明記してください。

クイックリファレンス

目的使用方法
グリッド上に描画するモデルlist_base_models で filter.capabilities: {tile_grid: true} を指定し、最初の結果を使用します
アイソメトリックのひし形タイルtile_grid.shape: "SQUARE"(デフォルト)、向きは DIAMOND(デフォルト)
トップダウンの正方形マップshape: "SQUARE"、orientation: "ALIGNED"
六角形タイルshape: "HEXAGON"、orientation: "POINTY_TOP"(デフォルト)または "FLAT_TOP"
クラシックな2:1のアイソメトリック表示elevation を未設定にすると、正方形では30(2:1のディメトリック)です。最大60を設定できます。六角形では未設定時に60です
地面タイルと建物平坦な地面には height: 0、建物には約1~2(セルの辺を単位とする)
複数セルの建物footprint_width x footprint_depth。各辺は1~8セルです。1セルを占める六角形では未設定のままにします
同じ建物の別の面facing は0、90、180、270(正方形のみ。六角形の向きは0)
出力されるセルのサイズtile_width はピクセル単位です。未設定の場合、描画サイズを最も近い2のべき乗に丸めます
既存のアセットをタイルとして描き直すそのアセットを init_image として添付します。形状とデザインは維持されます
セットの外観や向きを引き継ぐ承認済みのタイルを reference_image として添付します
固定キャンバス上のタイルcanvas: "FIXED" と anchor: "BASE" を指定して output_fit を使用します
エンジンへのインポートengine に TILED、GODOT、UNITY、JSON のいずれかを指定して export_tileset を使用します

グリッドを最初に固定する

グリッドはセットの基準です。すべてのタイルが同じ tile_grid を共有し、タイルごとに変わるのはフットプリント、高さ、向きだけです。最初の実行前に shape、orientation、elevation、light_from、tile_width を決めて書き留め、後続のすべての実行で同じ値を渡してください。途中で elevation や tile_width を変更するとタイルが揃わなくなり、light_from を変更するとマップ上で影が両方向に落ちることになります。

light_from(カメラから見た左または右)はデフォルト値があるため、忘れやすい項目です。それでも明示し、プロンプトの照明に関する表現をその値と一致させてください。

プロンプトで指定する内容

グリッドが投影と配置を処理するため、プロンプトでは対象とセットの表現ルール、つまり素材、配色、時代、ディテールの度合い、輪郭の処理に文字数を使います。タイル上にあるものだけを説明してください。セルの外の風景、地平線、隣接する建物は、切り抜きの邪魔になります。

タイルを1つ承認し、それをすべての同系タイルに reference_image として添付して、配色とレンダリングを引き継がせます。数か月にわたって増やしていくセットでは、参照セットをトレーニングします(layer-reference-sets)。

向き

四方から見た建物は、facing を 0、90、180、270 にした4回の実行で生成します。まず facing 0 を生成して承認します。次に、承認済みのタイルを reference_image として添付して、残り3方向を実行します。これにより「同じ建物を別の向きから見たもの」になります。これがないと、フットプリントだけが同じで別々の建物が4つ生成されます。向きを指定できるのは正方形のセルのみです。

export_tileset は、同じ対象の向きをその対象名に続けて命名し(tower_0、tower_90)、対象と向きをタイルのプロパティとして記録します。

納品

マップの仕上げには export_tileset を使います。決定論的なファイル操作で、Creative Units は不要です。各タイルはグリッド上の位置に配置されます。リストの順序で最大128個の file_ids を渡します。すべてのタイルで同じグリッドを使う必要があります。

enginezip の内容
TILED.tsx タイルセット、タイルごとの画像、およびサンプルの .tmx マップ
GODOT1つのアトラスを使った Godot 4 TileSet .tres
UNITY1つのアトラスと、ピボット付きスプライトに分割する .meta
JSONPixiJS、Phaser、Cocos 向けの1つのアトラスと TexturePacker JSON(hash)

zip には、インポート手順とマップに必要なグリッド設定を記載した README が含まれます。padding はアトラス上の透明な余白を設定します。TILED では無視されます。

エンジンへのインポートではなく1枚のシート画像を求められた場合は、pack_sprite_sheet を使います。すべてのフレームが tile_grid タイルであれば、フレームをアンカー(タイルが立つセルの下辺中央)に合わせて配置し、cell_width と cell_height を無視して、各フレームの矩形と Unity のピボットを返します。同じサイズの単体スプライトとして納品するタイルでは、FIXED キャンバスと anchor: "BASE" を指定した output_fit により、すべてのタイルの底辺を同じ位置に揃えます。tile_grid なしの BASE は拒否されます。

使用例

「Godot 向けのアイソメトリックな中世の村のタイルセット:草地、土の道、水面の地面タイル、四方から見た 2x2 の家、1x1 の見張り塔。」

  1. filter.use_case: "text_to_image" と filter.capabilities: {tile_grid: true} を指定して list_base_models を実行します。最初の結果を選び、トリガーワードがあれば get_base_model を実行します。
  2. セット全体でグリッドを固定します。 {shape: "SQUARE", orientation: "DIAMOND", light_from: "left", tile_width: 128}。2:1 のディメトリックでは elevation を未設定にします。
  3. 最初に草地を生成します。height: 0、footprint_width: 1、footprint_depth: 1 とし、プロンプトでは素材、配色、輪郭のみを指定します:「手描きの草地タイル、落ち着いた緑、柔らかな濃色の輪郭」。1つ承認し、以降のすべての実行で reference_image として使います。
  4. 道と水面:同じグリッド、height: 0、承認済みの草地を添付します。
  5. 家の facing 0:footprint_width: 2、footprint_depth: 2、height: 1.5。承認してから、90、180、270 の向きを生成し、それぞれに承認済みの家を reference_image として添付します。
  6. 見張り塔:1x1、height: 2。見た目を合わせるため、草地を添付します。
  7. ステップ3の前に、作業の料金を見積もります。種類ごとに個別に料金を見積もれる1回分の実行(地面タイル、家、塔)について estimate_forge_price を実行し、個数分を合算して、20 CUs を超える場合はユーザーに確認します。各実行を開始し、返された poll_interval_seconds に従って get_forge_run をポーリングします。
  8. engine: "GODOT" と、リスト順の承認済み file_ids を指定して export_tileset を実行します。ダウンロードリンクを渡し、README に記載されたグリッド設定を案内します。

よくある間違い

  • tile_grid を指定せずにモデル実行のプロンプトに「isometric」と書き、タイルがスナップすると期待する。
  • セットの途中で elevation、tile_width、orientation、light_from を変更する。
  • 承認済みの facing 0 を reference_image として添付せずに、facing 90 から 270 を生成する。
  • facing が 0 のみの六角形に facing を設定する。
  • タイルの周囲の風景(地平線、隣接するオブジェクト、セルの外まで続く地面)をプロンプトで指示する。
  • 平坦な反復面に tile_grid を使ったり、グリッド上に配置するタイルに tileability を使ったりする。
  • ユーザーがエンジンにタイルセットとしてインポートできるものを求めているのに、まとめたシートを渡す。

コメント