周暐倫 · Terry

cyclepact

進行中

用 Godot 4 打造的回合制收集養成 RPG,以資料驅動架構承載 500 隻精靈,並用 OpenAI Images API 自動化美術產線(開發中)。

專案概述

個人開發中的回合制劇情向收集養成 RPG:玩家與精靈締結「盟約」取代捕捉,世界困於不斷重置的「輪迴」。技術核心是資料驅動架構——500 隻精靈以 24 份地區 JSON(19 欄 schema)為單一真實來源,Godot 端 autoload 載入並建索引(依屬性/地區/搜尋)。已可遊玩的垂直切片包含可走動 overworld、草叢遇敵、回合制戰鬥(屬性相剋 + Gen3 能力值/個體值/努力值公式 + 三系時間機制)、盟約捕捉、隊伍與自動存檔、500 隻圖鑑瀏覽。美術改用 OpenAI Images API 腳本化批量生成,目前正進行像素風格轉向。專案仍在開發中:核心遊戲循環已成形,劇情多周目與全套美術素材為後續軌。

關鍵亮點

  • 資料驅動設計:500 隻精靈以 24 份地區 JSON(19 欄 schema)為權威來源,Godot autoload(MonsterDB)在執行時載入並建立 by_type/by_region/search 索引;圖鑑 Markdown 與遊戲內容皆由同一份 JSON 衍生,避免設定與程式各自漂移。
  • 以 await 協程實作的回合制戰鬥狀態機:處理屬性相剋、Gen3+ 傷害與能力值公式、狀態異常/能力階級、自創「時間三系」機制(再行動、快照、無視防禦),以及盟約捕捉與換精靈;戰鬥中刻意隱藏屬性以提高難度。
  • 腳本化 AI 美術產線:build_manifest.py 由 docs/data 產出生成清單,gen_assets.py 呼叫 OpenAI Images API(gpt-image-1.5,透明背景)依地區批量出去背 PNG,內建成本概估/確認、並發與速率節流、進度條與 skip-existing;零手動後處理。
  • 務實的範圍取捨:先做出可走動 overworld → 草叢遇敵 → 回合制戰鬥 → 捕捉/存檔 → 圖鑑的完整可玩切片,未生成素材以程式色塊佔位,確保專案任何階段都能直接 F5 執行,劇情多周目與全美術留待後續軌。

技術棧

Godot 4C#GDScriptPythonOpenAI APIPillowJSON

挑戰與取捨

最大的挑戰是讓「設定集規模」與「可執行遊戲」不脫鉤:500 隻精靈、24 區、18 屬性的龐大設定若用硬編碼會難以維護,因此選擇以地區 JSON 作單一真實來源,讓 Godot autoload 在執行時載入建索引,圖鑑文件也由同份資料衍生。戰鬥端要在 Godot 用 await 協程把「選招→依序行動→狀態/機制結算→勝負」寫成可讀的狀態機,並正確還原 Gen3 的能力值/個體值/努力值與傷害公式,還要疊上自創的時間三系機制。美術上採務實取捨:不等素材到齊就先用程式佔位讓核心循環隨時可玩,並把美術外包給 OpenAI Images API 腳本化產線(含成本估算、並發與速率節流),近期再評估並決定轉向像素風(含整數除數降採樣、調色盤量化與第三方 CC0 地磚萃取)。專案仍在開發中,核心循環已成形,劇情多周目為後續軌。