英雄杀小游戏制作过程中的一些问题

  • Creator 版本:2.0.5

  • 目标平台: 微信、手Q

  1. drawcall 图片的排布方式,如平铺、九宫格打断了drawcall,为了减小包体、加快渲染,我们必须要用九宫格+平铺,但这两个都会造成drawcall打断,以至于这方面的优化变成了负优化(坐等优化)【已处理,等版本】

  2. 微信的2.2.4版本经常报Cannot read property '_renderFlag' of null,(昨天遇到了一个没有上报的2.4.1也有此问题)【等待处理】

  3. spine动画图片在某一帧突然出现或消失会造成内存泄露【等待处理】

  4. ios10.0.1文字渲染都是错的(网友有提过)【无法处理】

  5. 文字排版偶现文字渲染错误,频率较大(文字直接是错误的),不是必现。经过一场战斗之后,概率会变大(战斗中经常飘字)(只有手机版有问题)【等待处理】

  6. 文字描边在一些老点的安卓机上会发生渲染出错的问题,主要表现在如果描边宽度≠1时,描边渲染就会乱掉,会错位严重【无法处理,腾讯的问题】

  7. APP-SERVICE-SDK报错,疑似调用cc.sys.localStorage.setItem(key, value)接口导致的错误,后来直接调用微信的接口,错误就没了【等待处理】
    :setStorageSync:fail:internal error get DB fail;at api onHide callback function
    Error: APP-SERVICE-SDK:setStorageSync:fail:internal error get DB fail
    at setStorageSync (https://lib/WAGame.js:1:227604)

  8. 移动图片边缘会出现抖闪的问题【等待处理】
    Node添加N个小图片,按tick间隔时间向左或向右移动这个Node容器,内部的每个图片边缘会出现抖闪情况

补充:

  • 文字排版偶现文字渲染错误:正常应该为 “杨玉环发动丰艳补全了已掉血量的手牌数”错误的为“杨玉环发动丰艳补全了已掉血量的】牌数”

文字排版错误

  • ios10.0.1的文字渲染错误

    ios10.0.1

  • _renderFlag的报错:看代码,似乎node._children 初始化时是空数组[],不知道何时被置成了null

sys:Android 7.1.1,model:OPPO R11,wxv:6.6.7,sdkv:2.2.4gameThirdScriptErrorCannot read property ‘_renderFlag’ of null;at setTimeout callback functionTypeError: Cannot read property ‘_renderFlag’ of null at Object.markForUpdateRenderData (https://servicewechat.qq.com/game.js:3:283260) at Object.set [as spriteFrame] (https://servicewechat.qq.com/game.js:3:279494) at https://servicewechat.qq.com/game.js:135:154000 at https://servicewechat.qq.com/game.js:135:701562 at Array.forEach (native) at e.OnCompleteCallback (https://servicewechat.qq.com/game.js:135:701542) at https://servicewechat.qq.com/game.js:135:698112 at g. (https://servicewechat.qq.com/game.js:3:349945)

sys:iOS 11.2.2,model:iPhone 7 Plus<iPhone9,2>,wxv:6.7.1,sdkv:2.2.4gameThirdScriptErrornull is not an object (evaluating ‘this.node._renderFlag’);at setTimeout callback functionmarkForUpdateRenderData@https://servicewechat.qq.com/app-service.js:3:283260set@https://servicewechat.qq.com/app-service.js:3:279517https://servicewechat.qq.com/app-service.js:135:153988https://servicewechat.qq.com/app-service.js:135:701563forEach@[native code]OnCompleteCallback@https://servicewechat.qq.com/app-service.js:135:701549https://servicewechat.qq.com/app-service.js:135:698130https://servicewechat.qq.com/app-service.js:3:349946https://servicewechat.qq.com/app-service.js:3:348246

哇,大游戏啊

  1. 这个2.1版本解决了,可以通过手动合并 PR解决:

https://github.com/cocos-creator/engine/pull/3368
https://github.com/cocos-creator/engine/pull/3381
https://github.com/cocos-creator/engine/pull/3382
https://github.com/cocos-creator/engine/pull/3396

看看是不是有资源释放?最好有demo重现这个问题。

可以考虑使用 BMFont + SDF 的方式。

2赞

子龍大神回來啦?

九宮格跟平鋪打斷drawcall合併,可以透過PR解決,想請問這個1.10可用嗎 XD

1.10 没有打断drawcall吧?

  1. _renderFlag 报错的问题,一直没有找到办法必现
    2.一些常用的文字我们是用美术字替代了,但这里说的文字都不方便用BMFont,体积过大,基本不考虑。SDF不是很懂

感谢反馈,这游戏我们也经常玩,我先简单看下

下个 2.0.x 版本会优化~

这个应该是微信或手 Q 的底层实现问题

应该是在 OnCompleteCallback 时,相关 node 已经被销毁了。可以用 obj.isValid 判断下

我们这边callback没法挨个去检查,我们在那地方解耦了,要判断的话太多,想到的办法是在可能为空的地方特判。
庆幸的是,这个地方虽然会导致报错,但不会影响游戏正常运行。

1赞

借楼传图;


数据读取/设置报错。ccc verison:2.0.5 微信小游戏,小米手机真机调试首次启动必现。

cocos2.0.5版本,在手q平台上用cc.audioEngine.setMusicVolume()将音量设置为0无效,但在微信平台上却是可以的,不知道是为什么?