利用业余时间开发的微信小游戏-射箭救人质上线了,主要玩法就是操作弓箭射断绳子把人救下来就可以了。图片资源是我找一个朋友做的。开发过程不算太顺利。磕磕绊绊做了12关。希望大家支持下。谢谢。
分享一下我在开发中遇到的问题和部分解决方案、希望对大家有所帮助。
本人数学和物理实在是一般,遇见了很多算法和原理问题。还好很多问题我都在论坛找到了解决方案,非常感谢各位的分享和解答。
弓箭旋转角度和拉弓力度计算出刚体运动的抛物线。具体公式和原理请查看这位大神的帖子。
弓箭的瞄准线同样是这位大神的帖子 大神的物理和数学真是赞。
https://mp.weixin.qq.com/s/Z-7zQuvjIaBzyQRJslH7bQ
最初的问题、弓箭刚体的抛物线运动。请看这个帖子,里面说的很详尽。
每个关卡中涉及到的人物是随机的。所以涉及到动态加载资源
如果图片有白边,图片开启预乘、sprite取值one模式
弓箭和人物碰撞后,弓箭一直抖动无法停止
不过这个帖子并没有解决上述问题、最后发现是在update方法里一直更新弓箭的旋转角度导致的,加了个状态判断碰撞后就不再update弓箭的角度了。
在设计关卡的过程中、发现人物多了以后,iphone手机会很明显的卡顿
这个帖子没人回复。不过我在另外的一个帖子了,找到了官方大大的回复。具体哪个帖子我一时找不到了。但是我把原话复制到了注释中。以下是原话:
目前物理系统在ios 的 微信小游戏平台性能最差
原因是 由于 ios 的 安全策略限制 不能开启 js jit,导致重逻辑的 模块 性能不高。
目前主要在iphone6 6s iphoneX 等同系列产品上出现的问题最严重
如果遇到这类机型出现问题,请不要惊讶,因为大家都知道了。
如果你的游戏避免不了同屏这个多的刚体,这么多的碰撞盒顶点数,那么确实就会卡,目前没有解决方案,除非自己减少
如果使用碰撞系统加自己实现物理轨迹算法的方式来代替引擎自带的物理碰撞,最终也避免不了这个卡顿发热的问题,但是能够提高一些性能是可以肯定的
针对iphone卡顿的问题,我采取了很多措施,比如纹理压缩。最后官方大大让我多看资料终结了这个帖子。最终的问题我也没有解决。还是采用了png压缩的方法。
虽然开发问题很多,进度比较缓慢,但是依然阻挡不了我要上线的热情,于是我中间申请了软件著作权,没有找代理,纯官网自主申请。历时3个月
自审自查报告模板
自审自查报告 - 副本.zip (11.3 KB)
操作说明书模板
操作说明书模板.zip (10.3 KB)
这是我自己用的目录,要根据自己游戏内容填充。最好是有截图。
源代码模板
源代码模板.zip (14.2 KB)
每页不少于50行。前后各30页。如果不够60页就放全部代码。页眉中的内容是必须要有的。而且要和申请时填写的软件名字和版本号一致。
申请完软件著作权以后,等待的时间就是继续开发。未来一个月的主要工作就是对IOS的性能进行优化
第一步是使用自动图集,合并节点,减少drawcall,当drawcall减到30左右的时候 ,iphone手机的FPS还是波动很严重。没有什么效果。这个问题遗留至今还是没有解决。
关于drawcall优化 推荐大家看这位大神的帖子
除了这位大神帖子里提到的drawcall会增加的原因,在优化过程中发现我还发现了另外两个原因
(1)纯色的sprite
(2)不同group的节点
在优化过程中、我顺便把js改成了ts.至于是为什么呢。请看这位大神的帖子。
刚体设置sensor属性后不执行碰撞回调
这个帖子也没人回。但是经过我研究,不会执行onPreSolve方法 但是会执行其他3个回调方法 比如onBeginContact
游戏中比较重要的刚体、我个人的解决思路
(1)绳子 是用15个动态刚体加DistanceJoint 连接。弓箭和其中一个绳子碰撞后,将该节点active=false;绳子就会呈现断掉的效果。绳子的密度不易过大。否则两段绳子之间会有空隙。
(2)人物 胳膊、腿、身体动态刚体加RevoluteJoint,并限制最大和最小旋转角度。就会有人物关节动态的效果。
(3)弓箭 动态刚体加WeldJoint、碰撞后将 connectedBody - 关节链接的另一端的刚体设置为对方刚体。就会显示弓箭扎在人物身上的效果。
给大家分享一个音频 《时空幻境》与《见证者》的制作人乔纳森·布洛 牛逼的很孤独
关于游戏的信仰-Jonathan blow的创作哲学