如何做物理系统的同步

1.如果不需要防作弊,那么就信任所有的客户端数据,这样直接在客户端机器上运行物理系统即可,不需要服务器参与计算,直接就节省了服务器的负载。这样做的方法是,挑选一个客户端作为主机或者找一种方式来解决玩家之间运算不一致的情况。如果需要物理运算是基于多个玩家机器,那么就需要多对多的同步,涉及到更多的通信量。

2.如果需要服务器去做真实的校验,那么肯定就需要服务器去做真实的物理运算。最简单的方式是在服务器端跑一个unity客户端,服务器依赖这个客户端的运算结果。要不就在服务器端跑一个物理系统来做真实运算。

以上无论哪种方式,都会碰上两个主要的问题:

1.延时。服务器运算到某一步的时候,其实已经晚了。

2.带宽。3000个对象的位置和朝向每帧需要至少72kb,如果是30fps,那么每一秒,每一个用户就是2.1mb,如果是未压缩到话。

所以,不可能在网络上去做如此大的数据通信。所以势必要去做插值,不可能每帧都去做这个事情,要控制数据发送的频率。所以还是两边各算各的,服务器偶尔去做校验即可。

posted @ 2015-09-30 10:47  DesignYourDream  阅读(669)  评论(0编辑  收藏  举报