游戲服務器與普通服務器相比較有什么區別?

首先,游戲服務器與普通服務器相比較來說,游戲服務器需要能夠保存更多的用戶的狀態。用戶的等級等屬性不用說,一般的IM服務也會有,還有一些時刻變化的數據,比如某個玩家的生命值,發技能前后的法力值等等,這些值區別于一般的屬性值如名字,ID這些,這些數據會經常性的變化,還會參與到邏輯的計算中,比如你一個多少等級的玩家吃了什么東西之后戰力值變化為多少,打在一個多少屬性的玩家身上會不會被他閃避,會不會產生暴擊…諸如此類的信息,在游戲服務器中都會一一保存。
其次,游戲服務器中每一個用戶都是獨立存在的,每一個用戶的數據、請求等都是獨立的,用戶彼此間的數據并沒有任何交互。這也是游戲服務器與普通服務器之間最大的區別。至于客戶端之間會有交互這一點,舉最簡單的例子,一個人在一個場景里面說了一句話,那么“同一個屏幕”的玩家也需要能夠看到他說的這句話。此時游戲服務器就需要判斷,多遠的距離以內的玩家,會認定為是"同屏幕"的玩家,需要向這些玩家廣播這個玩家說的這句話。
這個廣播就比較麻煩了。首先,需要計算哪些玩家屬于"同屏幕",就是我們在第一點提到的玩家身上某些經常變化的屬性需要做的運算,在這里需要根據玩家的坐標,找出來跟在同屏幕的玩家,用到的是AOI的概念。另外,找到了這些需要接收這個消息的玩家之后,將消息轉發給它們又是一個IO密集的操作,假如場景中有10個人,那么一句話就需要同時廣播給另外9個人,假如有100人,1000人呢,數據量就更大了,而且時間的延遲也不能太長,這對于游戲服務器的性能就要求很高了。所以同樣的一個硬件配置的服務器,可能跑Nginx可以同時處理上萬的鏈接,但是對于一個游戲服務器就只有1,2千了,就是因為游戲服務器是一個CPU密集而且IO密集的服務器類型。而且不僅需要這樣的游戲服務器不僅要求性能比較高,還需要服務器具有極高的穩定性,總不能隔一會就宕機了,那大家還怎么玩。
此外,游戲服務器需要更好的數據承載能力和處理能力。而普通服務器則在各個方面都比較均衡。在尋找游戲服務器租用商的時候,一定要選擇那種CPU性能非常出色的。
最后(hou)一(yi)點,游戲(xi)(xi)(xi)行(xing)業一(yi)直以(yi)來是網絡攻擊(ji)的重災區,很多游戲(xi)(xi)(xi)剛上(shang)線沒多久就(jiu)頻繁(fan)遭到攻擊(ji),導(dao)致(zhi)玩(wan)家大(da)量流失口(kou)碑下降,最后(hou)可能導(dao)致(zhi)直接關服。所以(yi)游戲(xi)(xi)(xi)服務器一(yi)定要(yao)帶高防流量包。

