《攻城Online》開發前期:UML設計架構

  《攻城Online》,如下簡稱「攻城」,是基於Unity3D引擎開發的一款MMORPG端遊。數據庫

  「攻城」開發採用C/S架構,其中服務端使用了Photon引擎來簡化開發流程。Photon引擎底層是C++,採用多線程併發處理客戶端鏈接,且遊戲邏輯採用C#語言編寫。目前來講,團隊對服務端開發還是一張白紙,於是認定直接用現成服務端框架是惟一的出路。而相比較SmartFoxServer、KBEngine來講,由於其實現語言的緣由,以至Photon成爲不二的選擇。緩存

  廢話少說,先貼上初步的UML類圖框架。多線程

  因爲開發過程當中,類內成員的訪問級別隨時均可能發生變更,方法參數一樣如此,於是一概忽略對訪問級別以及參數的表示。架構

  首先是服務端主框架,ApplicationBase和PeerBase是Photon提供的兩個類。ServerApplication繼承自ApplicationBase,用來進行服務端遊戲邏輯應用程序的工做,ServerPeer繼承自PeerBase,表明鏈接到Photon的客戶端,每當有一個新的客戶端鏈接到服務端時,就會自動實例化一個peer,這個類就用於與客戶端進行通訊。其中,類中的OnOperationRequest是個回調方法,用於處理客戶端發送的請求。併發

  UserBase類包含用戶的基本信息,而UserCollection類經過字典來收集每一個peer的用戶信息。框架

  DataBase包,用於數據庫操做和管理的,這個確定要。spa

  此外,還有ServerLogic包,內含一些處理遊戲邏輯的文件,用於分割peer中OnOperationRequest所要進行的工做。線程

  Protocol包下是服務端和客戶端之間的協議文件。日誌

  因爲Photon引擎有很方便的日誌管理功能,於是還須要一個Log包,用來進行各類日誌記錄。blog

  接下來是客戶端框架,PhotonSingleton是個全局單例類,用於進行每幀保持與服務端的鏈接等工做。

  PhotonService是客戶端的主體部分,發送請求和接收響應和事件都在這裏完成。

  一樣,ClientLogic包用來細化PhotonService的各項邏輯工做。

  最後是Protocol包,裏面含有各種操做枚舉,EventArgs事件包,Common數據包,以及一個Serialization類用於進行二進制數據傳輸的轉換。另有一個EventCollection類,這個類將各類事件集中起來,在PhotonService中會引用到。

  以上就是基本的組成框架,剩餘的都是些細化的部分。

  說下這個框架的基本使用思路:

  服務端啓動->客戶端啓動->

  客戶端鏈接服務端生成peer->服務端保存用戶信息緩存->

  客戶端邏輯生成請求->二進制序列化請求數據->客戶端發送請求->

  服務端接收請求->二進制請求數據反序列化->服務端邏輯處理請求->

  服務端邏輯生成響應->二進制序列化響應數據->服務端進行單播/組播/廣播->

  客戶端接收響應/觸發事件->二進制響應/事件數據反序列化->客戶端邏輯處理

  這就是整個消息收發的處理過程,其中省略了數據庫、日誌、更新遊戲畫面等操做。

相關文章
相關標籤/搜索