微信小游戲架構(gòu)概覽

上一篇文章我介紹了微信6.6.1版本新增的小游戲功能后,這篇文章趁熱打鐵,介紹一下小游戲的架構(gòu)。
這篇文章給了三張圖,分別從不同的粒度來介紹。
首先是圖一:

圖1

這張圖是最粗粒度的介紹。最底層是我們的移動(dòng)設(shè)備,其上一層是移動(dòng)端的操作系統(tǒng),微信運(yùn)行在操作系統(tǒng)上。當(dāng)微信第一次在操作系統(tǒng)上安裝時(shí),微信的安裝文件會(huì)告訴操作系統(tǒng)自己需要哪些系統(tǒng)權(quán)限。當(dāng)然,用戶可以在安裝之后自主決定是否授予微信相應(yīng)的權(quán)限,比如我不希望微信訪問麥克風(fēng),那么只需勾掉在設(shè)置 -- 應(yīng)用程序 -- 權(quán)限設(shè)置中關(guān)閉掉這個(gè)權(quán)限即可,如下圖所示。選擇關(guān)掉這個(gè)權(quán)限即系統(tǒng)不允許微信調(diào)用麥克風(fēng),那么微信的發(fā)語音的功能肯定就沒法正常使用了。因此,小游戲的API實(shí)現(xiàn)來自于操作系統(tǒng)授予微信的權(quán)限的封裝。
微信權(quán)限設(shè)置 - Huawei P9

接下來是第二張圖,也是微信這個(gè)版本最大的更新,即WeChat Session Manager,這代表著我們可以在保持著小游戲在后臺(tái)運(yùn)行的同時(shí),自由地切換到微信聊天界面,這個(gè)在我之前的文章里說過,這里就不贅述。假設(shè)沒有這個(gè)功能,那么小游戲和聊天只有選擇其一,現(xiàn)在小游戲就像獨(dú)立的APP一樣,可以和微信聊天之間自由切換,微信宛如一個(gè)mini操作系統(tǒng)。
圖2

圖3是最后一張圖,根據(jù)微信小游戲的官方文檔,小游戲的運(yùn)行環(huán)境是一個(gè)Javascript的虛擬機(jī),開發(fā)者可以用微信官方提供的IDE來開發(fā)自己的小游戲,使用的語言是JavaScript,微信官方提供了一套自己的API來供開發(fā)者調(diào)用,這些API實(shí)質(zhì)是對操作系統(tǒng)API的二次封裝。以下是微信官方的解釋:

你只能使用 JavaScript 來編寫小游戲。小游戲的運(yùn)行環(huán)境是一個(gè) 綁定了一些方法的 JavaScript VM。不同于瀏覽器,這個(gè)運(yùn)行環(huán)境沒有 BOM 和 DOM API,只有 wx API。

對于一個(gè)獨(dú)立的小游戲項(xiàng)目來說,其本身只需要兩個(gè)基本文件:

game.js 小游戲入口文件
game.json 配置文件

game.js是項(xiàng)目的入口文件,在編譯的時(shí)候,編譯器會(huì)生成相應(yīng)的gamePage.html文件,我們從源碼可以看到其會(huì)引用require("game.js")。同時(shí),在game.js中引用的js文件也會(huì)在gamePage.html中被顯式地包含:

image.png

game.json是項(xiàng)目的配置文件,主要控制界面渲染和一些運(yùn)行時(shí)屬性,具體見下圖:
game.json

當(dāng)然,因?yàn)槲⑿殴俜竭€沒有提供開放的小游戲發(fā)布方式,目前沒有官方的流程來讓開發(fā)者上線自己開發(fā)的小游戲。而且在目前的開發(fā)環(huán)境中,其編譯是自動(dòng)的,不支持任何的項(xiàng)目包導(dǎo)出功能,開發(fā)者只能通過官方提供的程序小游戲開發(fā)輔助來測試自己的項(xiàng)目。因?yàn)樾∮螒蚰壳皼]有一個(gè)所謂的應(yīng)用商店來統(tǒng)一對發(fā)布進(jìn)行管理,所以目前沒有任何生產(chǎn)系統(tǒng)相關(guān)的工具。
圖3

從軟件工程的角度來說,當(dāng)開發(fā)者開發(fā)好自己的項(xiàng)目后,下一步是上線運(yùn)行。具體到小游戲,我們用JavaScript開發(fā)好自己的游戲后,需要編譯成一個(gè)微信小游戲運(yùn)行時(shí)環(huán)境要求的格式,這就像我們在開發(fā)好Android APP之后,需要打包成正確有效的apk格式一樣。運(yùn)行時(shí)環(huán)境會(huì)統(tǒng)一處理編譯后的源代碼,其調(diào)用wx API的部分,肯定會(huì)派發(fā)到對應(yīng)的API Handler去調(diào)用移動(dòng)端操作系統(tǒng)(Android/IOS)提供的API,然后由操作系統(tǒng)來統(tǒng)一調(diào)度資源。

總結(jié)

小游戲的發(fā)布再次表明騰訊是國內(nèi)最大的游戲公司,也是實(shí)力最強(qiáng)勁的游戲公司之一。微信作為一個(gè)最重要的流量入口,這次小游戲的發(fā)布再次證明其在騰訊戰(zhàn)略地位之重要。從技術(shù)上來說,小游戲API基本來源于之前開發(fā)的小程序的API,小游戲是小程序的一個(gè)子類別,不是一個(gè)新事物,其核心還是其內(nèi)部的類瀏覽器內(nèi)核,而多任務(wù)的支持才是這次的重頭戲。最后附上微信V6.6.1的官方宣傳語:玩一個(gè)小游戲才是正經(jīng)事。
祝大家玩得開心,生活愉快。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容