從零元開始的電遊設計|第三階段 系統思維|08 資料與行為分離:避免寫出無法維護的遊戲

更新 發佈閱讀 7 分鐘
raw-image


在上一篇,我們談了「狀態機」—讓角色不再亂跑、亂跳、亂攻擊。

但當你開始寫更多角色、更多敵人、更多物件時,你會遇到另一個經典問題:


為什麼我改一個數值,整個遊戲都壞掉?


你想讓角色跑快一點,結果攻擊動畫變快;

你想讓敵人血量變高一點,結果掉落物也跟著壞掉;

你想調整跳躍高度,結果整個物理都崩潰。


這不是你不會寫程式。

這是你缺少遊戲開發裡另一個關鍵概念:


資料與行為分離(Data–Behavior Separation)。


一、什麼叫「資料」?什麼叫「行為」?


這兩個詞聽起來很抽象,但其實非常簡單。


資料(Data)=數值、設定、屬性


例如:

- 移動速度

- 跳躍高度

- 血量

- 攻擊力

- 重力

- 冷卻時間

- 掉落機率


這些都是「資料」。


行為(Behavior)=角色如何使用資料


例如:

- 移動邏輯

- 跳躍邏輯

- 攻擊邏輯

- AI 決策

- 物理反應

- 狀態轉換


這些是「行為」。


二、初學者最常犯的錯誤:把資料寫死在行為裡


例如:


```gdscript

velocity.x = 200

jump_force = -450

if health <= 0:

die()

```


這些數字看起來沒問題,但它們有一個致命缺點:


你永遠不知道哪裡用了它們,也不知道改了會影響什麼。


結果就是:


- 你改速度 → 跳躍壞掉

- 你改血量 → 敵人 AI 壞掉

- 你改攻擊力 → UI 顯示錯誤


因為資料散落在程式碼裡,行為又依賴這些資料,

你就會寫出一個「改一個地方壞三個地方」的遊戲。


三、資料與行為分離的核心:資料是資料,行為是行為


資料應該:


- 放在一個地方

- 清楚命名

- 可以被調整

- 不會影響邏輯


行為應該:


- 讀取資料

- 使用資料

- 不修改資料本身


這樣你就能:


- 改速度不會影響跳躍

- 改血量不會影響 AI

- 改攻擊力不會影響 UI


因為資料是獨立的,行為只是「使用」資料。


四、資料應該放在哪裡?


這取決於你的遊戲規模,但原則很簡單:


1. 小型遊戲:資料放在節點上(export 變數)


```gdscript

@export var move_speed = 200

@export var jump_force = -450

@export var max_health = 100

```


優點:


- Godot Inspector 可以直接調整

- 不用寫額外系統

- 清楚、直觀


2. 中型遊戲:資料放在 Script Resource


例如:


```

PlayerStats.tres

EnemyStats.tres

WeaponStats.tres

```


優點:


- 多個角色可以共用資料

- 修改一次,全遊戲更新

- 不會散落在程式碼裡


3. 大型遊戲:資料放在資料庫或 JSON


例如:


```

player.json

enemy.json

weapons.json

items.json

```


優點:


- 可以批次調整

- 可以用工具編輯

- 可以做版本控制


五、行為應該怎麼寫?


行為不應該寫死數值,而是:


- 從資料讀取

- 使用資料

- 不修改資料


例如:


```gdscript

velocity.x = input_direction * stats.move_speed

```


或:


```gdscript

if is_on_floor() and Input.is_action_just_pressed("jump"):

velocity.y = stats.jump_force

```


這樣你就能:


- 調整數值不會破壞邏輯

- 角色之間只差資料,不差程式

- 敵人可以共用同一套 AI

- 武器可以共用同一套攻擊邏輯


六、資料與行為分離的最大好處:可維護性


當你做到資料與行為分離,你會得到:


1. 角色可以快速調整

你想讓角色跑快一點?

改一個數字就好。


2. 敵人可以快速複製

你想做三種敵人?

複製資料就好。


3. 武器可以快速平衡

你想調整攻擊力?

改資料就好。


4. 程式碼不會變成屎山

因為行為不會被數值綁死。


5. 你不會害怕改東西

因為你知道改資料不會破壞邏輯。


七、資料與行為分離的常見誤區


誤區 1:把資料放在行為裡

(例如:`velocity.x = 200`)


誤區 2:把行為放在資料裡

(例如:在 JSON 裡寫 `"attack": "play_animation('slash')"`)


誤區 3:資料太分散

(角色速度在這裡,跳躍高度在那裡)


誤區 4:資料沒有命名

(`var a = 200` 這種東西會讓你未來想死)


八、今天的結論:資料與行為分離,是遊戲能不能長大的關鍵


如果你只做一個小遊戲,你可能感覺不到差別。

但只要你開始:


- 多一個角色

- 多一個敵人

- 多一個武器

- 多一個關卡


你就會發現:


資料與行為分離,是遊戲能不能維護、能不能擴充、能不能活下去的關鍵。


資料是資料。

行為是行為。

兩者分開,你的遊戲就能長大。


留言
avatar-img
瑠雅澄華音的沙龍
3會員
27內容數
以下空白。
2026/02/05
第二階段,我們把「互動」建立起來: 玩家能輸入、遊戲能回應、角色能動起來。 但只要你開始做角色控制,你一定會遇到一個經典問題: 角色到底在幹嘛?為什麼會亂跑、亂跳、亂攻擊? 你按攻擊,他卻還在跑步動畫;  你按跳躍,他卻在攻擊後作用力中;  你按互動,他卻在空中做奇怪的
Thumbnail
2026/02/05
第二階段,我們把「互動」建立起來: 玩家能輸入、遊戲能回應、角色能動起來。 但只要你開始做角色控制,你一定會遇到一個經典問題: 角色到底在幹嘛?為什麼會亂跑、亂跳、亂攻擊? 你按攻擊,他卻還在跑步動畫;  你按跳躍,他卻在攻擊後作用力中;  你按互動,他卻在空中做奇怪的
Thumbnail
2026/02/04
在上一篇,我們談了「輸入」——玩家的意圖如何被遊戲理解。 但輸入只是互動的一半。 另一半,是遊戲如何回應玩家。 這篇我們要談的,就是遊戲裡最容易被忽略、卻最能讓遊戲「有手感」的東西: 回饋(Feedback)。
Thumbnail
2026/02/04
在上一篇,我們談了「輸入」——玩家的意圖如何被遊戲理解。 但輸入只是互動的一半。 另一半,是遊戲如何回應玩家。 這篇我們要談的,就是遊戲裡最容易被忽略、卻最能讓遊戲「有手感」的東西: 回饋(Feedback)。
Thumbnail
2026/02/03
在前幾篇,我們已經把遊戲世界的「心跳」建立起來,也讓角色能夠在世界裡存在、更新、變化。  但遊戲如果只有世界自己動,玩家卻什麼都不能做,那就不是遊戲,只是動畫。 互動的誕生,就是從「輸入」開始。 今天我們要談的不是按鍵名稱、不是 API、不是「按 A 跳躍」這種教科書式的東西。
Thumbnail
2026/02/03
在前幾篇,我們已經把遊戲世界的「心跳」建立起來,也讓角色能夠在世界裡存在、更新、變化。  但遊戲如果只有世界自己動,玩家卻什麼都不能做,那就不是遊戲,只是動畫。 互動的誕生,就是從「輸入」開始。 今天我們要談的不是按鍵名稱、不是 API、不是「按 A 跳躍」這種教科書式的東西。
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
一款遊戲的開發,肯定伴隨大大小小的修改和調整。 創作者不能怕改。但問題是,改東西需要花時間。一些看似簡單的改動,背後程式邏輯可能要好幾天,甚至幾星期才能修正。 對於不懂程式的人,有時很難判斷東西好不好修。所以今天就來說一下,對程式來說什麼樣的修正會令我們頭痛呢?   先以一個草莓奶油蛋糕為例
Thumbnail
一款遊戲的開發,肯定伴隨大大小小的修改和調整。 創作者不能怕改。但問題是,改東西需要花時間。一些看似簡單的改動,背後程式邏輯可能要好幾天,甚至幾星期才能修正。 對於不懂程式的人,有時很難判斷東西好不好修。所以今天就來說一下,對程式來說什麼樣的修正會令我們頭痛呢?   先以一個草莓奶油蛋糕為例
Thumbnail
在劇本還在慢慢醞釀時期,遊戲類型還在思考... 想著開發如心動回憶類型... 但若只是單純的選項,過過劇情,似乎有點單調無趣 所以就思索著,要不也乾脆導入橫向走路的玩法,後續搞個紙娃娃 所以先畫了三視圖、也把Spine 重新拿出來耍一耍練練手... 這樣似乎會有趣點,再想想光角色走來走去過劇情,解個
Thumbnail
在劇本還在慢慢醞釀時期,遊戲類型還在思考... 想著開發如心動回憶類型... 但若只是單純的選項,過過劇情,似乎有點單調無趣 所以就思索著,要不也乾脆導入橫向走路的玩法,後續搞個紙娃娃 所以先畫了三視圖、也把Spine 重新拿出來耍一耍練練手... 這樣似乎會有趣點,再想想光角色走來走去過劇情,解個
Thumbnail
2022年底,見了業界內幾位大神,還有幾位傳奇人物 一直想好好搞遊戲,礙於現實面 一直沒有時間跟勇氣執行 於是乎 整理了一些教學小作品後 在play商店先上架 小六壬 猜拳 俄羅斯方塊 也在短時間內,交出一個小DEMO後 想想累積十幾年的能量 也該是從學術,教育者 回歸本心初衷... 這些年來,還
Thumbnail
2022年底,見了業界內幾位大神,還有幾位傳奇人物 一直想好好搞遊戲,礙於現實面 一直沒有時間跟勇氣執行 於是乎 整理了一些教學小作品後 在play商店先上架 小六壬 猜拳 俄羅斯方塊 也在短時間內,交出一個小DEMO後 想想累積十幾年的能量 也該是從學術,教育者 回歸本心初衷... 這些年來,還
Thumbnail
你家小大人是否一樣聽到「馬桶」兩個字,會立馬反射說「不用」或是逃得無影無蹤的呢!學習使用小馬桶是每個小大人成長過程中必經的路程,除了要教導控制的能力外,也是考驗所有大人們的耐心與毅力呢!   
Thumbnail
你家小大人是否一樣聽到「馬桶」兩個字,會立馬反射說「不用」或是逃得無影無蹤的呢!學習使用小馬桶是每個小大人成長過程中必經的路程,除了要教導控制的能力外,也是考驗所有大人們的耐心與毅力呢!   
Thumbnail
交換彼此看到的風景,一起創造改變 再好的願景都必須要有伯樂一同打造,只是下一步該怎麼踏出去? 不只把事情做好,還要好玩,而遊戲化的方式最容易讓人入門且養成習慣,這也是【恆毅力的七堂課】中提到的「迷人的魅力」!
Thumbnail
交換彼此看到的風景,一起創造改變 再好的願景都必須要有伯樂一同打造,只是下一步該怎麼踏出去? 不只把事情做好,還要好玩,而遊戲化的方式最容易讓人入門且養成習慣,這也是【恆毅力的七堂課】中提到的「迷人的魅力」!
Thumbnail
稍早「台北國際電玩展」釋出展場平面圖,過去只要看展場平面圖就能知道本屆精不精彩,現在因為手遊崛起的緣故,感覺「台北國際電玩展」都可以改成「台北手遊電玩展」了。雖說疫情之下能有展覽可以參加是很幸福的事,但不得不說,「台北國際電玩展」的品質已不復過往。
Thumbnail
稍早「台北國際電玩展」釋出展場平面圖,過去只要看展場平面圖就能知道本屆精不精彩,現在因為手遊崛起的緣故,感覺「台北國際電玩展」都可以改成「台北手遊電玩展」了。雖說疫情之下能有展覽可以參加是很幸福的事,但不得不說,「台北國際電玩展」的品質已不復過往。
Thumbnail
《迷霧國度:傳承》最新開發進度,這禮拜除了與大家聊聊試玩版的狀況外,還有新角色、新場景要分享給你。喜歡回合制戰棋和美式RPG的朋友,歡迎來看看唷。
Thumbnail
《迷霧國度:傳承》最新開發進度,這禮拜除了與大家聊聊試玩版的狀況外,還有新角色、新場景要分享給你。喜歡回合制戰棋和美式RPG的朋友,歡迎來看看唷。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News