Protobuf在微信小遊戲開發中的使用技巧
微信小遊戲釋出後,許多 HTML5 遊戲開發者希望把現有的 HTML5 遊戲遷移到微信小遊戲中,但由於一些技術上的問題導致程式卡殼。通過梳理Egret社群、白鷺小遊戲開發技術討論群等途徑的反饋後發現,有不少開發者遇到的難題在於「如何在微信小遊戲中使用Protobuf 」。
白鷺引擎架構師王澤在近期釋出了一個開源專案protobuf-egret,提供了一個可以適配微信小遊戲的Protobuf 類庫以及對應的程式碼生成工具,並且這個工具不僅限於白鷺引擎,即使是使用其他 HTML5 遊戲引擎的開發者也可以使用。
專案地址:
https://github.com/WanderWang/protobuf-egret/
開源專案 protobuf-egret主要包含了特性、原理、如何安裝與使用、如何執行DEMO以及部分已知問題等內容,希望通過本篇內容能夠更好的幫助大家開展微信小遊戲工作。
特性
1.提供 protobuf.js 基礎執行時庫
2.提供命令列指令碼,將 protofile 生成 JavaScript 程式碼
3.生成正確的 .d.ts 程式碼,以方便 TypeScript 專案使用
4.一鍵配置白鷺引擎的配置檔案,無需開發者手動修改配置即可在專案中直接整合
5.本專案雖然名為 protobuf-egret,但是理論上支援所有 HTML5 遊戲引擎。歡迎使用 PIXI.js , Cocos2d-js , LayaAir 等其他引擎的開發者使用本庫。
原理
Protobuf 是由 Google 設計的序列化資料通訊協議。它的基本原理是,通過一個 proto 檔案,生成對應平臺的程式碼,並在這部分程式碼中包含了將物件進行二進位制序列化以及對應反序列化的邏輯,研發的前後端如果統一使用同一份Protobuf協議定義介面,就可以統一介面,提升開發效率,並通過Protobuf提供的高效率壓縮機制節省通訊流量開銷。
protobufjs 是 Protobuf 在 JavaScript 中的實現,它包含了一個用於生成程式碼的命令列工具以及一個執行時庫。在一個標準 Web 應用或者 NodeJS 應用中,使用 protobufjs 就已經可以解決絕大部分問題。但是在白鷺引擎以及微信小遊戲中,存在著兩個問題,使得 protobufjs 的使用存在一些困難:
1.protobufjs 提供了多種使用方式,但是由於微信小遊戲禁止 eval , new Function 等動態程式碼形式,所以無法使用 protobuf.load(`awesome.proto`) 這樣的方式,必須使用程式碼生成機制。
2.雖然protobufjs 自身存在著 pbts 命令可以生成 .d.ts 檔案,但是在全域性模式而非 ES6 module 的情況下存在一些錯誤。
本專案致力於解決這兩個問題,封裝了 protobufjs 庫及命令列,提供了更簡潔的呼叫方式:
1.在執行時庫上使用 protobufjs 6.8.4 的執行時庫。由於微信小遊戲禁止 eval , new Function 等動態程式碼形式,所以本專案只提供了生成程式碼的形式,不支援通過 protobuf.load(`awesome.proto`) 的方式。
2.修改了生成的 JavaScript 與 .d.ts 檔案,以保證可以順利的在白鷺引擎及微信小遊戲上執行。
3.提供了兩個命令 pb-egret add 與 pb-egret generate用於搭建Protobuf 環境和生成程式碼。
如何安裝與使用
如何執行 Demo
下載原始碼,使用 egret run egret-project即可直接執行Demo專案
已知問題
proto 檔案中的每一個協議一定要從屬於一個 package,否則.d.ts生成會出現錯誤導致 ts 檔案無法正確的找到這些類。
目前,已經有多個產品均使用這個類庫成功的將遊戲釋出到微信小遊戲中,歡迎各位開發者使用。如您有關於微信小遊戲的問題諮詢或建議,請到Egret 社群、白鷺小遊戲研發技術討論微信群參與討論,官方技術人員將為你一一解答。
原文釋出時間為:2018年01月24日
原文作者:白鷺科技
本文來源:開源中國 如需轉載請聯絡原作者
相關文章
- 微信小遊戲開發小記遊戲開發
- 使用Laya引擎開發微信小遊戲(上)遊戲
- 使用Laya引擎開發微信小遊戲(下)遊戲
- 微信小遊戲開發(1)遊戲開發
- 微信小遊戲開發(2)遊戲開發
- 微信小遊戲開發(3)遊戲開發
- 微信小遊戲開發(6)-Adapter遊戲開發APT
- 微信小遊戲開發總結遊戲開發
- 誰在玩微信小遊戲?遊戲
- 微信小遊戲開發(8)-模組化遊戲開發
- 微信小遊戲開發(9)- 分包載入遊戲開發
- 微信小遊戲開發(10)-音訊播放遊戲開發音訊
- 微信小遊戲首度亮相 ChinaJoy,助力開發者玩轉小遊戲遊戲
- 微信小遊戲開發(11)-檔案系統遊戲開發
- 微信小遊戲開發技巧(大會演講內容整理)丨掘金開發者大會遊戲開發
- 微信小遊戲分包遊戲
- 微信小遊戲和白鷺引擎開發實踐遊戲
- 微信小遊戲好友排行榜快速開發教程遊戲
- 使用mpvue開發微信小程式Vue微信小程式
- 微信小遊戲開放域之helloworld遊戲
- 微信小遊戲開發(4)-動畫和觸控事件遊戲開發動畫事件
- 微信小程式小技巧微信小程式
- 微信小程式--遊戲demo微信小程式遊戲
- PuerTS和HybridCLR哪個更適合開發微信小遊戲遊戲
- 第147篇:微信小程式開發中Promise的使用(aysnc,await)微信小程式PromiseAI
- 微信小程式:拼圖遊戲微信小程式遊戲
- 你踩過幾個?盤點微信H5小遊戲開發中的那些坑H5遊戲開發
- 微信小程式video在元件中的使用---暫停影片微信小程式IDE元件
- 微信小程式開發系列五:微信小程式中如何響應使用者輸入事件微信小程式事件
- 微信小遊戲程式碼包侵權的避開技巧(含處理指令碼程式碼)遊戲指令碼
- 微信公開課:小遊戲設計有“套路”遊戲設計
- 微信小程式開發微信小程式
- 使用 Mpvue 開發微信小程式的最佳實踐Vue微信小程式
- 使用wepy開發微信小程式01——常用的元件微信小程式元件
- 微信小遊戲開發(7)-支援情況和執行環境遊戲開發
- 微信小程式開發中遇到的幾個小問題微信小程式
- 開發微信小程式的作用微信小程式
- 『小程式開發』關於微信小程式內建元件swiper,circular(銜接)使用小技巧(實戰)微信小程式元件