Egret社区

egret发布微信小游戏

2019-1-8 13:28
932
本帖最后由 linchuanchuang 于 2019-1-8 13:29 编辑

公司项目要发布为微信游戏,最近搞了一下,确实有遇到一些问题,记录下来,方便以后用,也可以交流交流!1.资源:我们的游戏发布完有280M,所以必需分包,用了官网的方案分包http://developer.egret.com/cn/gi ... /package/index.html,基本上整个Resources的文件都放到资源服务器上去了,只留下loading用的几张图片在首包
2.传统protobuf,微信不支持,用这个解决的https://github.com/WanderWang/protobuf-egret/,也是官网的提供的方案,亲测可用,原理就是把.proto文件生成一个庞大的.js文件,生成的文件有点大,如果协议太多的话,可以删除JS里面一些没有用到的方法,能有效的缩小js文件的体积,具体可参考这个file:///C:\Users\ADMINI~1\AppData\Local\Temp\%W@GJ$ACOF(TYDYECOKVDYB.png https://bbs.egret.com/forum.php?mod=viewthread&tid=46130,还有jszip等三方库发到微信上报错,我都是参照这个文章解决的
3.wss:我们游戏用的是websocket,连接方式用的是_socket.connect(ip,port)这种方式,本来在网页上是ok的,微信开调试环境也是可以正常跟后端通讯的,但是微信正式环境只支持wss,不支持ws,后来跟后端和运营商量后,决定采用nginx代理端口的方式解决,这也是网上常用的解决方案,这种方式前后端改动都很小,就是在中间架一个代理服务器,客户端用_socket.connectbyurl(https://xxx.xxx.xx/id=2)的方式去连中间服务器,中间服务器根据id的值,代理到服务器的具体端口,还有一点微信要求所有从微信小游戏出去的请求都必须是https不能是http,所以在微信发出去的所有请求,包括资源服的地址,都必须是域名访问并且是https
4.接入sdk,我们接的是运营那边给过来自己的sdk,我的做法是发布好微信后,把sdk的JS文件放到stage1(分包文件中),然后调用我是在egret项目的platfrom.ts里面写了一个方法去调sdk的内容,在发布后的微信小游戏项目中的platform.js写具体的实现
5.eui自定义控制在微信使用中报错,用了这个老兄的工具解决的,https://bbs.egret.com/thread-495 ... cetag=s_pcqq_aiomsg,代码也很好理解,只要把地址改成自己的项目地址即可用
6.websocket断开的问题,在安卓环境下小游戏切到后台等几秒再切回前台,打印显示websocket.connected是false了,所以此时我会帮用户重连,但同样的操作下ios的websocket.connected是true,导致我不知道游戏是否真的断开,这个暂时是这样解决的,在ios上只要游戏切回前台就帮用户重新连接,具体原因后续找到再来更新

分享到 :
0 人收藏

2 个回复

倒序浏览
xixi39  登堂入室 | 2019-1-8 14:09:29
期待
liu_game  登堂入室 | 2019-1-8 17:11:11
SpriteSheet雪碧图,显示不对,你们遇到过吗
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号

Powered by Discuz! X3.2 © 2001-2019 Comsenz Inc.

返回顶部