物件生成
閱讀設定
(由生成地點跳轉過嚟)
廿一世紀初嘅電子遊戲廣泛噉採用物件導向編程(OOP)嘅技巧:遊戲程式會將遊戲世界當做由好多嚿物件(object)組成,每嚿物件都有一拃特性,例如响一隻射擊遊戲裏面「玩家角色」呢嚿物件會有生命值同埋「手上揸住啲咩武器」噉嘅一拃特性;呢啲咁多唔同物件要喺遊戲世界當中郁動以及互動,令到遊戲得以進行;喺遊戲開始嗰陣,遊戲程式通常就要將呢啲物件產生喺遊戲世界嘅特定位置度[3]。
因為物件生成咁常用,主流遊戲引擎嘅手稿語言(簡化講,係專俾人喺遊戲引擎度寫程式嘅語言)都索性整埋專化嘅陳述式嚟做呢樣工作,例如 Unity C# 嘅 Instantiate
就相當出名[4]。
主要功能
[編輯]睇埋:物件導向編程
- 生成(spawn):物件生成嘅基本;生成通常嘅做法係,遊戲程式寫成指明件物件屬咩類別,然後指定嚿物件要出現喺遊戲世界嘅邊個位置,跟住嚿物件就會按照佢內部嗰啲程式碼嚟行事;例如係喺 Unity C# 手稿裏面會有以下噉嘅碼[4]:
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Transform prefab; // 俾用家指定嚿物件嘅位置、旋轉同要縮放幾多倍。 void Start() // 開始嗰陣... { for (int i = 0; i < 10; i++) // 重複以下工作 10 次... { Instantiate(prefab, new Vector3(i * 2.0F, 0, 0), Quaternion.identity); // 指定位置同旋轉,產生嚿物件。 } } }
- 反生成(despawn):指將一件物件由個遊戲世界入面除走,例如一個角色或者敵人生命值變咗 0,佢就會死亡,而喺呢個時候個遊戲程式就要將佢剷走[註 1];噉做係因為如果一個遊戲世界入面物件數量多得滯,會搞到隻遊戲窒。喺 Unity C# 手稿裏面有以下噉嘅碼[5]:
using UnityEngine; public class ScriptExample : MonoBehaviour { void DestroyGameObject() { Destroy(gameObject); // 將嚿 gameObject 剷走佢。 } }
- 重新生成(respawn):指一件物件反生成之後再生成多一次;例如喺好多遊戲當中,玩家角色俾敵人打中死亡之後唔會即刻 GAME OVER,而係玩家會少咗條命,跟住個玩家角色會喺某個地點再生成,要一路去到玩家角色死兼且玩家啲命冇嗮嗰時先會 GAME OVER [6]。
- 生成地點(spawn point):指遊戲世界入面一個指定用嚟俾某啲嘢重新生成嘅地點;例如係好多 PvP 射擊遊戲嘅死亡競賽入面,玩家角色死咗會响若干秒之後重新生成,等玩家有得繼續參與對局,整嚟俾重生生成發生嘅地點就係生成地點;喺實際應用上,生成地點通常會係遊戲世界入面一嚿隱形嘅物件[6]。睇埋生成地點露營。
註釋
[編輯]睇埋
[編輯]攷
[編輯]- ↑ Saunders, Kevin; Novak, Jeannie (2012-03-27). Game Development Essentials: Game Interface Design. Cengage Learning. p. 200.
- ↑ Ebner, M., Levine, J., Lucas, S. M., Schaul, T., Thompson, T., & Togelius, J. (2013). Towards a video game description language (PDF).
- ↑ Chen, W. K., & Cheng, Y. C. (2007). Teaching object-oriented programming laboratory with computer game programming. IEEE Transactions on Education, 50(3), 197-203.
- ↑ 4.0 4.1 Object.Instantiate. Unity Manual.
- ↑ Object.Destroy. Unity Manual.
- ↑ 6.0 6.1 Melnic, D., & Melnic, V. (2018). Saved games and respawn timers: The dilemma of representing death in video games. University of Bucharest Review: Literary and Cultural Studies Series, 7(07), 2018.
拎
[編輯]- Object.Instantiate. Unity Manual.
- Object.Destroy. Unity Manual.