close

線上遊戲是如何設計的呢?

我們可以把它切成幾個部分

畫面顯示、網路傳輸、資料管理、觸發機制



【畫面顯示】

指的是將欲呈現在螢幕上的畫面

送到顯示卡的frame buffer裡頭繪製出來

EI的畫面解析度是800*600(16-bit)

(而16-bit指的是每個像素所需要的記憶體大小)

(通常在16-bit的顯示中 RGB分別佔 5-6-5 bit)

根據螢幕的顯示頻率不同(假設為60Hz)

那麼每秒中顯示卡要繪製出來的畫面為

60張*800*600(像素)*16(位元)/8(位元組)

這麼多個位元組~~ (不過這太低階了,大家不必深究)



至於每個點的顏色怎麼決定的呢?

它是將每個欲顯示的東西物件化

將該物品放到螢幕上的一個特定位置

然後根據它的z-buffer(深淺層次)

來決定哪個東西要呈現出來

或是做blending(混合、也就是透明的效果)

server根據遠端玩家的動作所產生的"參數"

來決定回傳到client端的畫面該如何呈現~



【網路傳輸】

簡單地來說網路傳輸

就是伺服器和客戶端的資料傳輸玩家的動作

(ex:滑鼠移動、左右鍵、單雙擊、鍵盤)

將產生一些輸入的參數

client端將這些參數透過網路傳送到server端

server端處理過這些參數之後也回傳另一些參數

通知client端把畫面顯示出來給玩家看



【資料管理】

遊戲裡頭有這許多動態跟靜態資料

動態資料就是隨時/機產生的機制

或是玩家互動的結果

而靜態資料就是一些固定的資料

例如物品、人物、地圖、任務、NPC、怪物

這些都是靜態的資料

通常大部分的靜態資料都可以在官網查到

伺服器會有完整的資料庫儲存出現在該伺服器的所有靜態資料

而客戶端會存放一些片段的資料



【觸發機制】

觸發機制也分成很多種

這也是遊戲設計者/管理者發揮創意的地方了

設計整個遊戲框架的工作是由程式設計師負責

而遊戲裡頭的內容大多由管理者負責

當設計師將一些基本的架構完成之後

遊戲的許多設定就由管理者來設定了



當玩家將滑鼠移到人物上方會顯示該人物名稱

這就是一個簡單的mouse_on機制

當玩家按下空白鍵會進入對話框

這就是一個簡單的focus機制

當玩家按下一些熱鍵就會產生一些動作

這些都是輸入的機制



另外還有玩家互動的機制例如pk之後

玩家會變褐人、黃人或紅人

衝完刀之後

刀的資料會改變

這些都是觸發機制



【結語】

設計一個線上遊戲需要花費不少時間跟人力

雖然簡單來說遊戲的設計大多跳脫不了這幾個部分

但是每個部分的工作都不簡單需要花費很長一段時間才完成



唔~累了~~ 下次有空再補充一些例子吧~~^^"





【續集】

【靜態資料-地圖】

在角色扮演遊戲中

地圖是一個不可或缺的部分

它是整個遊戲發展的舞台



我們在玩EI的時候可以發現

每當我們站在一個地方

在說明框裡的座標位置就會改變

這表示我們的人物是在這個二維的座標系中移動

每一個座標都有該座標的屬性(attribute)

這些所謂的屬性包括

1.有哪些物件在上面

2.背景圖

3.能否移動(是否為障礙)

......................等等



遊戲裡頭的場景如此地大

製作起來算是工程蠻浩大的一環

但是如果做得好的話會讓玩家們有股驚艷的感覺



不可諱言地

EI這個遊戲還是二維的遊戲

跟三維的遊戲比較起來畫面的變化性少了

不過由於畫面製作得還算精緻

而且也儘量將三維的表現方式應用在二維的繪製上

所以畫面呈現的感覺蠻立體的

跟一些繪製還不是很精緻的三維遊戲比較

算是略勝一籌囉

而且由於是二維的遊戲

所以客戶端的硬體設備要求並不會太高

只要一般在二維表現上流暢的顯示卡

都可以應付得來遊戲畫面的繪製



一般在EI裡頭我們在打遠攻的怪物時

可以邊打邊退而不會被打到

是因為遊戲的設定讓怪物在一定的範圍內不會發動攻擊

而每個怪物如何判斷如何去追某個目標呢?

這是透過一個尋找最短路徑的演算法求得的

每當怪物的目標位置改變時

都會執行一次這個演算法找出一個路徑

而當遇到障礙的時候

就必須重新計算因些遊戲裡頭

才會有可以卡怪的現象出現

如果大家去玩War3/星海這些遊戲的話

它們的搜尋目標演算法設計得比較完善

比較不會有卡怪的問題



至於怪物怎麼尋找目標呢?

常常引怪的玩家就知道了

引怪的機制是玩家靠近怪物

或是主動打怪物等等

觸發了這些機制的時候

怪物的"目標"就產生了

而當怪物的目標消失之後

它將進入"等待"狀態

直到下個機制又觸發

才會繼續進行攻擊



遊戲裡頭真的有許多不錯的地圖

可供玩家們遊覽

這是遊戲美工們的心血

我就蠻喜歡去看他們的設計的~~^^"
















-----
arrow
arrow
    全站熱搜

    handsomebb 發表在 痞客邦 留言(0) 人氣()