【优化建议】服务器连接状态相关事件



  • 目前唤境的多人对战组件中有一个地方的设计不够合理,即条件中的“判断连接状态”
    优化建议如下:
    事件条件“判断连接状态”取消触发器特性;
    原因很简单,我认为服务器连接是一个状态,而不是一个瞬时的事件;
    或者在组件中加入表达式用于获取服务器连接状态。
    如果这样会导致服务器压力增加,也可以再加入动作“获取连接状态”,使用该动作后才能获取到连接情况;同时唤境后台服务器中加入相关限制、防止短时间内大量获取


    undefined

    如图,由于这个条件是触发器条件,导致很多时候使用起来非常不方便,因为它不能放入动作组、定时器等条件内



  • @zjxdiu 这个条件我个人感觉官方之所以没打算设置成持续性状态,是因为压根没做重连机制吧,掉了就不会自动连上的。我的用法都是找个布尔变量表示是否已经进入连接状态,然后游戏开头的时候拿这个条件去判断是否顺利连进服务器,如果触发了就把变量值设置为真,之后就用不到这个条件了。总结来说我觉得这个条件与其说用来判断是否处于连接状态,倒不如说是用来判断什么时候连入服务器,因为不会重连的缘故,整个游戏流程它顶多只会触发一次,做成持续性条件确实没必要。



  • @拉布拉多拉得多不多 我之前也用过这种方法,但测试的时候发现不稳定;我的写法是两条事件,分别判断能否连接,然后设置变量值,结果很多时候它就会一直处于不可连接状态(也可能是事件顺序的影响),但这个时候是能正常匹配和加入房间的,这个基本可以算bug了



  • @zjxdiu 我可能说得不够清楚,这个条件没法受任何事件干扰,从进入游戏开始,它就尝试连入服务器,成功后触发一次,之后就不会再触发了,等于你如果一开始如果错过这次触发,后面你连没连进去就不清楚了,所以这个条件最好是开始的几个场景里都去做检测,以防错过这次触发导致没法正确得知是否连入,你说的情况也有可能是错过这次触发让你误以为它没连进服务器,至少我这边的测试结果是这样的,就像广告组件那个初始化判定一样。



  • @zjxdiu 要验证你说的“一直处于不可连接状态,但这个时候是能正常匹配和加入房间的”也很简单,既然连入服务器需要时间,那么只留一个场景,按下面这个事件来验证:
    场景开始时肯定比服务器检测要快的,那么抢在服务器没连进前,就去触发匹配,以防万一输出时间戳比对执行时间谁先谁后,这边的验证结果是f12必定有报错信息(也就是游戏报错了),然后由于该报错服务器再也连不进了,所以服务器可用的事件也没生效,下面两条状态判断也触发不了,证明没有进入匹配状态
    undefined
    undefined


登录后回复