遊戲伺服器架構設計中的一些思考

2021-05-23 12:43:23 字數 1356 閱讀 1032

遊戲伺服器架構設計中的一些思考

1、 遊戲世界由很多個遊戲物件組成(遊戲角色、物品、npc、技能等);

2、 乙個遊戲物件的有效資料主要存放在客戶端、遊戲伺服器和永續性資料庫中;

3、 遊戲物件的處理可劃分為與位置有關的和與位置無關的,如公會處理、物品處理等主要行為可以看作是與位置無關的處理,而npc(ai)、戰鬥、移動這類的主要行為可以看成是與位置有關的。

4、 從客戶端的角度來看,遊戲行為可分為四類動作:

a)         來自伺服器端的動作,如另外乙個玩家跳起來。

b)        本地動作。僅僅發生在本地客戶端的動作,不需要與伺服器端或其他客戶端通訊。

c)         先執行後驗證的可撤銷的動作。客戶端先執行,再提交伺服器端驗證,驗證不成功通知客戶端將執行的動作撤銷。比如玩家控制的遊戲角色執行移動處理。

d)        嚴格伺服器端驗證的動作。客戶端執行動作前必須經過伺服器端驗證後才能執行。如交易行為、攻擊其他玩家/npc。

5、 客戶端和伺服器,伺服器程序之間的相互的通訊從邏輯上看就是就是向remoteobject 發起的遠端過程呼叫(rpc),rpc主要有兩種型別:

a)         通知(notify)。只通知對方,而不關心和需要對方返回結果。

b)        請求(request)。向對方發起請求,對方處理請求後返回結果,發起請求和返回結果這個過程可以是同步或非同步。遊戲伺服器中絕大部分rpc請求都是非同步的。

6、 響應延遲主要是由於網路頻寬和伺服器處理效率引起的。應盡可能的通過一些技巧來隱藏和減少玩家的響應延遲。但不是所有的最新訊息都能立刻傳送出去(或接收處理到),因此,要在伺服器端採用優先佇列來減少重要訊息的響應時間。延遲也會由客戶端產生,如收到訊息後的對訊息的處理速度。

7、 伺服器負載,除了公升級硬體裝置外,可以通過一些方式來提高伺服器負載。

a)         保證足夠的網路頻寬。

b)        分布式運算,合理的集群式架構。

c)         遊戲策劃從遊戲內容上避免設計高併發,高消耗的遊戲行為。

8、 從伺服器的可伸縮性,穩定性和高效率方面來考慮,要試著避免所有事情都在乙個地方處理,盡量讓系統分布式執行,但是過多的劃分功能到不同的程序/機器上執行,又會帶來資料的大量同步的問題。因此可以將遊戲物件的處理主要劃分為與位置無關和有關兩種。像公會,玩家資訊,物品資訊,組隊,拍賣等等這類與位置無關的但是占用cpu資源較少的處理可以盡可能的放在乙個程序中,避免程序間物件同步,而像npc,尋路,aoi運算,戰鬥處理等與位置有關的,處理過程中特別關心物件座標位置的、運算量特別大的,但是程序間物件同步較少的,都可以單獨劃分成多個程序。

每類程序服務的功能盡量單一。負責路由的就盡量只負責網路包**,而不再承擔其他繁重的任務,負責遊戲處理的就盡量讓網路包流向簡單。

遊戲伺服器架構設計中的一些思考

1 遊戲世界由很多個遊戲物件組成 遊戲角色 物品 npc 技能等 2 乙個遊戲物件的有效資料主要存放在客戶端 遊戲伺服器和永續性資料庫中 3 遊戲物件的處理可劃分為與位置有關的和與位置無關的,如公會處理 物品處理等主要行為可以看作是與位置無關的處理,而npc ai 戰鬥 移動這類的主要行為可以看成是...

遊戲伺服器架構設計中的一些思考

遊戲伺服器架構設計中的一些思考 1 遊戲世界由很多個遊戲物件組成 遊戲角色 物品 npc 技能等 2 乙個遊戲物件的有效資料主要存放在客戶端 遊戲伺服器和永續性資料庫中 3 遊戲物件的處理可劃分為與位置有關的和與位置無關的,如公會處理 物品處理等主要行為可以看作是與位置無關的處理,而npc ai 戰...

遊戲伺服器架構設計中的一些思考

1 遊戲世界由很多個遊戲物件組成 遊戲角色 物品 npc 技能等 2 乙個遊戲物件的有效資料主要存放在客戶端 遊戲伺服器和永續性資料庫中 3 遊戲物件的處理可劃分為與位置有關的和與位置無關的,如公會處理 物品處理等主要行為可以看作是與位置無關的處理,而npc ai 戰鬥 移動這類的主要行為可以看成是...