功能
棋盤現在可以即時改名和換標誌
棋盤上的任何一格都可以獲得新名稱和新標誌,並且改動會立刻抵達所有正在進行的對局——無需部署,也無需重啟。

通俗版
opolyx 棋盤上的四十個格子過去寫死在程式碼裡。改動其中一個就意味著改程式碼、走評審、再部署——這讓任何季節性、推廣性乃至純粹修錯的調整都變得遠比應有的成本高。
現在可以在管理後臺為任意一格設定名稱和標誌,改動立即生效——包括正在進行中的對局。它會抵達 opolyx 線上執行的每一處:網站、合作平臺上的嵌入版本,以及用來生成精彩片段的回放。
遊戲本身沒有任何變化:價格、租金、顏色組和所有規則都保持原樣。變的只是一格叫什麼名字、用什麼標誌,僅此而已。
可下載的離線版本仍保留自帶的棋盤,因為它沒有可供獲取資料的連線。
技術細節
這之所以行得通,關鍵在於名稱與標誌是在哪裡解析的。棋盤本身是程式碼,並且繼續是程式碼——遊戲伺服器從不從資料庫讀取它,因此遊戲邏輯毫髮無損,舊對局的回放也依舊正確。而名稱與標誌是在渲染時解析的,所以一份全域覆蓋對映就足以一次性抵達所有介面。
ts
// lib/board/overrides.ts — render-time resolution, engine untouched
export function useFieldName(slug: string, fallbackKey: string): string {
const overrides = useBoardOverrides(); // provider, fetched once per page
return overrides[slug]?.name ?? t(fallbackKey); // else the translated default
}儲存端是一張可公開讀取的小表,外加一個存放上傳圖片的公開儲存桶。讀取是開放的,因為棋盤本來就是公開的;寫入只允許服務角色,並且是透過撤銷預設權限來強制實現,而不是依賴某條策略——這正是此前三次資料庫遷移教給我們的同一課。
由於覆蓋屬於渲染層面的事,而不屬於對局狀態,進行中的比賽會在下一次重繪時自動採用它們。無需遷移線上對局狀態,無需重啟,同一房間裡的玩家之間也不會出現版本偏差。
