TypeSDK總體設(shè)計(jì)思路和架構(gòu)

2018-01-17 14:12 更新

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

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

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

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

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

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

主要需求:

       首先,我們需要明確想要做成的東西是個(gè)怎么樣產(chǎn)品

       1.游戲客戶端和游戲服務(wù)端,只需要關(guān)注游戲本身內(nèi)容,無需關(guān)注不同渠道的sdk差異性,降低渠道sdk和游戲客戶端的耦合性

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

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

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

 

主要模塊:

       針對這些需求,我們將產(chǎn)品分割為以下幾個(gè)大模塊。

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

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

       3.用作打包功能的邏輯和多線程的任務(wù)調(diào)度SDK_Package

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

 

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

 

主要的關(guān)系圖:

       接下來我們來看看主要的幾個(gè)關(guān)系圖

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

1.取得相關(guān)游戲的配置文件

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

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

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

 

manager和package組成客戶端打包工具,manager負(fù)責(zé)管理和配置,package負(fù)責(zé)編譯,關(guān)系圖:如下

 

 

 

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

2.manager根據(jù)用戶操作,找到相應(yīng)的渠道SDK,渠道參數(shù)

3.manager分配給packager組打包的任務(wù)

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

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

 

sdk的client和server與游戲客戶端和服務(wù)端的交互架構(gòu)

 

 

可以看到相對的結(jié)構(gòu)圖如上
1. 游戲渠道包,包含了游戲客戶端以及聚合sdk客戶端,渠道sdk三部分
2. 游戲客戶端,將聚合sdk客戶端發(fā)送過的sdk數(shù)據(jù)轉(zhuǎn)發(fā)給游戲服務(wù)端
3. 游戲服務(wù)端,將游戲客戶端發(fā)送的sdk數(shù)據(jù)轉(zhuǎn)發(fā)給聚合sdk服務(wù)端
4. 聚合sdk服務(wù)端和渠道sdk服務(wù)端進(jìn)行邏輯交互,以及相關(guān)的數(shù)據(jù)有效性驗(yàn)證,驗(yàn)證通過后,發(fā)回給游戲服務(wù)端正確的數(shù)據(jù)結(jié)果
5. 游戲服務(wù)端根據(jù)聚合sdk服務(wù)端返回的數(shù)據(jù)結(jié)果,處理游戲內(nèi)的邏輯
6. 游戲客戶端,將游戲服務(wù)端返回的經(jīng)過驗(yàn)證后的sdk數(shù)據(jù)結(jié)果轉(zhuǎn)發(fā)給聚合sdk客戶端

 

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

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

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

項(xiàng)目地址:https://code.csdn.net/typesdk_code

項(xiàng)目地址:https://github.com/typesdk

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號