2008年12月11日 星期四

場景管理與通道

遊戲中,隨著劇情跟內容的進行,遊戲場景也會一場一場的變化。遊戲場景大大小小不同,龐大的遊戲場景,可能會有數千個物件在其中,而在網路遊戲的場景中,除了物件之外,可能還會有數百個玩家在其中。

但是我們視野所見的範圍,只是龐大場景中的一角,我們所見到的物件或是玩家,也只是附近的一小撮而已。數字上來說,可能只有十幾二十個物件、七八個玩家,相較於整個場景,只是一小部分。其他大部分場景中的物件與玩家,不管他們發生了什麼事,都是千里之外的事情,我們看不見,也不需要知道。

所以,我們需要場景管理(Scene Management)。

場景管理的最大用處,是能夠用很快的方式,找出視野範圍內的物件,也就是我們需要關心的物件。一般來說,會先將一個場景空間分割成小區塊,把每個物件放在它隸屬的小區塊中,然後再用一個樹狀結構將區塊組織起來,像是二元空間分割(Binary Space Partition, BSP)、四元樹、八元樹等等。

接下來的動作就是,我們可以知道視點在哪個區塊中,視野包括了哪些區塊,然後就只需要處理這些區塊中的物件就好。

通道(Portal)系統則是另一個在場景管理中的工具。

我們在場景裡有一棟房子,我們站在房子外的時候,房子內發生了什麼事,我們是不需要知道的,同樣的,在房子內的人,也看不到房子外。只有門打開的時候,透過大門,房子內外的人可以彼此看見。這個大門,就是所謂的「通道」。

房子是場景中的一個封閉空間,也是一個獨立的區塊,我們站在房子外,除非透過「通道」,否則看不見房子內部。也因為這樣,只有在「通道」進入我們的視野內的時候,我們才需要處理房子內的人和物。

這麼一來,繪圖效能與計算效率都可以提昇。

請看取自「魔獸世界」的這張圖。我站在旅館的外面,左邊站了一個衛兵,右邊有另一個女性NPC,當然旅館內的物件跟NPC是看不見的。這個旅館的造型設計也是完全為了通道而設計的,門口進去一點點,就橫著一道牆,所以我們就算是這樣面對著門口,也還是看不到裡面的狀況。

WoWScrnShot_121008_214101 

第二張圖,是在旅館內,身後站了兩個女NPC。我們看不到外面。

WoWScrnShot_121008_214255

我在這兩個情形下,抓了兩張線框模式的圖。

WoWScrnShot_121008_214116

WoWScrnShot_121008_214301

線框模式下,看得很清楚,在旅館外面的時候,旅館內的NPC,完全沒處理。在旅館內的時候,更簡略了,連外面的場景都沒處理。

2 則留言:

loolala 提到...

請問一下你是用哪個軟體來擷取魔獸的場景資料呢? 謝謝~

藍斯洛 提到...

這個啊,我只是開了個線框模式來看,不過已經不記得用的是哪套軟體了...