大家讨论一下。
前几天看了一个网络赛马游戏。不知道他的服务器是如何构架的,问题的关键在于服务器是如何控制马跑的快慢的。是实时控制的么?就是说服务器时时刻刻都在向每个客户端发送马的状态信息,如果是这样的话,服务器的负担会不会太重,而且还会出现卡的现象。如果不是这样,服务器应该怎样实现这样的控制。
Web : http://www.GhostSoft.net
to Ghost Cheng :你的意思是说其他的计算由客户端来计算么?但是如果这样的话,它能保证和其他的客户端同步么?
在06-3-1,Ghost Cheng <ghost...@gmail.com > 写道:Hi closeall:我觉得是速度改变的时候才通知客户端。
On 3/1/06, closeall <closea...@gmail.com > wrote:前几天看了一个网络赛马游戏。不知道他的服务器是如何构架的,问题的关键在于服务器是如何控制马跑的快慢的。是实时控制的么?就是说服务器时时刻刻都在向每个客户端发送马的状态信息,如果是这样的话,服务器的负担会不会太重,而且还会出现卡的现象。如果不是这样,服务器应该怎样实现这样的控制。
-----
Best regards
大宝(sodme)
msn: sod...@hotmail.com
email: sodm...@gmail.com
Hey Ghost Cheng:如果在本地机器的资源不足的时候,就是在播放动画的时候出现了卡,即卡机不是用于网络造成的,而是由本地的机器造成的,在这种情况下也会出现不同步的现象,不知道这如何解决??
在06-3-1,Ghost Cheng <ghost...@gmail.com > 写道:Hi closeall :client只是依据服务器发来的数据,播放动画而已,服务器在比赛开始的时候,传来各个马的初试速度,client依据此速度绘制。当服务器计算到速度该变的时候,通知client,这时client再调整绘制的速度。只要保证不丢包,就不会出现问题,基于TCP方式,除非网络环境太差,一般数据都是正确的。
On 3/1/06, closeall <closea...@gmail.com > wrote:to Ghost Cheng :你的意思是说其他的计算由客户端来计算么?但是如果这样的话,它能保证和其他的客户端同步么?
在06-3-1,Ghost Cheng <ghost...@gmail.com > 写道:Hi closeall:我觉得是速度改变的时候才通知客户端。
On 3/1/06, closeall <closea...@gmail.com > wrote:前几天看了一个网络赛马游戏。不知道他的服务器是如何构架的,问题的关键在于服务器是如何控制马跑的快慢的。是实时控制的么?就是说服务器时时刻刻都在向每个客户端发送马的状态信息,如果是这样的话,服务器的负担会不会太重,而且还会出现卡的现象。如果不是这样,服务器应该怎样实现这样的控制。
--
Sincerely,
Ghost Cheng
Email : ghost...@gmail.com
to sodmo :我想这样方案同样会出现不同步的问题,不知道采用这种方案如何解决同步的问题。
2006/3/1, 大宝(sodme) <sodm...@gmail.com>:
msn: Sincerely,
对于这种强调速度的游戏而言,
常常都会采用一些取巧的方式来作. :)
------
Best regards
大宝(sodme)
msn: sod...@hotmail.com
email: sodm...@gmail.com
你说的只是过程不同步, 结果肯定是一样的,
只要结果一样, 我觉得可以接受.
对于这种强调速度的游戏而言,
常常都会采用一些取巧的方式来作. :)
------
Best regards
有以下两点, 交流一下:
1.如果算法和算法所依据的数据都是固定的,那么逻辑运行的过程也可以作到完全一样,
即使是卡机,
它之后也是仍然按照原先设定的逻辑在跑; 而且,
在游戏开始后, 各个客户端自己已经不能操控游戏了,
不会对表现过程造成干扰, 只是在"看"表现过程,
在等待比赛结果.
2.既然说是由各个客户端自己在控制相关的逻辑, 那么,
它的同步原理就与C/S架构的完全不一样,
客户端会有自己的逻辑来提供位置信息.
> > Email : ghost...@gmail.com
> > Web : http://www.GhostSoft.net <http://www.ghostsoft.net/>
> >
> >
Hi closeall :
Email : ghost...@gmail.com
Web : http://www.GhostSoft.net
> > > > <ghost...@gmail.com>
> > >
> > >
> >
> >
> > --
> >
> > Sincerely,
> > Ghost Cheng
0、比赛开始
1、服务器根据本地信息一次性计算出所有结果,包括:
1)每匹马的初始速度
2)每匹马速度变化序列(vector<timeStamp, newSpeed>)
2、服务器将以上信息广播给所有参赛者
3、参赛者收到上述信息后,计算出动画序列(vector<timeStamp,
position, aniFrame>)
4、rander,
如果CPU犯卡,根据当前时间跳过动画序列中过期的帧。
5、goto 4, 直到动画序列播放结束。
6、比赛结束,显示结果