發(fā)布時(shí)間:2023-11-27 14:04:26 瀏覽量:151次
什么是小游戲?
首先為大家介紹一下什么是小游戲:小游戲特指微信小游戲,是小程序的一個(gè)子類(lèi)目,可在微信內(nèi)被便捷地獲取和傳播,即點(diǎn)即玩,具備出色的用戶體驗(yàn)。在開(kāi)發(fā)的視角來(lái)看,小游戲是一個(gè)基于Canvas/WebGL + 微信社交開(kāi)放能力的新平臺(tái)。在框架上看分為三層,是一個(gè)典型的分層架構(gòu)。微信中有一個(gè)小游戲的Runtime去運(yùn)行小游戲,而OS本身可能會(huì)涉及到不同類(lèi)的設(shè)備。
如果放大小游戲的Runtime可以看到很多的細(xì)節(jié),第一就是游戲邏輯,也就是與平臺(tái)無(wú)關(guān)的游戲邏輯的開(kāi)發(fā)。第二部分是游戲引擎,大部分會(huì)用到一些引擎的工作流、一些各種系統(tǒng)封裝好的高層的API。第三部分是weapp,小游戲的框架是參考了webview的框架,但其實(shí)它的底層不是webview,而是webview精簡(jiǎn)優(yōu)化過(guò)的平臺(tái),小游戲有的只是與核心相關(guān)的一些渲染的API。這里的weapp-adaper是把小游戲的能力適配到與webview更接近的環(huán)境,讓更上層的游戲或引擎本身能夠更快速地集入到平臺(tái)中。
小游戲Runtime
微信的Runtime對(duì)外暴露的都是微信的API,所有的能力都是通過(guò)微信API發(fā)布出去的。底層最基本的能力是渲染相關(guān)的,即Canvas 2d和WebGL。其他一些微信相關(guān)的能力是另外一部,所以小游戲在架構(gòu)上和小程序是有差別的,但用戶體驗(yàn)起來(lái)沒(méi)有太大的區(qū)別。小游戲是沒(méi)有頁(yè)面概念的,在實(shí)現(xiàn)上也不完全是webview,其中不必要的部分已經(jīng)被去掉了。
總的來(lái)說(shuō)小游戲的入口為game.js,游戲可以利用底層的一些能力將游戲的整個(gè)界面繪制出來(lái)。配置文件為game.json主要用來(lái)配置小游戲是橫屏還是豎屏,小游戲的全局對(duì)象game Gobal類(lèi)似于webview中的window對(duì)象,同時(shí)支持javascript語(yǔ)言。但是小游戲有一個(gè)重要的一個(gè)限制是禁止動(dòng)態(tài)執(zhí)行代碼,開(kāi)發(fā)者必須先提交審核,在審核通過(guò)后才可以上架給普通用戶。另外,小游戲包括引擎的代碼量比較大,所以限制大小比小程序要大,首包限制大小為4M。
下面來(lái)說(shuō)一下Webview Adapter,它的初衷是為了讓游戲開(kāi)發(fā)者更好地熟悉我們的平臺(tái),所以我們的平臺(tái)在能力上會(huì)盡可能地與webview做一些適配,其實(shí)這個(gè)適配也是很簡(jiǎn)單的一層。比如說(shuō)我們?cè)跒g覽器里面使用image對(duì)象創(chuàng)建一個(gè)圖片,而在小游戲里是通過(guò)wx.createimage來(lái)創(chuàng)建的,在代碼中需要做一個(gè)簡(jiǎn)單的適配。比如說(shuō)Canvas、Document都是在Adapter中實(shí)現(xiàn)的,大家可以研究鏈接中的代碼。其中有一些優(yōu)化的版本,之后官方不會(huì)繼續(xù)維系這個(gè)Adapter,因?yàn)槲覀儠?huì)更專(zhuān)注于底層能力的建設(shè)。如果大家已經(jīng)比較熟悉這個(gè)平臺(tái)的話,就會(huì)比較容易地開(kāi)發(fā)游戲。比如Document這個(gè)對(duì)象在小游戲框架本身中跟普通對(duì)象是沒(méi)有區(qū)別的,它是Adapter做的一個(gè)簡(jiǎn)單的適配。
小游戲能力概覽
小游戲的社交開(kāi)放能力現(xiàn)在已經(jīng)對(duì)外開(kāi)放了。其中最重要的一個(gè)能力是開(kāi)放域,將微信的好友關(guān)系列開(kāi)放出去,給開(kāi)發(fā)者一起使用,但也存在著一些限制。因?yàn)樾∮螒蛉ブ行幕奶攸c(diǎn),分享這一部分也是非常重要的,開(kāi)發(fā)者要考慮如何將這個(gè)能力利用起來(lái)。在代碼方面,因?yàn)槭装拗剖?兆,但部分小游戲的代碼量可能比較大。我們最近也在規(guī)劃一個(gè)分包的能力,異步加載代碼,但這個(gè)代碼是一定要經(jīng)過(guò)我們審核的。
龍?jiān)纯萍?/strong>是杭州市IT行業(yè)的領(lǐng)先企業(yè)。服務(wù)類(lèi)別涵蓋Internet服務(wù)領(lǐng)域,主要包括網(wǎng)站建設(shè),小程序商城,小程序定制開(kāi)發(fā),游戲開(kāi)發(fā),APP定制開(kāi)發(fā)和推廣服務(wù)。 龍?jiān)纯萍贾铝τ跒榇蠖鄶?shù)需求者解決各種實(shí)際需求問(wèn)題,并提供全方位的創(chuàng)意服務(wù)
如何開(kāi)發(fā)一款小游戲?
那么如何開(kāi)發(fā)一款小游戲?因?yàn)槲冶救艘仓皇情_(kāi)發(fā)過(guò)一些簡(jiǎn)單的游戲,并不是專(zhuān)業(yè)進(jìn)行游戲開(kāi)發(fā),所以接下來(lái)我會(huì)更多地介紹一下如何利用微信的能力來(lái)開(kāi)發(fā)小游戲。
選擇小游戲引擎
首先在開(kāi)發(fā)游戲時(shí)要選擇引擎,我們與引擎商也有著比較密切的合作,開(kāi)發(fā)小游戲的引擎一定要是適配的。比如在底層,一開(kāi)始引擎可能只支持原生的游戲,在微信小游戲上就要做一些適配,依賴瀏覽器特有的能力。Cocos Creator、Egret Engine、LayaAir Engine這三個(gè)引擎已經(jīng)支持了小游戲的開(kāi)發(fā),網(wǎng)上也有相應(yīng)的文章介紹如何發(fā)布到微信小游戲的平臺(tái)。
設(shè)備/環(huán)境適配
有關(guān)設(shè)備管理的適配,小游戲會(huì)有API提供獲取屏幕的寬高、設(shè)備像素比等能力。在小游戲開(kāi)發(fā)完成后,在開(kāi)發(fā)者工具也可以發(fā)起真機(jī)測(cè)試的請(qǐng)求,微信提供了不同設(shè)備的測(cè)試集群,幫助開(kāi)發(fā)者提前去發(fā)現(xiàn)問(wèn)題。基礎(chǔ)庫(kù)提供的wx API本身是一個(gè)不斷迭代更新的過(guò)程,對(duì)于使用了新能力的小游戲,需要做低版本兼容。比如在檢測(cè)到不支持新 API的低版本允許有損服務(wù)用戶。同時(shí),如果某個(gè)低版本的用戶占比較少,可以考慮在管理后臺(tái)直接配置小游戲要求的基礎(chǔ)庫(kù)最低版本,當(dāng)然也意味著這一部分用戶在接觸到這個(gè)小游戲時(shí),微信客戶端會(huì)彈出一個(gè)要求用戶更新到微信新版本才可使用該小游戲的提示,如果不更新可能就會(huì)失去這個(gè)用戶。
設(shè)備/環(huán)境適配
微信登錄
小游戲的登陸過(guò)程與小程序類(lèi)似,需要用戶自定義登錄狀態(tài)。appsecret/session_key代表的是小游戲開(kāi)發(fā)者和微信平臺(tái)之間的一種信任約定,比如支付、上報(bào)托管數(shù)據(jù),平臺(tái)方需要驗(yàn)證 access_token,和用戶相關(guān)的還要驗(yàn)證session_key的簽名,才能保證請(qǐng)求來(lái)自于小游戲開(kāi)發(fā)者或用戶。access_token是一種應(yīng)用態(tài)的 access_token,與用戶無(wú)關(guān),需要保證全局維護(hù)一份,應(yīng)該有一個(gè)中控的模塊去保證 access_token有效,同時(shí)在有效期內(nèi)直接使用本地 cache的 access_token,而不是每次使用都去生成新的 access_token,否則可能遇到調(diào)用頻率限制的錯(cuò)誤而影響服務(wù)。切記 appsecret/session_key不要放到前端代碼中去,否則可能會(huì)被惡意利用從而損壞小游戲開(kāi)發(fā)者或用戶的權(quán)益。
微信登錄
緩存
緩存類(lèi)型包括數(shù)據(jù)緩存和文件緩存兩種。數(shù)據(jù)緩存即key-value存儲(chǔ),適合結(jié)構(gòu)化類(lèi)型的小數(shù)據(jù)存儲(chǔ),上限為 10MB。文件緩存提供了一個(gè)完整的文件系統(tǒng) API,包括目錄 /文件的增刪改讀,適合針對(duì)經(jīng)常使用的網(wǎng)絡(luò)資源做本地緩存,上限是50MB。
和瀏覽器不同的是,微信只提供了基本的存儲(chǔ)管理能力,并不對(duì)存儲(chǔ)什么以及存儲(chǔ)滿時(shí)刪除什么做一些操作。開(kāi)發(fā)者自行靈活定義緩存及淘汰策略,比如對(duì)經(jīng)常訪問(wèn)的資源存儲(chǔ)到文件系統(tǒng)以及在文件存儲(chǔ)滿時(shí),清理一些最近不常訪問(wèn)的文件。
緩存
開(kāi)放數(shù)據(jù)域
我們來(lái)說(shuō)一下開(kāi)發(fā)數(shù)據(jù)域,也就是在保護(hù)用戶隱私的前提下把用戶的數(shù)據(jù)開(kāi)放給小游戲。這是一個(gè)封閉、獨(dú)立的javascript作用域,開(kāi)放數(shù)據(jù)域是一個(gè)獨(dú)立的目錄,其入口文件是index.js。目前的限制在于僅支持2d渲染模式,數(shù)據(jù)只進(jìn)不出。比如說(shuō)一個(gè)排行榜,它的目的肯定是用來(lái)給用戶看的。
我們簡(jiǎn)單看一下它的實(shí)現(xiàn)方案,左邊是主域。用戶拿到這些數(shù)據(jù)后實(shí)現(xiàn)排行榜其實(shí)也是一個(gè)Canvas。它的區(qū)別在于Canvas不能把數(shù)據(jù)取出來(lái),無(wú)法分析其中的數(shù)據(jù)是什么。主域里面有一個(gè)Canvas,在微信里上屏Canvas跟屏幕關(guān)聯(lián),后面都是離線的Canvas,離線的Canvas可以自己根據(jù)需求使用的。一旦開(kāi)放數(shù)據(jù)以后,上屏Canvas不能把里面的數(shù)據(jù)取出來(lái),下一個(gè)Canvas也不能取出來(lái),保證了數(shù)據(jù)的安全性。
開(kāi)放數(shù)據(jù)域
因?yàn)槲覀兊臄?shù)據(jù)在開(kāi)發(fā)數(shù)據(jù)域中,用戶沒(méi)有辦法進(jìn)行開(kāi)發(fā)。所以要求開(kāi)發(fā)者在開(kāi)發(fā)時(shí)將需要的數(shù)據(jù)托管到我們這里,與用戶關(guān)聯(lián)起來(lái)。這樣就可以在開(kāi)發(fā)數(shù)據(jù)域里面取到相關(guān)數(shù)據(jù),其應(yīng)用場(chǎng)景有好友排行、群排行榜、超越好友提示等。用戶在輸入的時(shí)候,重復(fù)用戶的所有操作,在上屏的Canvas和離屏的Canvas上就得到了用戶的所有輸入,不會(huì)有開(kāi)放數(shù)據(jù)滲透進(jìn)去。
開(kāi)放數(shù)據(jù)域
分享
如果用戶在游戲中達(dá)到了很高的分?jǐn)?shù),可以與好友PK一下。在自定義轉(zhuǎn)發(fā)的窗口,標(biāo)題和圖片都可以自定義。但是現(xiàn)在有很多小游戲非常騷擾用戶,他們做了很多一定需要分享,才能允許玩游戲的設(shè)定。這是大家需要思考的部分,如何既不影響用戶的體驗(yàn),又能夠促進(jìn)小游戲的互動(dòng),在這里需要找到一個(gè)合適的平衡點(diǎn)。同時(shí),在分享數(shù)據(jù)后將小游戲與這個(gè)群聊關(guān)聯(lián)起來(lái),我們就可以看到一個(gè)小游戲平臺(tái)。
分享
支付
小游戲是支持虛擬支付的,但目前僅適用于安卓系統(tǒng)中。且它的方式目前只有一種,即貨幣托管的方式。主要分為兩個(gè)流程,一是用戶花錢(qián)購(gòu)買(mǎi)游戲幣,這與游戲的服務(wù)端是沒(méi)有關(guān)系的。發(fā)起支付時(shí)微信客戶端會(huì)生成一個(gè)訂單,讓用戶確認(rèn)支付,這是異步的。平臺(tái)負(fù)責(zé)把用戶RMB兌換成對(duì)應(yīng)的游戲幣,存儲(chǔ)到用戶對(duì)應(yīng)的游戲帳號(hào)上。二是使用游戲幣購(gòu)買(mǎi)道具,開(kāi)發(fā)者可以扣除對(duì)應(yīng)的游戲幣,給用戶發(fā)放游戲內(nèi)道具,扣除游戲幣的過(guò)程需要有一定的事務(wù)機(jī)制,保證在網(wǎng)絡(luò)異常的情況下交易正常??鄢螒驇诺慕涌谥С指鶕?jù)訂單ID去重,意味著在網(wǎng)絡(luò)超時(shí)等情況下,開(kāi)發(fā)者可用同樣的訂單ID去重試扣除,直至返回明確的響應(yīng)。
支付
性能
小游戲常見(jiàn)的性能問(wèn)題,一般是內(nèi)存造成的。如果內(nèi)存占用太多會(huì)被微信客戶端主動(dòng)關(guān)閉,因此開(kāi)發(fā)者在用戶游戲過(guò)程中要及時(shí)釋放不再使用的內(nèi)存,特別是Canvas和Image類(lèi)的大型對(duì)象,同時(shí)可以主動(dòng)調(diào)用wx.triggerGC觸發(fā)底層回收對(duì)應(yīng)資源。對(duì)于和游戲邏輯相對(duì)獨(dú)立的工作,可以考慮在worker中去實(shí)現(xiàn),小游戲提供了獨(dú)立的worker線程執(zhí)行js邏輯的能力。
性能
版本更新機(jī)制
小游戲有熱啟動(dòng)和冷啟動(dòng)之分,冷啟動(dòng)是指內(nèi)存中無(wú)該小游戲的運(yùn)行實(shí)例的情況下,啟動(dòng)小游戲的過(guò)程;熱啟動(dòng)是指小游戲的運(yùn)行實(shí)例在內(nèi)存中還存在,只是暫時(shí)切換到了后臺(tái),這時(shí)用戶再次觸發(fā)小游戲回到前臺(tái)的過(guò)程。在如果用戶點(diǎn)擊啟動(dòng)之后,游戲運(yùn)行時(shí)會(huì)加載出來(lái)這款游戲。在點(diǎn)擊右上角的菜單時(shí),按鈕只是掛后臺(tái),在一定的時(shí)間內(nèi)再啟動(dòng)時(shí),它會(huì)立即恢復(fù),這時(shí)內(nèi)存將會(huì)釋放。
小游戲會(huì)在冷啟動(dòng)時(shí)檢查小游戲的版本,如有新版本,在下載回本地后,下一次冷啟動(dòng)即可使用最新版。當(dāng)然,我們也提供了 API可以供開(kāi)發(fā)者決策在有版本可用時(shí),是否需要強(qiáng)制更新,應(yīng)用最新的版本。
版本更新機(jī)制
運(yùn)維
管理端提供了發(fā)布、回滾、停服等能力,開(kāi)發(fā)者可以充分利用平臺(tái)的能力。比如在后臺(tái)操作中,js可能會(huì)報(bào)錯(cuò)。腳本錯(cuò)誤主要由運(yùn)行過(guò)程中未捕獲的異常觸發(fā),該類(lèi)異??赡軙?huì)導(dǎo)致用戶小游戲前端的js邏輯暫停執(zhí)行。同時(shí),平臺(tái)也提供了完善的數(shù)據(jù)分析服務(wù),可以通過(guò)小游戲使用助手進(jìn)行數(shù)據(jù)分析。
熱門(mén)資訊
探討游戲引擎的文章,介紹了10款游戲引擎及其代表作品,涵蓋了RAGE Engine、Naughty Dog Game Engine、The Dead Engine、Cry Engine、Avalanche Engine、Anvil Engine、IW Engine、Frostbite Engine、Creation引擎、Unreal Engine等引擎。借此分析引出了游戲設(shè)計(jì)領(lǐng)域和數(shù)字藝術(shù)教育的重要性,歡迎點(diǎn)擊咨詢報(bào)名。
2. 手機(jī)游戲如何開(kāi)發(fā)(如何制作傳奇手游,都需要準(zhǔn)備些什么?)
?如何制作傳奇手游,都需要準(zhǔn)備些什么?提到傳奇手游相信大家都不陌生,他是許多80、90后的回憶;從起初的端游到現(xiàn)在的手游,說(shuō)明時(shí)代在進(jìn)步游戲在更新,更趨于方便化移動(dòng)化。而如果我們想要制作一款傳奇手游的
3. B站視頻剪輯軟件「必剪」:免費(fèi)、炫酷特效,小白必備工具
B站視頻剪輯軟件「必剪」,完全免費(fèi)、一鍵制作炫酷特效,適合新手小白??靵?lái)試試!
4. Steam值得入手的武俠游戲盤(pán)點(diǎn),各具特色的快意江湖
游戲中玩家將面臨武俠人生的掙扎抉擇,戰(zhàn)或降?殺或放?每個(gè)抉定都將觸發(fā)更多愛(ài)恨糾葛的精彩奇遇?!短烀嬗肪哂卸嗑€劇情多結(jié)局,不限主線發(fā)展,高自由...
5. Bigtime加密游戲經(jīng)濟(jì)體系揭秘,不同玩家角色的經(jīng)濟(jì)活動(dòng)
Bigtime加密游戲經(jīng)濟(jì)模型分析,探討游戲經(jīng)濟(jì)特點(diǎn),幫助玩家更全面了解這款GameFi產(chǎn)品。
6. 3D動(dòng)漫建模全過(guò)程,不是一般人能學(xué)的會(huì)的,會(huì)的多不是人?
步驟01:面部,頸部,身體在一起這次我不準(zhǔn)備設(shè)計(jì)圖片,我從雕刻進(jìn)入。這一次,它將是一種純粹關(guān)注建模而非整體繪畫(huà)的形式。像往常一樣,我從Sphere創(chuàng)建它...
7. 3D動(dòng)畫(huà)軟件你知道幾個(gè)?3ds Max、Blender、Maya、Houdini大比拼
當(dāng)提到3D動(dòng)畫(huà)軟件或動(dòng)畫(huà)工具時(shí),指的是數(shù)字內(nèi)容創(chuàng)建工具。它是用于造型、建模以及繪制3D美術(shù)動(dòng)畫(huà)的軟件程序。但是,在3D動(dòng)畫(huà)軟件中還包含了其他類(lèi)型的...
8. 開(kāi)發(fā)三昧游戲叫什么(三昧動(dòng)漫)
?三昧動(dòng)漫對(duì)于著名ARPG游戲《巫師》系列,最近CD Projekt 的高層回應(yīng)并不會(huì)推出《巫師4》。因?yàn)椤段讕煛废盗性诓邉澋臅r(shí)候一直定位在“三部曲”的故事框架,所以在游戲的出品上不可能出現(xiàn)《巫師4》
9. 3D打印技巧揭秘!Cura設(shè)置讓你的模型更堅(jiān)固
想讓你的3D打印模型更堅(jiān)固?不妨嘗試一下Cura參數(shù)設(shè)置和設(shè)計(jì)技巧,讓你輕松掌握!
10. Unity3D入門(mén):手把手帶你開(kāi)發(fā)一款坦克大戰(zhàn)的游戲
Unity工程創(chuàng)建完成后如圖所示: 接下來(lái)應(yīng)該導(dǎo)入此項(xiàng)目所需的Unity Package文件,要用到的Unity package文件大家可以去Unity3D的官方網(wǎng)站下載(地址:ht...
最新文章
同學(xué)您好!