遊戲物理,粵音:jau4 hei3 mat6 lei5,係指遊戲程式用某啲法則嚟模擬現實世界嘅物理:除咗互動式小說等極少數嘅類型之外,電子遊戲幾乎實會有某啲型式嘅虛擬空間,畀玩家控制某啲角色喺入面郁動,所以遊戲嘅世界多數都或多或少要有啲法則主宰物件應該點郁,而更新遊戲世界狀態嘅過程當中,遊戲程式要按遊戲嘅物理法則同埋玩家輸入,計算出個世界嘅狀態應該要點變。
例如有隻賽車遊戲,用近似牛頓力學噉嘅法則嚟處理啲車輛嘅郁動,玩家撳咗踩油嘅掣嗰陣,遊戲程式就要改變玩家控制緊嗰架車嘅加速度嘅值,而架車相應嘅速度同位置等變數,亦要跟牛頓力學裏面嘅法則作出相應嘅改變。
力學模擬
例如以下呢段用 C 程式語言寫嘅源碼,可以用嚟模擬喺牛頓第二定律下郁動嘅物體:
double t = 0.0;
float dt = 1.0f;
float velocity = 0.0f;
float position = 0.0f;
float force = 10.0f;
float mass = 1.0f;
// 設一大拃變數,包括咗時間點 t、時間間隔 dt、速度 velocity、位置 position、件物體受嘅力 force、同件物體嘅質量 mass。
while ( t <= 10.0 ) // 重複噉計若干次,計到時間點係 10 為止。
{
position = position + velocity * dt;
velocity = velocity + ( force / mass ) * dt; // 用牛頓第二定律計吓件物體受嘅力同佢嘅質量會點影響佢嘅速度。
t += dt;
}
碰撞探測
碰撞探測係一類演算法,用嚟探測個虛擬世界內部有冇邊對物件相撞。
碰撞探測要點樣最佳化,係一條大問題:最直接嘅做法,段演算法可以將所有物體可能配對遂對遂對攞嚟睇,但噉做嘅運算複雜度會好高—較有效率嘅做法,可能係將遊戲空間入面啲物件全部睇做長方體,排除邊對邊對物體冇可能係相撞緊噉。
碰撞探測嘅概念:
- 命中框,hitbox:遊戲空間入便對應某個角色或者某件物件嘅空間,如果有子彈同某件物件嘅命中框碰撞,遊戲程式就會當呢一粒子彈打中咗嗰件物件;喺玩家對打嘅射擊遊戲中,體型較大嘅角色,命中框會大啲,令佢哋比較容易畀敵人打中,但同時佢哋血量又好多時會高啲,所以比較能夠承受攻擊。
- 傷害框,hurtbox:指某個攻擊,例如以子彈等嘅物件代表,嘅命中框,一下攻擊嘅傷害框要同目標嘅命中框碰撞,先可以對個目標造成傷害。
數學概念
處理遊戲物理嘅演算法,要計好多數,時會用到呢啲數學概念:
文獻
- Szauer, G. (2017). Game Physics Cookbook (PDF). Packt Publishing Ltd.
文字来自维基百科,CC BY-SA 4.0 · 来源条目