今天(1 月 31 日)有不少开发者反馈 安卓升级到微信小游戏 7.0.3 版本后,小游戏时会出现画面模糊或者卡顿等问题。由于今天就是春节前送审的最后一天了,为了不影响大家的游戏上线,麻烦有遇到相关问题的开发者通过下述措施对游戏进行临时修复。
问题 1:部分安卓机型上画面变得模糊
解决方案:在发布后的 main.js 文件中的 onStart 函数里添加下列代码(主域与子域都需要添加该代码,否者子域触摸区域会有问题)
cc.ContainerStrategy.prototype._setupContainer = function (view, w, h) {
var locCanvas = cc.game.canvas, locContainer = cc.game.container;
if (!CC_WECHATGAME && cc.sys.os === cc.sys.OS_ANDROID) {
document.body.style.width = (view._isRotated ? h : w) + 'px';
document.body.style.height = (view._isRotated ? w : h) + 'px';
// Setup style
locContainer.style.width = locCanvas.style.width = w + 'px';
locContainer.style.height = locCanvas.style.height = h + 'px';
}
// Setup pixel ratio for retina display
var devicePixelRatio = view._devicePixelRatio = 1;
if (view.isRetinaEnabled()) {
devicePixelRatio = view._devicePixelRatio = window.devicePixelRatio || 1;
}
// Setup canvas
locCanvas.width = w * devicePixelRatio;
locCanvas.height = h * devicePixelRatio;
};
cc.view.enableRetina(true);
通知:根据微信爸爸最新的公告,如果是模糊问题,可延迟到 2 月 1 日送审!
问题 2:因 DeviceMotion 导致的卡顿或帧率不稳(v2.0.7 的才需要修改)
解决方案:需要修改微信适配层中的 DeviceMotionEvent 文件,可以下载我们修改好的版本 DeviceMotionEvent.js.zip,替换微信小游戏适配代码中 builtin/weapp-adapter/wechatgame/libs/engine/DeviceMotionEvent.js
文件。可以点击编辑器中的这个按钮,快速定位到该目录,记得替换后需要重新构建微信主域和子域,必须确保文件替换生效。
问题 3:文本显示变成黑块(v2.0.0 - v2.0.6,以及 v2.1.0 才需要修改)
解决方案:请 定制引擎,参考 这个提交 中的改动直接修改引擎中的“cocos2d/core/renderer/render-engine.js”文件。
问题 4:其它原因导致的卡顿
大部分游戏修复完以上问题,卡顿就能解决,就可以先送审。不过少部分游戏还是会遇到奇怪的卡顿,这种情况无需做任何处理,也不用专门提交版本。今晚游戏应该就已经自动恢复正常运行了。
更新 1:我们不断接收到开发者反馈,春节过后卡顿仍然存在,游戏数据也会受到影响。对此我们也没有想到。我们现在正在重新针对 7.0.3 的全新渲染架构调整引擎底层,尽量避免会卡顿的底层调用,同时请求微信进行架构优化,尽量避免卡顿。
更新 2:如果升级到 2.0.9 rc 版仍然卡,请先隐藏子域。子域问题我们这边优化不了,不过微信最近也在完善当中,可能就快要官方修复了!
非常抱歉,本次事件暴露了我们工作上的不足,给各位开发者朋友带来了困扰。我们深知每一款游戏都是大家披星带月的劳动成果,未来会尽力确保游戏能够稳定运行,这是对大家的努力付出最基本的尊重。新的一年里,我们还将加大基础投入和制度建设,助力游戏行业全面发展。
非常感谢热心提供反馈的开发者们,感谢奎特尔星球协助转发!预祝大家新春快乐,旅途愉快!
事故 Postmortem
为了不影响大家的工作,2 月 11 日前我们就会发布 Creator 2.0.8,紧急修复引擎相关问题。