也试过用有加载问题的安卓的手机去单独访问资源路径 ---- 这个没问题到小游戏就有问题是么?
游戏内部分资源无法加载,基本都看不到完整模型。微信小游戏//我们技术端核查:部分安卓机无法解析域名导致无法加载资源,我们这边cdn域名是没有问题,也试过用有加载问题的安卓的手机去单独访问资源路径,得到回复这个域名是从微信渠道内部环境发起的请求,辛苦官方大佬核查解答。 [图片][图片]
2023-06-06手动设置下canvas的宽高试试
真机拿不到纹理? 模拟器没问题有大神能看看吗 , 没有框架, 一共150行 "use strict"; var log = console.log var glCanvas, glContext, glShader, glPositionData, glTexture var loadShader = function (shaderSource, shaderType) { const shader = glContext.createShader(shaderType); glContext.shaderSource(shader, shaderSource); glContext.compileShader(shader); return shader; } var createProgram = function (vs, fs) { var program = glContext.createProgram(); glContext.attachShader(program, loadShader(vs, glContext.VERTEX_SHADER)) glContext.attachShader(program, loadShader(fs, glContext.FRAGMENT_SHADER)) glContext.linkProgram(program); return program; } var glInit = function () { var canvas = wx.createCanvas(); var gl = canvas.getContext("webgl"); glCanvas = canvas glContext = gl glShader = createProgram(` attribute vec2 p,t; varying vec2 v; void main() { gl_Position = vec4(p * vec2(1, -1), 0, 1); v=t; }`, ` precision mediump float; varying vec2 v; uniform sampler2D s; void main() { gl_FragColor=texture2D(s,v); }`); const glVertexData = new ArrayBuffer(6 * 16); const buffer = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, buffer); gl.bufferData(gl.ARRAY_BUFFER, glVertexData.byteLength, gl.DYNAMIC_DRAW); glPositionData = new Float32Array(glVertexData); let offset = 0; const initVertexAttribArray = (name, type, typeSize, size, normalize = 0) => { const location = gl.getAttribLocation(glShader, name); gl.enableVertexAttribArray(location); gl.vertexAttribPointer(location, size, type, normalize, 16, offset); offset += size * typeSize; } initVertexAttribArray('p', gl.FLOAT, 4, 2); // position initVertexAttribArray('t', gl.FLOAT, 4, 2); // texture coords } glInit(); function glCreateTexture(image) { var gl = glContext const texture = gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, texture); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image); return texture; } var img_1 function load_img() { var img = wx.createImage() img.addEventListener('load', () => { glTexture = glCreateTexture(img) }) img.src = 'graphics/Ninja Frog.png' img_1 = img } load_img() function glDraw(x = 0, y = 0, w = img_1.width, h = img_1.height, uv0X = 0, uv0Y = 0, uv1X = 1, uv1Y = 1) { //world space to clip space x = x / glCanvas.width * 2 - 1 y = y / glCanvas.height * 2 - 1 w = w / glCanvas.width * 2 h = h / glCanvas.height * 2 let offset = 0 // vertex 0 glPositionData[offset++] = x; glPositionData[offset++] = y; glPositionData[offset++] = uv0X; glPositionData[offset++] = uv0Y; // vertex 1 glPositionData[offset++] = x + w; glPositionData[offset++] = y + h; glPositionData[offset++] = uv1X; glPositionData[offset++] = uv1Y; // vertex 2 glPositionData[offset++] = x; glPositionData[offset++] = y + h; glPositionData[offset++] = uv0X; glPositionData[offset++] = uv1Y; // vertex 0 glPositionData[offset++] = x; glPositionData[offset++] = y; glPositionData[offset++] = uv0X; glPositionData[offset++] = uv0Y; // vertex 1 glPositionData[offset++] = x + w; glPositionData[offset++] = y + h; glPositionData[offset++] = uv1X; glPositionData[offset++] = uv1Y; // vertex 3 glPositionData[offset++] = x + w; glPositionData[offset++] = y; glPositionData[offset++] = uv1X; glPositionData[offset++] = uv0Y; var gl = glContext gl.bufferData(gl.ARRAY_BUFFER, glPositionData, gl.DYNAMIC_DRAW); gl.drawArrays(gl.TRIANGLES, 0, 6); } var frame = 0; var state = 0 var tick = function () { frame ++; if (state === 0) { if (glTexture) { glContext.bindTexture(glContext.TEXTURE_2D, glTexture); glContext.useProgram(glShader); state = 1 log(frame, 'texture created', glTexture) } } else if (state === 1) { glContext.viewport(0, 0, glCanvas.width, glCanvas.height); glContext.clear(glContext.COLOR_BUFFER_BIT); glDraw(frame%100) } requestAnimationFrame(tick) } requestAnimationFrame(tick)
2023-05-15看了下,高性能模式worker下还不支持
iOSHighPerformance 为高性能模式中,不支持使用 wasm 吗?ios 真机当开启高性能模式时,使用 wasm 的 instantiate 函数时报异常,说一个参数必须是 ArrayBuffer ,但微信官方文档说需是一个字符串类型(https://developers.weixin.qq.com/minigame/dev/guide/performance/perf-webassembly.html) [图片] 正常应该进去 wasm 并打印 hello
2023-05-08参照这个方式profile看看,是什么方法比较耗时:https://developers.weixin.qq.com/minigame/dev/devtools/profile.html
小游戏安卓上性能比较差,其他平台(抖音/手Q)就很流畅。微信小游戏iOS版本也很流畅。小游戏在iOS和其他平台(抖音/手Q)上运行都挺流畅,但在微信小游戏安卓上性能很差,按理安卓上有git加持,性能应该比iOS还要好才对。 而且同一台安卓手机,在抖音/手Q上也很流程,一直是满帧(60),但在微信小游戏上只有20-30帧,差距有点太大了,能帮忙看看是咱们小游戏底层实现问题,还是我们实现逻辑上导致微信上性能差吗? appid:wxfc36ec761b695d64
2023-05-041. 先检查下业务:audio.destroy() 之后不要再调用任何audio.xxx()接口 2. 基础库在下个版本也会做下保护,避免这个报错
声音报错下面这些看了下代码是layabox调用微信小游戏api报的,安卓和IOS都有。 看之前2023年1月也有人报了类似的https://developers.weixin.qq.com/community/develop/doc/000ea47b7a09f8bc6c2f4f95d56400 [图片] [图片] [图片]
2023-04-26并不是失效了,核心原因还是文档里面提到的: iOS 高性能模式下,在调试模式过程中,只能拿到 fps 数据,DrawCall、Memory等请使用引擎自带的调试面板,小游戏数据助手侧性能板块上游戏的内存和 DrawCall 数据在高性能模式发布后同样会不准。 一个游戏如果开启了高性能模式,并不是全部用户都能够命中高性能,大概是90%高性能10%普通模式。高性能模式用户DrawCall、Memory这些数据是0,的所以11.8之前的数据相当于是两种模式的用户数据混在一起,没有任何意义了。11.8之后做了校准,对于高性能模式拿不到的数据,只统计普通模式的数据,所以采样量会降低,数据助手最顶部也做了提示: [图片]
IOS高性能模式11月8号就失效了?appid1:wx5bceda2ea0622197 appid2:wx640e1c68c92644c9 [图片] [图片][图片]
2022-11-22基础库v2.26.1灰度测试中,回退至v2.26.0(开发者工具有推送基础库功能)可暂时解决问题,问题修复中;
unity导出的小游戏 ios设置canvas透明无效最近测试unity导出的小游戏 视频放在UI下层 开发工具和安卓都可以看到最下面的视频 ios最下面的视频看不见 添加了 canvas.getContext('webgl', { alpha: true}) 也没用
2022-09-21给个代码片段,我们看看
刚刚开始开发微信小游戏发现很多头疼的问题?微信小程序在Iphone12上运行奇慢无比。在canvas上画的半透明内容,不再透明,而且颜色变了背景图不能绘制出来[图片] [图片]
2022-08-22可能有几个因素 小游戏数据助手统计的启动留存是指:canvas有渲染首帧的用户,游戏自己做的统计并不是渲染首帧上报,这里统计口径就不一样,如果游戏首帧到游戏自己的统计之间时间较长,也会存在用户流失。小游戏的统计是基于PV的,首屏留存率=进入首屏次数/点击小游戏的次数,而业务统计的是UV,这里口径不一样;这里走的上报是否为普通的wx.request上报?这个上报并不是客户端级别上报,而官方统计的首帧上报是客户端级别的上报,是可靠的,也就是即便当前网络不好,只要发生了首帧渲染行为,后续时机合适一定会报上去,而自定义的网络上报是没有这个保障的,最近我们恰好在规划可靠的用户自定义首场景上报能力。
启动留存率超80%,为什么首屏实际统计却只有50%左右?先看几张图: -----------------------------------------------------------------7月23日: [图片][图片][图片][图片] 数据解释: 7月23日买量,新增298个用户,日活是466个,根据启动留存率85%,进入首屏的应该要有:396个用户,而根据我们产品自己的统计只有269个用户,其中27%的用户不知所踪?既没有在启动中流失,也没有进入首屏。 -----------------------------------------------------------------7月24日 [图片][图片][图片][图片] 数据解释: 7月23日买量,新增877个用户,日活是1000个,根据启动留存率79%,进入首屏的应该要有:790个用户,而根据我们产品自己的统计只有518个用户,其中27%的用户不知所踪?既没有在启动中流失,也没有进入首屏。 ----------------------------------------------------------------- 不只是这几天,我连续在MP买了好几天的量,每天都有27%的用户蒸发了,既没有在启动加载中流失,也没有进入游戏中。我们自己的统计很简单,就在首屏调用的cocos analytics统计的,cocos这边我也咨询过,不存在延迟统计。 [图片] 我想请问一下微信小游戏数据统计方面的人帮我看看,如何解释27%的蒸发用户,如何优化27%的用户?
2022-07-26网页端并不是一定支持ETC2了,iOS15之后,不支持ETC和PVRTC压缩纹理格式,只剩ASTC和ETC1。https://forum.unity.com/threads/ios-15-x-safari-doesnt-support-etc2-or-pvrtc-anymore.1193164
小游戏IOS怎么支持ETC2,目前只要Iphone5以上都支持ETC2,为啥小游戏不支持?网页浏览器都支持ETC2了,想不明白。
2022-05-31