TypeSDK總體設計思路和架構

2018-01-17 14:12 更新

引言:本文旨在提供讀者制作一個自己的聚合SDK的思路,拋磚引玉,讓更多的讀者對聚合SDK有好的理解。

       這是最好的時代,這是最壞的時代,這是智慧的時代,這是愚蠢的時代;這是信仰的時期,這是懷疑的時期;這是光明的季節(jié),這是黑暗的季節(jié);這是希望之春,這是失望之冬;人們面前有著各樣事物,人們面前一無所有;人們正在直登天堂;人們正在直下地獄?!峨p城記》

       雙城記的開頭,正是現(xiàn)在手游行業(yè)的一種寫照,充滿著希望的行業(yè),也伴隨著混沌的行業(yè)。隨著手游市場的蓬勃發(fā)展,不論從研發(fā)游戲,運營游戲,還是到發(fā)行游戲,維護相關的平臺,整個行業(yè)都在不斷的壯大。人上一百形形色色,游戲上一百,色色行行,渠道上一百,感嘆活久見。

       正是因為行業(yè)規(guī)模的龐大且新興,很多事物并沒有統(tǒng)一的業(yè)界標準。在任何一款游戲,要最終推到用戶手上,不可避免的需要和各大渠道打交道。無論你是獨立發(fā)行,還是聯(lián)合運營,或多或少,會和App Store,Google play,國內各大發(fā)行渠道,阿里游戲,應用寶等等之類的打交道。而和他們打交道最直接的交互,就是需要接入相對應的sdk模塊。

       眾多渠道的sdk良莠不齊,作為游戲開發(fā)商的cp,尤其是眾多中小cp,第一次接入幾家甚至幾十家的渠道sdk已經需要花費巨額大的時間和人力成本,而當渠道sdk更新,需要將這些sdk再次接入到自己游戲中,又或者說,游戲發(fā)生了更新,需要重新的將這些sdk接入到自己游戲中時,則又要再次耗費巨大的時間和人力成本。聚合sdk正是基于這種情況下,才會被提出的概念。我們希望的,只是一個簡單粗暴的,可以快速接入,沒啥技術經驗的人也能使用的一鍵式自動打包工具,只需要傳一個工程文件,就可以直接出渠道包。

       那么,我們就長話短說,我們來看看,我們要實現(xiàn)這套聚合的sdk,需要做哪些事情。

主要需求:

       首先,我們需要明確想要做成的東西是個怎么樣產品

       1.游戲客戶端和游戲服務端,只需要關注游戲本身內容,無需關注不同渠道的sdk差異性,降低渠道sdk和游戲客戶端的耦合性

       2.公司應用必須要支持多個項目的統(tǒng)一管理,但不能有集中式單點的風險,數據需要分離和整合不同的表現(xiàn)

       3.公司發(fā)展后各種部門的交互流程和人員成本,讓非技術的運營人員也可以打包,并且使用流程管理來進行出包版本管控

       4.該聚合sdk必須要有擴展性,能應對日后新增的各種其他類型sdk。

 

主要模塊:

       針對這些需求,我們將產品分割為以下幾個大模塊。

       1.用作客戶端接入部分的統(tǒng)一框架 SDK_Client

       2.用作服務端統(tǒng)一的邏輯轉發(fā)和處理中心SDK_Server

       3.用作打包功能的邏輯和多線程的任務調度SDK_Package

       4.用戶可視化操作界面和功能配置界面SDK_Manager

 

       這四大模塊,是我們最終的目標,一鍵式傻瓜化打包工具的組成。讓用戶只要傳一個游戲項目,就能直接打出指定的渠道包。

 

主要的關系圖:

       接下來我們來看看主要的幾個關系圖

我們看看 packager的主要工作原理

1.取得相關游戲的配置文件

2. 取得指定渠道的配置文件

3.利用打包腳本,合成渠道包

4.提供渠道包的下載鏈接

 

manager和package組成客戶端打包工具,manager負責管理和配置,package負責編譯,關系圖:如下

 

 

 

1.用戶通過manager,上傳一個原始的游戲

2.manager根據用戶操作,找到相應的渠道SDK,渠道參數

3.manager分配給packager組打包的任務

4.packager 組找到空閑的packager節(jié)點,將該任務指定到具體的pakcager

5.選中的packager根據接收到的任務以及參數,打出指定渠道包

 

sdk的client和server與游戲客戶端和服務端的交互架構

 

 

可以看到相對的結構圖如上
1. 游戲渠道包,包含了游戲客戶端以及聚合sdk客戶端,渠道sdk三部分
2. 游戲客戶端,將聚合sdk客戶端發(fā)送過的sdk數據轉發(fā)給游戲服務端
3. 游戲服務端,將游戲客戶端發(fā)送的sdk數據轉發(fā)給聚合sdk服務端
4. 聚合sdk服務端和渠道sdk服務端進行邏輯交互,以及相關的數據有效性驗證,驗證通過后,發(fā)回給游戲服務端正確的數據結果
5. 游戲服務端根據聚合sdk服務端返回的數據結果,處理游戲內的邏輯
6. 游戲客戶端,將游戲服務端返回的經過驗證后的sdk數據結果轉發(fā)給聚合sdk客戶端

 

       以上所有,是我們對一套聚合sdk的總體架構以及構思的分析。整套我們最終目標要做成的一鍵式傻瓜化打包工具,是需要一步一個腳印,積少成多堆積出來的。但是有了明確的思路和方向,相信眾讀者會對聚合sdk不再陌生,也能更好的使用聚合sdk。

       聚合sdk的其中每一個模塊的具體實現(xiàn),需要注意點,我們會在日后慢慢分析。

這個項目已開源,大家有興趣可以自己研究或者參照項目編寫自己的聚合SDK

項目地址:https://code.csdn.net/typesdk_code

項目地址:https://github.com/typesdk

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號