相對(duì)于單機(jī)游戲或者其它的局域網(wǎng)游戲不同,大型網(wǎng)絡(luò)游戲的客戶端不再對(duì)數(shù)據(jù)進(jìn)行邏輯處理,大部分的邏輯計(jì)算都放在后端的服務(wù)器進(jìn)行處理,導(dǎo)致玩家與后臺(tái)
服務(wù)器間的數(shù)據(jù)傳輸頻次多且大多保持長(zhǎng)時(shí)鏈接,因此服務(wù)器端的響應(yīng)速度、并發(fā)能力、鏈接穩(wěn)定性等性能也就直接決定了客戶端玩家的用戶體驗(yàn)。所以游戲服務(wù)
器選型和架構(gòu)建設(shè)跟一般的Web服務(wù)器都不同,游戲服務(wù)器對(duì)于硬件和整個(gè)系統(tǒng)架構(gòu)的要求更高。
服務(wù)器快速響應(yīng);
由于網(wǎng)游的服務(wù)器集群對(duì)應(yīng)所有的游戲客戶端,每個(gè)玩家的動(dòng)作都會(huì)實(shí)時(shí)地互相影響。比如玩家間PK,在接收到玩家的指令后,服務(wù)器需要立刻判斷雙方攻擊力、
血量、防御力、抗性等屬性,然后經(jīng)過一定的算法才能終輸出一個(gè)傷害值。這些都是需要服務(wù)器進(jìn)行實(shí)時(shí)的運(yùn)算并作出反饋,延遲需要在毫秒級(jí)。因此,網(wǎng)游的
邏輯服務(wù)器需要強(qiáng)大的計(jì)算能力,或是采用高性能的服務(wù)器,或是通過計(jì)算服務(wù)器集群提升整個(gè)系統(tǒng)的計(jì)算能力。
服務(wù)器高并發(fā)能力;
對(duì)于一款熱門的網(wǎng)游,高并發(fā)能力是考驗(yàn)服務(wù)器端的一道難題。玩家的大規(guī)模同時(shí)登陸和游戲內(nèi)的國(guó)戰(zhàn)、群聊都會(huì)需要的并發(fā)鏈接處理。以IM服務(wù)器舉例,當(dāng)
某個(gè)玩家在游戲發(fā)布了一條消息,目標(biāo)是全地圖所有玩家,那么這則消息可能需要同時(shí)發(fā)送給數(shù)萬的玩家,而這僅僅只是一個(gè)玩家發(fā)布的消息,如果是10個(gè)、100個(gè)
或者10000個(gè)玩家同時(shí)發(fā)送廣播呢?所以一個(gè)同樣硬件配置的服務(wù)器,可能跑Nginx(用于處理Web服務(wù)器的并發(fā))可以同時(shí)處理上萬的鏈接,但是對(duì)于一個(gè)游戲服務(wù)器
就只有1、2千了。因此,對(duì)于登錄和管理服務(wù)器而言,能否支持高并發(fā)是重要的考量依據(jù)。
大量的數(shù)據(jù)
一款大型網(wǎng)游在服務(wù)器端需要存儲(chǔ)大量的數(shù)據(jù),比如游戲中的地圖數(shù)據(jù)、資源數(shù)據(jù)等基本不會(huì)有太大變化的數(shù)據(jù)。另外,玩家每創(chuàng)建一個(gè)游戲角色都會(huì)有一系列數(shù)
據(jù)需要存儲(chǔ),比如名稱、ID、裝備、寵物、屬性等等,而且不論這個(gè)玩家是否上線、是否長(zhǎng)時(shí)間沒有登錄,相關(guān)的數(shù)據(jù)都需要保存。這就是為啥網(wǎng)游的存儲(chǔ)服
務(wù)器需要較大的、的存儲(chǔ)空間來保存這些數(shù)據(jù)的原因了。