Game Rules Core
與遊戲類型無關的規則,每個遊戲都需要。特定類型的特色邏輯應建構於這些規則之上,不得取代它們。
工作流程
- 確定維度(2D/3D)、類型、攝影機與輸入方案。
- 在編寫程式碼之前定義規則集合:實體、狀態、規則、勝利/失敗條件、邊界案例。
- 使用以下模式進行實作。
- 閱讀
references/collision.md以了解碰撞/物理的具體細節。 - 在專案中產出
RULES.md,列出每一條遊戲專屬規則,以便後續測試。
通用結構
- 遊戲循環:輸入 -> 更新(固定時間步長)-> 碰撞 -> 狀態解析 -> 渲染。物理使用固定時間步長,渲染使用可變時間步長。
- 遊戲狀態:
Boot -> Menu -> Playing <-> Paused -> GameOver/Win -> Menu。每個轉換必須明確,不得有隱式狀態變更。 - 實體:每個實體擁有位置、大小/碰撞體、速度、狀態,以及屬於自己的規則。
- 規則表格:每條規則應寫出
觸發條件 -> 前提 -> 效果 -> 邊界案例。
每個遊戲必須定義的規則
- 勝利條件、失敗條件,以及重啟時發生的事(哪些重置、哪些保留)。
- 分數/進度:如何增加、上限及如何存檔。
- 玩家生命值/命數:傷害來源、無敵窗、死亡處理。
- 生成/銷毀:位置、時機、限制與清理(無洩漏)。
- 難度曲線:哪些項目會隨著時間變化,以及變化速度。
- 輸入:同時輸入、輸入緩衝、按鍵重新綁定、暫停行為。
類型附加規則(選擇適用的)
- 平台遊戲:重力、跳躍高度/可變跳躍、跳躍放寬時間(約100ms)、跳躍緩衝(約100ms)、單向平台、移動平台跟隨、掉落死亡平面。
- 跑酷/無盡遊戲:速度曲線、程序化生成間距確保可通行、種子值以支援重現性。
- 射擊遊戲:射速、子彈存活時間、命中判定、彈藥/換彈。
- 益智遊戲:確定性狀態、復原、可解性檢查。
- 賽車/3D遊戲:檢查點、圈數驗證、防抄捷徑規則、攝影機碰撞。
硬性規定
- 永遠不要將遊戲邏輯綁定到幀率。
- 永遠不要讓實體無定義結果地離開可遊玩邊界。
- 每條規則都應有數值(不要使用「快速」,應使用單位/秒)。
- 隨機性必須可透過種子控制。