使用wx.getGameServerManager的房间管理、帧同步、对局服务开发联机2人对战小游戏(没有私有的后端服务器,只有微信服务器),帧同步的频周期33ms。使用了wx.getGameServerManager, wx.onTouchStart, wx.onTouchEnd, wx.onTouchMove, wx.onKeyUp, wx.onKeyDown等API。
- 1 微信开发工具中,进行PC端真机调试,使用了wx.getGameServerManager, wx.onKeyUp, wx.onKeyDown等API。游戏(使用官方帧同步)是通过键盘控制的,键盘操作时会在控制台不断地出现很多相同的RangeError错误(见图片)。移动端真机和模拟移动端中没有这问题。
- 2 微信开发工具中,进行移动端真机调试,使用了wx.getGameServerManager, wx.onTouchStart, wx.onTouchEnd, wx.onTouchMove等API。游戏(使用官方帧同步)是通过虚拟摇杆和虚拟按键控制的,操作时(一般是连续操作0.5~1.5分钟内,有时几秒内)会在控制台出现3条“3006”错误{errMsg: "it's a large frame", errCode: 3006},这3条错误一般前后都会出现requestIdleCallback警告。但是我的游戏中,玩家只有2个人,上传的游戏帧也是很小的:json字符串{moveUp:false,moveDown:false,moveLeft:false,moveRight:false,fire:false,skill:false},甚至还简化为只发送true的json,例如{moveUp:true,skill:true}等。PC端和模拟移动端没有这个问题。