如何開發一款小游戲 如何自己編程做游戲( 二 )


設備/環境適配
有關設備管理的適配 , 小游戲會有API提供獲取屏幕的寬高、設備像素比等能力 。 在小游戲開發完成后 , 在開發者工具也可以發起真機測試的請求 , 微信提供了不同設備的測試集群 , 幫助開發者提前去發現問題 。 基礎庫提供的wx API本身是一個不斷迭代更新的過程 , 對于使用了新能力的小游戲 , 需要做低版本兼容 。 比如在檢測到不支持新 API的低版本允許有損服務用戶 。 同時 , 如果某個低版本的用戶占比較少 , 可以考慮在管理后臺直接配置小游戲要求的基礎庫最低版本 , 當然也意味著這一部分用戶在接觸到這個小游戲時 , 微信客戶端會彈出一個要求用戶更新到微信新版本才可使用該小游戲的提示 , 如果不更新可能就會失去這個用戶 。

如何開發一款小游戲 如何自己編程做游戲

文章插圖

設備/環境適配
微信登錄
小游戲的登陸過程與小程序類似 , 需要用戶自定義登錄狀態 。 appsecret/session_key代表的是小游戲開發者和微信平臺之間的一種信任約定 , 比如支付、上報托管數據 , 平臺方需要驗證 access_token , 和用戶相關的還要驗證session_key的簽名 , 才能保證請求來自于小游戲開發者或用戶 。 access_token是一種應用態的 access_token , 與用戶無關 , 需要保證全局維護一份 , 應該有一個中控的模塊去保證 access_token有效 , 同時在有效期內直接使用本地 cache的 access_token , 而不是每次使用都去生成新的 access_token , 否則可能遇到調用頻率限制的錯誤而影響服務 。 切記 appsecret/session_key不要放到前端代碼中去 , 否則可能會被惡意利用從而損壞小游戲開發者或用戶的權益 。
如何開發一款小游戲 如何自己編程做游戲

文章插圖

微信登錄
緩存
緩存類型包括數據緩存和文件緩存兩種 。 數據緩存即key-value存儲 , 適合結構化類型的小數據存儲 , 上限為 10MB 。 文件緩存提供了一個完整的文件系統 API , 包括目錄 /文件的增刪改讀 , 適合針對經常使用的網絡資源做本地緩存 , 上限是50MB 。
和瀏覽器不同的是 , 微信只提供了基本的存儲管理能力 , 并不對存儲什么以及存儲滿時刪除什么做一些操作 。 開發者自行靈活定義緩存及淘汰策略 , 比如對經常訪問的資源存儲到文件系統以及在文件存儲滿時 , 清理一些最近不常訪問的文件 。
緩存
開放數據域
我們來說一下開發數據域 , 也就是在保護用戶隱私的前提下把用戶的數據開放給小游戲 。 這是一個封閉、獨立的javascript作用域 , 開放數據域是一個獨立的目錄 , 其入口文件是index.js 。 目前的限制在于僅支持2d渲染模式 , 數據只進不出 。 比如說一個排行榜 , 它的目的肯定是用來給用戶看的 。
我們簡單看一下它的實現方案 , 左邊是主域 。 用戶拿到這些數據后實現排行榜其實也是一個Canvas 。 它的區別在于Canvas不能把數據取出來 , 無法分析其中的數據是什么 。 主域里面有一個Canvas , 在微信里上屏Canvas跟屏幕關聯 , 后面都是離線的Canvas , 離線的Canvas可以自己根據需求使用的 。 一旦開放數據以后 , 上屏Canvas不能把里面的數據取出來 , 下一個Canvas也不能取出來 , 保證了數據的安全性 。
開放數據域
因為我們的數據在開發數據域中 , 用戶沒有辦法進行開發 。 所以要求開發者在開發時將需要的數據托管到我們這里 , 與用戶關聯起來 。 這樣就可以在開發數據域里面取到相關數據 , 其應用場景有好友排行、群排行榜、超越好友提示等 。 用戶在輸入的時候 , 重復用戶的所有操作 , 在上屏的Canvas和離屏的Canvas上就得到了用戶的所有輸入 , 不會有開放數據滲透進去 。
如何開發一款小游戲 如何自己編程做游戲

文章插圖

開放數據域
分享
如果用戶在游戲中達到了很高的分數 , 可以與好友PK一下 。 在自定義轉發的窗口 , 標題和圖片都可以自定義 。 但是現在有很多小游戲非常騷擾用戶 , 他們做了很多一定需要分享 , 才能允許玩游戲的設定 。 這是大家需要思考的部分 , 如何既不影響用戶的體驗 , 又能夠促進小游戲的互動 , 在這里需要找到一個合適的平衡點 。 同時 , 在分享數據后將小游戲與這個群聊關聯起來 , 我們就可以看到一個小游戲平臺 。

推薦閱讀