服務項目

需求溝通

h5開發小游戲

  話說眼下的小游戲可謂相當火熱,很多團隊都陸續啟動了微信小游戲項目計劃,并準備或正在進行立項前期的技術預研究。不過,當我們懷揣熱情去仔細琢磨微信官方文檔時 , 卻能發現不少“坑”。

  一、運行環境的坑

  首先微信小游戲是一個不同于瀏覽器的 JavaScript 運行環境,沒有 BOM 和 DOM API,所以我們第一個遇到的就是API兼容性問題。

  1、API兼容性

  1.1、網絡API

  BOM的核心是windows,表示的是一個瀏覽器的實例,在網頁中自定義的任何一個對象、變量和函數,都以windows作為其全局對象;缺乏Dom意味著http、websocket及本地存儲等通信用的API使用就會遇到問題,好在微信提供了這兩個API的私有實現,我們要做的就是適配。

  適配的基本思路是檢測是否是運行再微信平臺,然后利用JS動態語言特性, 對BOM的API進行動態重寫 , 優缺點如下:

  1.優點是API調用者無需做任何改動,適配成本幾乎為0。對微信小游戲和瀏覽器之間的運行環境差異無感知,非常友好。2.缺點是會增加代碼體積,但代碼體積的增加帶來的損失幾乎可以忽略不計。這種適配方案的性價比很高, 適配HTTP代碼示例如下:

  function MatchvsHttp(callback) { this.mCallback = callback; function send(url, callback, isPost, params) { var http = new XMLHttpRequest(); http.open(isPost ? "POST" : "GET", url, true); http.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); http.onreadystatechange = function () { if (http.readyState === 4) { if (http.status === 200) { callback.onMsg(http.responseText); } else { callback.onErr(http.status, http.statusText); } } }; if (isPost) { http.send(params); } else { http.send(null); } } /** * HTTP GET * @param url {String} ex:"http://api.com/wc3/submitOrder.do?key=fa" */ this.get = function (url) { send(url, this.mCallback, false, null); }; /** * HTTP POST * @param url {String} ex:"http://api.com/wc3/submitOrder.do" * @param params {String} ex:"lorem=ipsum&name=binny"; */ this.post = function (url, params) { send(url, this.mCallback, true, params); };}//adapter weixinif (typeof (wx)!=="undefined") { function MatchvsHttp(callback) { this.mCallback = callback; function send(url, callback, isPost, params) { // var pars = params.splt("&"); //TODO post const requestTask = wx.request({ url: url, data: { x: '', y: '' }, header: { 'content-type': 'application/json' }, success: function (res) { var rsp = JSON.stringify(res.data); MatchvsLog.logI("http success:" + rsp); callback.onMsg(rsp); }, fail: function (res) { MatchvsLog.logI("http fail:" + res.errMsg); callback.onErr(0, res.errMsg); } }); } /** * HTTP GET * @param url {String} ex:"http://api.com/wc3/submitOrder.do?key=fa" */ this.get = function (url) { send(url, this.mCallback, false, null); }; /** * HTTP POST * @param url {String} ex:"http://api.com/wc3/submitOrder.do" * @param params {String} ex:"lorem=ipsum&name=binny"; */ this.post = function (url, params) { send(url, this.mCallback, true, params); }; }}

  1.2、微信的模塊化

  微信小游戲提供了 CommonJS 風格的模塊 API,可以通過 module.exports 和 exports 導出模塊,通過 require 引入模塊 . 這與瀏覽器引入JS文件的方式截然不同 , 中間有一個隔離層。

  舉個例子說明模塊化帶來的問題。

  通常我們在瀏覽器上使用某個js文件里面自定義的類.通過

  但在微信中不可以這樣.需要把API都導入到一個對象上,使用時在加這個前綴.導致很多代碼需要修改,那么如何避免增加這個前綴呢?

  針對這種情況 , 解決的思路是將所有外部需要用到的方法和對象動態掛靠到window對象上去,將上面的代碼稍做修改示例如下:

  //user.js文件 function User() { } window.User = User; //掛靠到window對象上去. //index.html文件

  2、工作流變化

  由于微信小游戲沒有Dom和Bom,所以很多依賴Dom和Bom的庫都不能直接用,比如 jquery。

  微信的這套環境會或多或少會引起我們的工作流變化,使用第三方游戲開發引擎(比如Cocos Createor/Egret/Laya)可以彌補這些問題帶來的損失。

  二、資源限制

  1、每個小游戲允許上傳的代碼包總大小為 4MB。

  解決方法1:壓縮js文件,圖片資源放在服務器上做預加載。解決方法2:使用第三方引擎的資源管理功能。

  2、微信小程序要求開發者的服務器 支持https,wss協議。

  解決方案:服務器啟用HTTPS。實現的方式有很多,推薦Nginx反向代理。

  三、發布審核

  小游戲開發完成后發布上線需要具備如下的資格:

  1: 服務器域名備案

  2: https wss支持

  3: 軟件著作權證書 復印件+蓋章簽名

  4: 微信公眾平臺帳號及AppID

  5: 開發者工具

  wechat_devtools_1.02.1803210_x64

  6: 游戲自審報告復印件+簽名

  7: iOS開發中帳號(可選,沒有則填空)

  8: 游戲版號(開通微信支付需要)

  9:企業開發者身份+對公帳號(開通微信支付需要)
 

選擇一家app定制的軟件開發公司,最重要的是程序員的素質和綜合能力,仟源科技專業從事軟件開發,服務行業范圍非常之廣,匯聚了JAVA,NET,前端,APP應用,PHP,軟件測試等多方面的開發工程師,也有平面設計,產品設計與運營,網絡建設與運維等方面的專業人才,有多年的企業級軟件開發的經驗。

  仟源科技有限公司始終堅持以創業服務創業,以創新服務創新”的宗旨,做軟件開發,游戲開發和系統開發核心業務,實現前瞻性投資,為優秀創業者做一站式扶持,并建立“大服務、大扶持、大未來”的目標。仟源科技堅持以客戶需求為中心,打造企業品牌助力企業成長!那么最后說一句,如果您有軟件開發的需求,請馬上關注聯系我們吧。

上一篇:開發h5小游戲 下一篇:交易所開發
文章標簽:
文章評論:

專業的游戲開發/系統開發、品牌設計/網站建設,選仟源!

選擇專業的企業服務公司,服務更靠譜!

立即點擊咨詢>
客服圖標
客服圖標
118旺角心水论坛