服務(wù)器的基本設(shè)置
在大型網(wǎng)絡(luò)游戲里,通常設(shè)計為C/S結(jié)構(gòu),客戶端不再對數(shù)據(jù)進(jìn)行邏輯處理,而只是一個收發(fā)裝置,從玩家那里接受到操作信息,然后反饋給服務(wù)器,再由服務(wù)器進(jìn)行處理后發(fā)回客戶端,經(jīng)客戶端通過圖形化處理,給玩家呈現(xiàn)出一個繽紛的游戲世界。

登陸服務(wù)器
在這里也可以稱之為連接服務(wù)器,網(wǎng)絡(luò)游戲的客戶端一般是連接到這里,然后再由該連接服務(wù)器根據(jù)不同的需要,把游戲消息轉(zhuǎn)發(fā)給其它相應(yīng)的服務(wù)器(邏輯和地圖服務(wù)器)也因為它是客戶端直接連接的對象,它同時也負(fù)擔(dān)了驗證客戶身份的工作。
地圖服務(wù)器
在這里也可以稱之為連續(xù)事件服務(wù)器。在這個服務(wù)器里要處理的對象(玩家)所做的動作都是一個連續(xù)事件。例如玩家從A點移動到B點,這樣一個動作,需要一定的時間進(jìn)行移動,因此說移動是一個連續(xù)事件。
邏輯服務(wù)器
在這里可以稱之為瞬時事件服務(wù)器,在這個服務(wù)器里,處理對象(玩家)所做的動作均可以在非常斷時間內(nèi)完成完成。例如玩家從商店購買一瓶藥書,當(dāng)玩家確認(rèn) 購買后,服務(wù)器先扣除玩家的游戲幣,然后再把相應(yīng)的藥水瓶加入玩家的背包里。這2個操作對于服務(wù)器來說,只是2個數(shù)字的加減,計算完這兩個數(shù)字的加減,這 個事件就可以結(jié)束了。因此,我們可以說這個事件是一個瞬時事件
服務(wù)器組的改進(jìn)
不過在實際應(yīng)用的過程中,游戲服務(wù)器的結(jié)構(gòu)要比上面所說的3種服務(wù)結(jié)構(gòu)要復(fù)雜些,不過也都是在這3種最基本的服務(wù)器架構(gòu)下進(jìn)行擴(kuò)充,擴(kuò)充的主要是其它輔助功能。在實際應(yīng)用里可能增加的2種服務(wù)器,數(shù)據(jù)庫服務(wù)器,計費服務(wù)器,由邏輯服務(wù)器獨立出來的聊天服務(wù)器。

數(shù)據(jù)庫服務(wù)器
數(shù)據(jù)庫服務(wù)器其實就是專門利用一臺服務(wù)器進(jìn)行數(shù)據(jù)庫的讀寫操作。這點特別是在大型的網(wǎng)絡(luò)游戲里尤為重要。因為在大型網(wǎng)絡(luò)游戲里,要處理玩家的數(shù)據(jù)量非常大,如果不利用專門的服務(wù)器進(jìn)行處理,很有可能會拖累這個服務(wù)器組。
計費服務(wù)器
通常在商業(yè)的網(wǎng)絡(luò)游戲里出現(xiàn),用于記錄玩家在線的時間,給收費提供依據(jù),同時也是整個服務(wù)器組里最重要的部分,一旦出現(xiàn)問題,運營商就不用賺錢了。
聊天服務(wù)器
在游戲里的聊天功能是屬于一種瞬時動作,理論上是放在邏輯服務(wù)器里進(jìn)行處理。不過在大型網(wǎng)絡(luò)游戲里,因為這個部分功能與游戲里的其它部分聯(lián)系并不緊密,因此可以獨立出來做一個功能服務(wù)器。
服務(wù)器的集群設(shè)置
在大型游戲的應(yīng)用過程中,實際需要處理的玩家數(shù)量可能過萬,一臺普通的服務(wù)器是無法完成所要完成的工作,因此,在實際應(yīng)用的時候,通常是由一組多臺服務(wù)器共同完成一個功能。
例如地圖服務(wù)器,可以根據(jù)需要,把游戲里所有的地域進(jìn)行劃分,劃分為N個區(qū)域,然后讓這一個區(qū)域里發(fā)生的事件都用一個特定的服務(wù)器進(jìn)行處理。這樣做的目的是減少一個服務(wù)器所承擔(dān)的計算量,把整個系統(tǒng)組成一個分布式的網(wǎng)絡(luò)。
不過這樣做的同時會造成一個麻煩:當(dāng)一位玩家從區(qū)域1,移動到區(qū)域2。這個時候,就必須先在服務(wù)器1里把玩家刪除,然后再在區(qū)域2里加入玩家。同時需要 由服務(wù)器1向服務(wù)器2轉(zhuǎn)移玩家的數(shù)據(jù)信息(因為服務(wù)器組在工作的時候,玩家的信息只能保存在當(dāng)前所在區(qū)域的服務(wù)器里),也就是說一旦玩家發(fā)生服務(wù)器間區(qū)域 移動,服務(wù)器端就不可避免的造成數(shù)據(jù)通訊。因為這種移動并不是有規(guī)律的,玩家所在的服務(wù)器都有可能到達(dá)其它服務(wù)器。這樣,如果服務(wù)器組里有N臺地圖服務(wù) 器,那么,每個服務(wù)器都可能向其它N-1臺服務(wù)器產(chǎn)生連接,總共就可能產(chǎn)生N×N個連接。如此數(shù)量連接如果只是使用普通的socket設(shè)計,就很有可能會 給服務(wù)器通訊間的各種問題所困擾,為此,在商業(yè)網(wǎng)絡(luò)游戲的服務(wù)器之間,通常都使用成熟的第三方的通訊中間件,如ACE,ICE等作為網(wǎng)絡(luò)連接的傳輸層。
