ワンクリックで
map-scene-drawing
2D 地圖場景動態繪製與 RPGRoom 擴展指南。提供如何使用編輯器、匯出場景 JSON、設定碰撞邊界、NPC 對話、場景傳送門以及離屏 Canvas 預渲染機制的標準化流程。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
2D 地圖場景動態繪製與 RPGRoom 擴展指南。提供如何使用編輯器、匯出場景 JSON、設定碰撞邊界、NPC 對話、場景傳送門以及離屏 Canvas 預渲染機制的標準化流程。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | map-scene-drawing |
| description | 2D 地圖場景動態繪製與 RPGRoom 擴展指南。提供如何使用編輯器、匯出場景 JSON、設定碰撞邊界、NPC 對話、場景傳送門以及離屏 Canvas 預渲染機制的標準化流程。 |
本 Skill 旨在指導開發者或 AI 代理人如何流暢地在專案中新增地圖、房屋、NPC 與對話,並說明動態地圖渲染技術。
地圖開發包含兩個主要部分:
graph TD
A[在 MapDeveloper 繪製地圖] --> B[點擊匯出地圖 JSON]
B --> C[放入 src/pages/RpgRoom/data/ 目錄]
C --> D[設定 src/pages/RpgRoom/data/index.ts 統一匯出]
D --> E[設定 src/pages/RpgRoom/constants/isMove.ts 碰撞]
E --> F[設定 src/pages/RpgRoom/constants/message.tsx 對話]
F --> G[在 RpgRoom 進行測試與遊玩]
/map-developer)。960x640 或 1920x1280,建議為 32 的倍數)。z !== 2): 地板、草地、牆壁、矮樹等角色會在其前方的物件。z === 2): 樹頂、高屋頂、吊燈等角色會在其後方的物件(能遮擋角色)。Alt + 滑鼠左鍵拖曳):
cm 地圖 ID 與 cmm 生成點索引)。e 事件 ID)。000X_map.json (X 為地圖 ID)。mapsJson 陣列中:
import mapX from './000X_map.json'
// ...
export const mapsJson: MapJsonData[] = [
// ...
mapX as MapJsonData,
]
開啟 isMove.ts,比照現有地圖格式加入新地圖資料:
const ISMOVE_000X: MapData = {
map: {
index: X, // 地圖 ID (數字)
name: '地圖區域名稱',
width: 960, // 地圖寬度
height: 640, // 地圖高度
in: [
{ x: 472, y: 580 }, // 傳送生成點 0
{ x: 100, y: 200 } // 傳送生成點 1 (如有)
],
},
isMove: [
// 牆壁碰撞 (阻擋)
{ n: '牆壁', x: 32, y: 32, w: 928, h: 32 },
// NPC 互動觸發 (e 指向對話事件索引,例如 0)
{ n: 'NPC名字', x: 480, y: 352, w: 32, h: 32, e: 0 },
// 傳送門 (cm 指向目標地圖 ID,cmm 指向目標地圖的生成點索引)
{ n: '傳送門', x: 448, y: 640, w: 64, h: 32, cm: 0, cmm: 1 }
]
}
並記得將 ISMOVE_000X 加到陣列尾端:
export const isMoveObject: MapData[] = [
// ...
ISMOVE_000X, // 新增
]
開啟 message.tsx,為新地圖新增 NPC 對話:
const MESSAGE_000X: NpcMessage[] = [
{
name: 'NPC 名字',
text: [
'第一句對話。',
'第二句對話,支持 JSX 標籤,例如:',
<span key="custom">
請按 <kbd className="bg-slate-700 text-slate-100 px-2 py-0.5 rounded text-xs font-mono">ESC</kbd> 觀看說明。
</span>
]
}
]
並加到 messageObject 陣列中:
export const messageObject: NpcMessage[][] = [
// ...
MESSAGE_000X, // 新增,對齊地圖 ID
]
為了確保玩家能順暢地來回不同場景,請務必確認傳送門與生成點(in 座標)是雙向對齊的:
cm 必須設為 目標地圖 ID。cmm 必須設為 目標地圖 in 陣列中對應的生成點索引。x, y 必須是能行走區域,且不可與任何碰撞區重疊(否則玩家傳送後會被卡住)。cm 指回 起點地圖 ID,且 cmm 指回 起點地圖的門口生成點索引。為了保障遊戲能以 60 FPS 流暢度運作,RpgRoom 採用離屏 Canvas 緩存預渲染機制:
rpg_maker_xp.png/rpg_maker_xp2.png。bgOffscreen 與 fgOffscreen),並調整為該地圖大小。bgOffscreen 上先重複繪製 32x32 的重複草地背景。styles:
tile.z !== 2,根據 tile.b 的索引(1 或 2)從對應的拼圖庫擷取切片(利用 drawImage 的 source 和 destination 參數)畫到 bgOffscreen 上。tile.z === 2,以同樣方式將遮罩層繪製到 fgOffscreen 上。requestAnimationFrame 的繪圖循環中,主 Canvas 只需要使用 drawImage 直接將緩存好的離屏背景與前景 Canvas 渲染出來,避免了每幀迭代繪製數千個貼圖所造成的極大效能瓶頸。Godot 遊戲開發循環(匯出、測試、產物 commit)。當需要修改 godot-src/(RPG)或 godot-candy-src/(糖果)的 GDScript/場景/關卡,或要重新匯出 Web build、同步地圖 JSON 時使用。
使用 Google libwebp CLI (`cwebp`) 將 JPG/PNG 圖片批次轉換為 WebP 格式。當需要壓縮圖片、批次轉檔、或將專案圖片統一為 WebP 時使用。
Design intelligence skill providing professional UI/UX knowledge for building production-grade interfaces. Includes design system architecture, token management, color palettes, typography, UX guidelines, and accessibility standards. Adapted for Vue 3 + Quasar + Tailwind CSS v4 stack.
本專案網頁驗證流程(Playwright、hash 路由、Godot iframe、多人對戰)。當需要在瀏覽器中驗證頁面行為、截圖、測 /battle 多人同步、或 Playwright MCP 啟不動時使用。
為 RpgRoom 生成 2D RPG 地圖場景 JSON(房屋外觀、室內房間、布置場景)。當使用者要求新增/修改 RPG 地圖、場景、房間布置、NPC 配置時使用。支援「設計 [長x寬] 的 [風格] 場景,出入口接 [場景名]」參數化需求。
將 2D 俯視場景圖(截圖/AI 繪製稿/手繪 mockup)轉換成 RpgRoom 地圖 JSON。當使用者提供場景圖片並要求轉成遊戲室地圖時使用,例如「根據 [圖片] 製作 [場景名],出入口設置在 [場景2名]」。不符合格式的圖片防呆拒絕執行。