游戏服务器端引擎——DogSE的设计
、
就DogSE的設計目標來說,它定位為千人左右的頁游服務器,在不修改任何底層模塊的情況下可以快速的寫各種游戲業務。就算是新人在熟悉2~3天后也可以開始寫一個游戲。
1、DogSE的基本結構
對于一個游戲再代碼層面可以分為3個部分
1.與所有游戲無關的代碼(DogSE的Core和Library 項目)
2.特定游戲類型的基礎代碼
3.具體游戲相關的業務代碼
對于DogSE來說,它所完成的任務就是與游戲無關的底層代碼,在第二階段,會根據不同的游戲類型,補充一些特定游戲的基礎代碼,這些基礎代碼是已例子的方式提供,真正在用引擎開發時,只需要根據具體的游戲類型,選擇對應的例子,并再這個基礎上進行快速開發。
2、DogSE一些組件的設計
2.1 網絡層設計
網絡層主要由2個對象組成Listener和ClientSession,當Listener開啟監聽后,當有socket發起連接后,會觸發SocketConnect的事件。事件里面會帶有一個ClientSession的對象用來區分每個客戶端。這里采用模板,可以對每個客戶端綁定一個指定類型的業務邏輯數據。目前這個T是消息包處理的NetSate對象。
?
2.2 消息包處理
消息包處理目前Core只提供了一個Byte讀和寫的基本類(PacketReader和 PacketWriter),后期根據不同項目的需求,可以采用不同的解析協議。DogSE默認用自定義的二進制流讀寫,后面將試著支持google的protobuf,以及一些其它的交換數據(json,xml)
?
2.3 任務隊列
任務隊列游戲運轉的核心,任務分為網絡任務(NetTask)和非網絡任務(ActionTask,ParamActionTask),網絡任務主要是客戶端發起的請求,而買手游非網絡任務可能是某些定時回調的任務,一些異步任務的回調。PacketHander主要負責網絡消息id對具體業務邏輯綁定。
2.4 時間調度
時間調度會開啟一個線程監測當前時間調度隊列里的TimeSlice對象是否達到執行要求。達到觸發要求,會向TaskManager里添加一個ActionTask對象,用來執行對應的游戲業務邏輯。
?
總結
以上是生活随笔為你收集整理的游戏服务器端引擎——DogSE的设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AI技术在游戏开发中的五种有效尝试
- 下一篇: Unity热更新方案探索与讨论