之前网络同步章节,讲到了一些客户端服务端同步的问题。最近几天比较忙,今天延续描述这个东西。 举一个之前公司开发游戏的例子,这里直接讲空间图吧。 新手村内同屏场景,正前方为一个药店(进入为内景),左方为新手村建筑牌坊,右方为石头桥(有阶梯),玩家A站在桥边,玩家B站在药店门口,玩家C站在屏幕正中间。 玩家D从牌坊往药店移动。 需求为: 以玩家A为主视角检查。玩家B进入了药店,玩家A的视野看不到玩家B。这个是正确的。 玩家A会先看到玩家B消失在外景,然后玩家D移动紧跟着玩家B移动进药店。然户玩家C依然是我是1颗树。 同样玩家B所看到的是他自己进了药店,好废话不多说。 这些是如何实现呢,我们该如何检查他呢 如果游戏对小地图计算位置都没做好,下面的就不用去看了。 首先是协议问题,如何实现同屏移动同步,B移动了,他移动了并不需要给所有人发1条消息,如果玩家位置改变时都向服务器报告,然后再转发周围其他玩家,实体变更新的位置,同屏人一多,服务器就什么事都不用做了。一个人位置移动将下发所有人一次。 如之前所谈到的网络存在延迟,如何处理这一类的先后时间差是关键位置。 好,首先你需要处理玩家B进入内景,这部分是一种主动行为,保证玩家和玩家D能看不到玩家B了,玩家B位置假定为P1到P2,传送进内景。关注看视角 玩家B的面向正确。而玩家B视角则不需要关注玩家D紧跟他身后。测试是一个繁杂的检查过程。 接下来,需要先计算出P1到P2的速度,上面所讲的小地图问题,计算速度...待述
|