
在前兩篇裡,我們談了 if 和 else。
if 是選擇,else 是後果。
這兩個東西讓遊戲世界能「做出反應」。
但遊戲還缺少一個更根本的東西—持續性。
因為遊戲不是靜止的,
也不是你按一下按鈕才動一下的。
遊戲是一個「一直在進行」的世界。
而讓這個世界持續運作的,就是 loop。
loop 不是語法,而是「一直發生」。
很多初學者看到 loop 會想到:
- for
- while
但在遊戲設計裡,loop的本質不是語法,而是:
有些行為不是一次性的,而是每一瞬間都要發生。
這種「持續發生」的節奏,就是 loop。
遊戲世界為什麼需要心跳?
想像一個最簡單的動作遊戲。
- 玩家按住右鍵,角色要一直往右走
- 敵人要一直追著玩家
- 子彈要一直往前飛
- 計時器要一直倒數
- 畫面要一直更新
這些行為都不是「按一下就結束」。
它們是:只要遊戲還在進行,就必須不停地發生。
如果沒有 loop,遊戲世界就像被按下暫停鍵。
角色不會動、敵人不會追、時間不會流動。
沒有心跳的遊戲,就不是遊戲,只是一張圖片。
loop 讓遊戲「活著」。
你可以把 loop 想成遊戲的心跳。
每一次跳動,遊戲世界都會問自己一次:
- 玩家現在有在移動嗎?
- 敵人應該往哪裡走?
- 子彈還在畫面裡嗎?
- 計時器是不是該扣一秒?
- 角色的動畫下一格是什麼?
這些問題不是偶爾問一次,而是每一瞬間都要問。
遊戲的節奏、手感、速度感,全都來自這種持續的更新。
loop + if + else:遊戲行為的鐵三角
到目前為止,我們已經有三個核心概念:
- if:做出選擇
- else:承擔後果
- loop:讓選擇與後果持續發生
把它們放在一起,就能描述遊戲裡幾乎所有基本行為。
例如:
- **如果**玩家按住右鍵,**每一瞬間**都往右移動
- **如果**敵人看到玩家,**每一瞬間**都往玩家靠近
- **如果**子彈還在畫面裡,**每一瞬間**都往前飛
- **如果**時間還沒到,**每一瞬間**都扣時間
- **否則**就停止、失敗、重置、受傷、播放提示
loop 不是讓遊戲「跑起來」的技術,而是讓遊戲「活起來」的節奏。
loop 的三種典型用途(不講語法,只講行為)
一、持續檢查
例如:
- 玩家是否按住某個方向
- 敵人是否靠近
- 角色是否還在空中
- 計時器是否歸零
這些都是「每一瞬間都要確認」的行為。
二、持續更新
例如:
- 角色位置
- 敵人 AI
- 子彈飛行
- 粒子效果
- UI 動畫
這些都是「每一瞬間都要改變」的行為。
三、持續推進時間
遊戲的時間不是自然流動的,而是靠 loop 一格一格推進。
- 動畫播放
- 冷卻時間
- Buff 持續時間
- 倒數計時
沒有 loop,就沒有時間。
loop 是節奏,不是技術
你不需要知道遊戲引擎底層怎麼跑 loop。
你需要知道的是:你正在設計哪些行為是「持續發生」的。
如果你把一個應該持續的行為寫成一次性的,遊戲就會「不自然」。
如果你把一次性的行為寫成持續的,遊戲就會「怪怪的」。
loop 的本質不是技術,而是節奏。
看到這邊也許你會有疑問。
而且應該很多人第一次學遊戲時也會問到:
「遊戲不是一直在跑 loop 嗎?
那跟 for、while 的 loop 有什麼不一樣?」
差別非常大。
for/while 是你叫程式「重複做某件事」。
但遊戲的主 loop 不是你寫的,它是遊戲引擎的心跳。
你不是在控制它,而是它在控制你。
每一次心跳,它會問你:
玩家現在有在移動嗎?
敵人現在要做什麼?
子彈還在飛嗎?
計時器要扣嗎?
你只是把行為掛在這個節奏上。
for/while 是「重複執行一段程式」。
主 loop 是「讓整個遊戲世界持續存在」。
這兩者完全不是同一個概念。
for/while loop:你叫它做,它才做。
你寫一段程式,你告訴它要重複幾次,
它照你的指令跑完就結束,
這是「你控制程式」。
遊戲主 loop:它一直做,你只是插隊。
遊戲自己一直在跳動,
每一跳都會問你一次「你現在要做什麼?」
你只是把行為掛在這個節奏上,
這是「程式控制你」。
本篇小結:
-遊戲不是按一下就動一次的工具,而是一個「持續進行」的世界。 角色在動、敵人在追、時間在流、畫面在更新—這些都靠 loop。
-loop 不是語法,而是節奏。 它讓選擇(if)和後果(else)能夠持續發生,讓遊戲「活著」。
-你不是在寫程式,你是在設計行為的節奏。 而 loop,就是這個節奏的心跳。














