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

更新 發佈閱讀 7 分鐘
vocus|新世代的創作平台


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

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

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


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

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

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


這不是你不會寫程式。

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

「資料與行為分離(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` 這種東西會讓你未來想死)


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


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

但只要你開始:

- 多一個角色

- 多一個敵人

- 多一個武器

- 多一個關卡


你就會發現:

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


資料是資料。

行為是行為。

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

20260212 Aya一校

留言
avatar-img
瑠雅澄華音的沙龍
5會員
35內容數
以下空白。
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
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
2022年底,見了業界內幾位大神,還有幾位傳奇人物 一直想好好搞遊戲,礙於現實面 一直沒有時間跟勇氣執行 於是乎 整理了一些教學小作品後 在play商店先上架 小六壬 猜拳 俄羅斯方塊 也在短時間內,交出一個小DEMO後 想想累積十幾年的能量 也該是從學術,教育者 回歸本心初衷... 這些年來,還
Thumbnail
2022年底,見了業界內幾位大神,還有幾位傳奇人物 一直想好好搞遊戲,礙於現實面 一直沒有時間跟勇氣執行 於是乎 整理了一些教學小作品後 在play商店先上架 小六壬 猜拳 俄羅斯方塊 也在短時間內,交出一個小DEMO後 想想累積十幾年的能量 也該是從學術,教育者 回歸本心初衷... 這些年來,還
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
一款遊戲的開發,肯定伴隨大大小小的修改和調整。 創作者不能怕改。但問題是,改東西需要花時間。一些看似簡單的改動,背後程式邏輯可能要好幾天,甚至幾星期才能修正。 對於不懂程式的人,有時很難判斷東西好不好修。所以今天就來說一下,對程式來說什麼樣的修正會令我們頭痛呢?   先以一個草莓奶油蛋糕為例
Thumbnail
一款遊戲的開發,肯定伴隨大大小小的修改和調整。 創作者不能怕改。但問題是,改東西需要花時間。一些看似簡單的改動,背後程式邏輯可能要好幾天,甚至幾星期才能修正。 對於不懂程式的人,有時很難判斷東西好不好修。所以今天就來說一下,對程式來說什麼樣的修正會令我們頭痛呢?   先以一個草莓奶油蛋糕為例
Thumbnail
你家小大人是否一樣聽到「馬桶」兩個字,會立馬反射說「不用」或是逃得無影無蹤的呢!學習使用小馬桶是每個小大人成長過程中必經的路程,除了要教導控制的能力外,也是考驗所有大人們的耐心與毅力呢!   
Thumbnail
你家小大人是否一樣聽到「馬桶」兩個字,會立馬反射說「不用」或是逃得無影無蹤的呢!學習使用小馬桶是每個小大人成長過程中必經的路程,除了要教導控制的能力外,也是考驗所有大人們的耐心與毅力呢!   
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
在劇本還在慢慢醞釀時期,遊戲類型還在思考... 想著開發如心動回憶類型... 但若只是單純的選項,過過劇情,似乎有點單調無趣 所以就思索著,要不也乾脆導入橫向走路的玩法,後續搞個紙娃娃 所以先畫了三視圖、也把Spine 重新拿出來耍一耍練練手... 這樣似乎會有趣點,再想想光角色走來走去過劇情,解個
Thumbnail
在劇本還在慢慢醞釀時期,遊戲類型還在思考... 想著開發如心動回憶類型... 但若只是單純的選項,過過劇情,似乎有點單調無趣 所以就思索著,要不也乾脆導入橫向走路的玩法,後續搞個紙娃娃 所以先畫了三視圖、也把Spine 重新拿出來耍一耍練練手... 這樣似乎會有趣點,再想想光角色走來走去過劇情,解個
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News