做网游鸟, 场景内人物动作同步的做法

2 views
Skip to first unread message

flywav

unread,
Oct 11, 2008, 9:50:49 PM10/11/08
to 高性能网络编程邮件列表
一个场景内 所有人的动作如何同步的?
目前的做法 是client 保持一样的逻辑刷新频率 1/10s ,发生变化时候发送消息。
有做法是 一样逻辑刷新频率, 1/10s 每次都发送消息。 第二种 应该更实时,但是有压力
而第一种的话,在线了 不动的话, 就可以半天不发消息。也不好啊。 或者没有动作 也需要至少
1 s 发送一次消息 同步?

xMan

unread,
Oct 12, 2008, 9:08:13 PM10/12/08
to 高性能网络编程邮件列表
做网游不像做单机3D渲染的概念呀.

这样刷,就是人不动,你自己就会将服务器刷起火的,更不要说应付有几百人走动的简单情况,你这样的方法根本不可能处理得过来啊...

这个方法是你自己臆想的吧,不知道在哪个网游上被实际使用过没有.

flywav

unread,
Oct 13, 2008, 12:56:59 AM10/13/08
to 高性能网络编程邮件列表
我想是我的表书 不够清楚把

我指的变化是 指发送了一条指令问题.比如从x,y 到z,q . 走的过程 不法消息的.


而战斗状况 要求很高的同步事实性,类似于 qq game 开始打蛋珠这样的场景 所以才开始讨论2
> > 1 s 发送一次消息 同步?- 隐藏被引用文字 -
>
> - 显示引用的文字 -

Jiahua Huang

unread,
Oct 13, 2008, 1:54:01 AM10/13/08
to dev4s...@googlegroups.com
去读下 第二人生 的开源版克隆?

0open0

unread,
Oct 13, 2008, 5:18:32 AM10/13/08
to 高性能网络编程邮件列表
我也想讀下!!請問下,對遊戲開發有幫助嗎?要是有個鏈接就好了!!謝謝


On 10月13日, 下午1时54分, "Jiahua Huang" <jhuangjia...@gmail.com> wrote:
> 去读下 第二人生 的开源版克隆?

flywav

unread,
Oct 14, 2008, 12:54:28 AM10/14/08
to 高性能网络编程邮件列表
其实这么做还是有原因的

考虑一下 这种情况
一个场景内 有 a b 2个id
a id 发送 指令 0,0 => 10,10 这个点
假设这个过程需要3 秒中
b 因为相同的算发可以 和a 同步, 也就是b 的画面显示 和 a 是一致的
但是如果 1秒重以后 进入了一个c, c 获取a 的地址是 什么 0,0 还是 10,10
很显然10,10 此时 就会比较滑稽. a 其实还在路上走 而c 看到a 已经在10,10.







On 10月13日, 下午5时18分, 0open0 <hotice...@gmail.com> wrote:
> 我也想讀下!!請問下,對遊戲開發有幫助嗎?要是有個鏈接就好了!!謝謝
>
> On 10月13日, 下午1时54分, "Jiahua Huang" <jhuangjia...@gmail.com> wrote:
>
>
>
> > 去读下 第二人生 的开源版克隆?- 隐藏被引用文字 -
>
> - 显示引用的文字 -

宇文拓

unread,
Nov 10, 2008, 11:59:18 PM11/10/08
to 高性能网络编程邮件列表
我现在了解到比较常见的做法还是根据网络情况来做,测ping值,如果慢就先让先让客户端播动作效果
client与server用相同的阻挡信息和寻路算法,只发路径包和停止状态的包
感觉完全同步的情况不好做

Kouga

unread,
Nov 15, 2008, 10:48:41 PM11/15/08
to dev4s...@googlegroups.com
有必要么……当然,看你对游戏地图的裁剪算法,建议是用矢量坐标,这样就算网络卡卡,也只会看到某人飞快的跑过去,而不会出什么大问题。如果是《传奇》那种格子= =!那就米好建议了。
如果有碰撞检测之类的,建议在客户端完成,服务器只管某个东西在哪个时间开始,以什么速度,从哪里运动到哪里就好了。这样服务器只需要关注数据层次的东西,至于客户端那里堵车——您的人物模型太大而地图太小了吧?呵呵。
当然,服务器该关注的是,比如某个东西速度不应该超过X,结果一段时间下来他运动的总和超过了X*T,那么此人在作弊~~哦活活活~~
Reply all
Reply to author
Forward
0 new messages