DNAXCAT Town —— 開發企劃(喵幣版 v1.3) 
版本:v1.3(整合論壇 SSO+喵幣+UGC+土地交易) 
平台:Web(桌機優先,行動相容) 
角色:產品/前端/後端(雲端)/UI&美術/QA 
 
 1) 產品定位與差異化 
**願景**:輕量 2D 建鎮社交遊戲,玩家購地→蓋屋→室內佈置→展示與聊天。 
**差異化特色** 
 � 與 **論壇共用帳號(SSO)**,暱稱/頭像同步;停權可聯動。 
� **喵幣**為唯一消費貨幣,**只能透過聯繫官方購買**並由後台結算入帳(無前端充值)。 
� **UGC 家具商城**:玩家上傳自製家具→官方審核→上架販售;**創作者 1% 喵幣分潤**。 
� **土地市場**:玩家可上架轉售地塊,**自訂售價與介紹**,成交後地塊、房屋、室內擺設一併過戶。 
**核心循環**:取得喵幣 → 購地/買家具 → 佈置 → 展示/社交 → 促成再消費與創作。 
 
2) 現況(雛型已完成) 
� 前端:Phaser 3(CDN),單檔原型 `index.html`。 
� 場景:`TownScene`(小鎮)、`HouseScene`(室內)。 
� 功能:WASD、E 購地、Enter 泡泡聊天;室內 12×8 
格佈置(椅/桌/床),放置/刪除/旋轉;回鎮落在門口;localStorage 存檔。 
 
3) 範圍(MVP → Beta) 
**MVP** 
 1. 論壇 SSO(共用帳號) 
2. 喵幣體系(僅官方結算補值) 
DNAXCAT Town — 開發企劃(喵幣版 v1.3)    第 1 頁 
3. 雲端保存(購地/房屋/佈置/餘額) 
4. 官方商店(扣喵幣、入庫後可擺) 
5. 基礎聊天(Realtime,節流/過濾) 
 
**Beta** 
 � UGC 家具(創作者中心、審核台、1% 分潤) 
� 土地市場(上架/瀏覽/成交/過戶、交易歷史) 
� 佈置 UX(紅/綠格提示、連續放置、撤銷/重做) 
� 社交擴充:拜訪他人房、留言、表情 
� 監控儀表與內容擴充 
 
4) 體驗流程(重點) 
� **小鎮**:WASD;E 購地;點房屋進室內;返回落在門口;HUD 顯示**喵幣餘額**。 
� **室內**:12×8 格;[1][2][3] 選家具;左鍵放置/右鍵刪除/R 旋轉/B 
返回;接雲端後僅可放置擁有家具。 
� **商店**:縮圖/尺寸/價格/說明/創作者標章;餘額不足灰階;「如何取得喵幣?」→ 論壇工單。 
� **UGC**:上傳素材、設定占格與建議價→送審;狀態:草稿→審核中→已上架/退回(含原因)。 
� **土地交易**:賣家上架(售價+介紹),買家以喵幣購買;成交後**地塊/房屋/擺設**一併過戶。 
 
5) KPI(示例) 
D1/7 留存、付費率、喵幣 ARPPU、UGC 上架通過率、土地成交率、佈置完成率、崩潰率。 
 
6) 里程碑與 DoD(摘要) 
� M2.5:SSO+喵幣補值(僅後台結算);餘額跨端一致;`meow_ledger` 可稽核。 
� M4:UGC 交易即 1% 分潤入作者、餘額與金庫正確入帳。 
� M5:土地交易併發安全,過戶完整,交易歷史可查。-- 
Part B — 技術規格(Tech Spec) 
Tech Spec — DNAXCAT Town(MeowCoin) 
 
1) 前端架構 
� **引擎**:Phaser 3(Canvas/WebGL)。 
DNAXCAT Town — 開發企劃(喵幣版 v1.3)    第 2 頁 
� **場景**:`TownScene` / `HouseScene` / `ShopScene` / `ProfileScene` / `CreatorScene` / `MarketScene`。 
� **模組**: 
� `PersistenceAdapter`(Local → Supabase 置換) 
� `GridPlacer`(占格管理:越界/重疊檢查、旋轉) 
� `UI/HUD`(喵幣餘額、提示) 
� `Chat`(Realtime) 
� **效能目標**:60 FPS(桌機),主迴圈單幀 < 12ms。 
 
 
2) 型別(前端) 
type Profile   = { id: string; forum_user_id: string; display_name: string; avatar_url: string; meow_balance: number }; 
 type Plot      = { id: string; x:number; y:number; w:number; h:number; price:number; owner_id?:string|null; house_id?:string|null }; 
 type House     = { id: string; owner_id: string; name: string; x:number; y:number }; 
 type Item      = { id:string; w:number; h:number; price:number; source:'official'|'ugc'; ugc_item_id?:string }; 
 type Inventory = { item_id:string; qty:number }; 
 type Placement = { id:string; house_id:string; owner_id:string; item_id:string; x:number; y:number; rot:number }; 
 3) SupabaseAdapter 介面 
export interface SupabaseAdapter { 
  ensureSession(): Promise<void>; 
  getProfile(): Promise<Profile>; 
  getWorld(): Promise<{ plots: Plot[]; houses: House[]; items: Item[] }>; 
  getHousePlacements(houseId: string): Promise<Placement[]>; 
  getInventory(): Promise<Inventory[]>; 
  getMeowBalance(): Promise<number>; 
  createTopup(amount: number): Promise<{ id: string; status: 'pending' }>; 
  buyPlot(plotId: string, houseName: string): Promise<{ house: House; meow_balance: number }>; 
  buyItem(itemId: string, qty: number): Promise<{ meow_balance: number; inventory: Inventory[] }>; 
  placeFurniture(houseId: string, itemId: string, x: number, y: number, rot: number): Promise<Placement>; 
  removeFurniture(placementId: string): Promise<void>; 
  ugcSubmit(item: { id: string }): Promise<void>; 
  buyItemUGC(ugcItemId: string, qty: number): Promise<{ meow_balance: number; inventory: Inventory[] }>; 
  createPlotListing(plotId: string, price: number, description: string): Promise<void>; 
  cancelPlotListing(listingId: string): Promise<void>; 
  buyPlotListing(listingId: string): Promise<void>; 
 } 
 
 4) 安全與權限 
� 關鍵狀態(喵幣、所有權)僅 RPC 改動;前端只畫 UI。 
� RLS:本人資產可寫,公開資料可讀;Admin RPC 限管理員。 
 
5) 測試與部署 
� **測試**:GridPlacer、Adapter 模擬、RPC 錯誤碼;E2E(購地→進屋→佈置→返回→重整)。 
� **部署**:前端 Vercel/Netlify;後端 Supabase(dev/prod);Sentry+Supabase 日誌。 
DNAXCAT Town — 開發企劃(喵幣版 v1.3)  
 
6) 里程碑 & DoD(技術) 
| 里程碑 | 重點 | DoD | 
 |---|---|---| 
 | M1 佈置 UX | 紅/綠格提示、阻擋、平滑輸入 | 放置不可越界/重疊;60FPS | 
 | M2 商店 | 商品列表/詳頁、餘額顯示、入口文案 | 可購買官方家具(假資料) | 
 | M2.5 SSO+喵幣 | OAuth、topup/ledger RPC、RLS | 無前端充值;結算入帳;跨端一致 | 
 | M3 雲端保存 | 所有動作走 RPC | F12 竄改無效;狀態一致 | 
 | M4 UGC | 上傳/送審/上架;1% 分潤 | 交易即分潤入帳且可稽核 | 
 | M5 土地 | 上架/成交/過戶 | 並發安全;資產完整過戶 |-- 
Part C — 資料庫 & RPC(DB Spec + SQL 摘要) 
 
DB Spec + RPC(喵幣版) 
本節包含:Schema、RLS、觸發器、RPC、索引與驗收。**餘額一律以 meow_ledger 為準**,實際餘額由 
RPC 維持一致。 
1) Schema(建立表與初始資料) 
**詳見同名 .sql 檔**;要點: 
� `profiles`:`meow_balance`、`forum_user_id`;餘額僅能由 RPC 異動。 
� `meow_topups` / `meow_ledger`:官方補值與流水總帳。 
� `ugc_items`:UGC 家具,審核流轉 `draft → pending → published`(或 `rejected`)。 
� `plot_listings` / `plot_trades`:土地上架與成交歷史。 
� `items`:來源 `official|ugc`;UGC 通過後同步到此表。 
� `placements`:室內擺設;過戶時一併轉移 owner。 
 
2) RLS 原則 
� 公開資料可讀;個人敏感/資產資料僅本人可讀寫。 
� 關鍵寫入一律走 RPC(buy_* / place_* / remove_* 等)。 
 
3) RPC 目錄 
� Topup:`create_topup`(玩家)/`admin_settle_topup`(管理員) 
DNAXCAT Town — 開發企劃(喵幣版 v1.3)    第 4 頁 
� 遊戲消費:`buy_plot`、`buy_item` 
 � UGC:`ugc_submit`、`admin_ugc_review`、`buy_item_ugc`(含 1% 分潤) 
� 室內:`place_furniture`、`remove_furniture` 
 � 土地:`create_plot_listing`、`cancel_plot_listing`、`buy_plot_listing`(過戶) 
 
4) 驗收條件(DB/RPC) 
� 任一餘額變動均有 `meow_ledger` 紀錄;**餘額=Σ(delta)**。 
� UGC 交易即時計入**作者 1%** 分潤,平台收入入 `TREASURY`。 
� 土地成交→地塊/房屋/擺設**全部過戶**;雙方餘額正確;有交易歷史。 
� 直接 `update` 被 RLS 阻擋,必須透過 RPC。 
 
 
完整 SQL 參見同資料夾:`DNAXCAT_Town_DB_and_RPC_v1.3.sql 
 
 
 
 
   導出來後還真的可以執行!!!  有喵喵有興趣加入開發團隊嗎? 前後端 |