游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8082|回复: 23

事隔一年,再谈网络游戏同步。

[复制链接]

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2004-8-1 21:43:00 | 显示全部楼层 |阅读模式
呵呵,一年前的这个时候发过一系列讨论网络游戏同步的帖子。
一年后的今天,再重新讨论讨论这个问题。。。

不知道大家是否碰到过这种情况,当某个玩家发出一个火球,这个火球有自己的运动
轨迹,那么如何来判断火球是否打中了人呢?大部分情况,当策划提出这个要求的时
候,一般会被程序否认,原因是:太麻烦了,呵呵。复杂点的还有包括两个火球相撞
之类的事情发生。

那么网络游戏中,是否真的无法模拟实现这种模拟呢?

首先我们来看看模拟此种操作会带来什么样的麻烦:
1,服务器必须trace火球的运行轨迹,乍一想,挺慢的。
2,网络延迟,传过来有延迟,传过去有延迟,延迟还不稳定,麻烦。
3,都有两点解决不了了,接下来不愿意再想了。

呵呵,实际上呢,对火球的模拟比对人物运动的模拟要轻松很多,原因很简单,火球
的方向不会变。下面来看看具体用什么样的结构来实现:

不知道大家是否还记得我去年这个时候提到过的Dead Reckoning算法,我们要模拟火
球运动的关键就在于一个叫Moving Objects Tracing Server的服务器程序,这个服务
器是干什么的呢。这个服务器接收主游戏服务器发过来的注册事件的信息,比如有个
玩家,开始移动了,那么主游戏服务器就把该玩家的运动PDU,包括方向,速度,加速
度,起点发给MOTS (Moving Objects Tracing Server),然后MOTS自己开始对其运行
进行模拟,当游戏服务器发来第二个PDU包的时候,则对各个物件的位置进行修正,并
重新开始模拟。那么,我们模拟的目的是什么呢?当然是发生某些事件,比如说碰撞,
或者掉入地图的某个陷阱的时候,会将该事件回发给主逻辑服务器。然后逻辑服务器来
处理该事件。

那么,对于火球的处理,也和处理其他玩家的同步一样,当接收到玩家的发火球的指令
以后,产生一个火球,并指定其PDU信息,在MOTS上注册该个运动物体。当MOTS自行模
拟到这个物体和其他玩家或者NPC物体产生碰撞,则通知主逻辑服务器,然后主逻辑服
务器产生相应的动作。

那么关于延迟呢?有些人也许会说,比如说前面有个火球,我本地操纵的小人其实躲过
去了,但是因为网络延迟,在服务器上我并没有躲过去,那么怎么算?呵呵,不知道大
家玩过星际没有,有没有发现在星际中玩多人连线模式的时候,有一点最特别的地方,
就是控制一个小兵的时候,点了地图上的某个位置,但是小兵并不会马上开始移动,而
是有一定的延迟,但是这一小点延迟并不能掩盖星际的经典,同样的理论用到这里也成
立。对于客户端的控制,当玩家操纵的主角改变PDU信息的时候,确保信息发送到服务
器之后,再开始处理本地的操作指令,这样就能保证本地的预测和服务器的预测几乎是
没有什么误差的,即使有很小的误差产生,以服务器为主,这样玩家也不会有太大的抱
怨。

欢迎大家拍砖讨论。

103

主题

1432

帖子

1458

积分

金牌会员

Rank: 6Rank: 6

积分
1458
QQ
发表于 2004-8-2 00:27:00 | 显示全部楼层

Re:事隔一年,再谈网络游戏同步。


不知道你有没有玩过奇迹和传奇,很多时候都感到传奇很卡,因为总是要固定游戏角色,而奇迹就非常聪明,我在56k的网络上都觉的可以。

如果一些细节无所谓的话,那么尽量抛弃,玩家的观感也是很重要的。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
 楼主| 发表于 2004-8-2 00:46:00 | 显示全部楼层

Re:事隔一年,再谈网络游戏同步。

呵呵,先看看这个~

http://www.gameres.com/Articles/Program/Abstract/DeadReckoning.htm

103

主题

1432

帖子

1458

积分

金牌会员

Rank: 6Rank: 6

积分
1458
QQ
发表于 2004-8-2 00:53:00 | 显示全部楼层

Re:事隔一年,再谈网络游戏同步。

晕,还要人翻那么久的东西啊。

我就是针对你那个:


“那么关于延迟呢?有些人也许会说,比如说前面有个火球,我本地操纵的小人其实躲过
去了,但是因为网络延迟,在服务器上我并没有躲过去,那么怎么算?”

你猜取的是传奇的方法,就是角色死硬大法。
而奇迹采取的策略是,人还是会动,不过伤害照样算上。

103

主题

1432

帖子

1458

积分

金牌会员

Rank: 6Rank: 6

积分
1458
QQ
发表于 2004-8-2 00:55:00 | 显示全部楼层

Re:事隔一年,再谈网络游戏同步。


虽然在极端情况下,玩家都是要挂回家,但是很多时候,(不被打击)奇迹就显得灵活多了。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
 楼主| 发表于 2004-8-2 01:10:00 | 显示全部楼层

Re:事隔一年,再谈网络游戏同步。

不对,传奇用的同步方法是每一步都要经过服务器验证的。也就是说,
在服务器当机的时候,玩家是动不了的。而根本没用到dead reckoning,

MU是用的dead reckoning做的行走时的同步,但是在对于处理魔法效
果的时候,并没有使用dead reckoning。

我觉得你还是应该先理解什么是dead reckoning。

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2004-8-2 10:23:00 | 显示全部楼层

Re:事隔一年,再谈网络游戏同步。


我才不管什么术语呢,方正我觉得应该放弃一些无关要紧的部分,不同步也没关系。

最重要是玩家的观感,不要觉得卡。

2

主题

48

帖子

50

积分

注册会员

Rank: 2

积分
50
发表于 2004-8-2 10:37:00 | 显示全部楼层

Re:事隔一年,再谈网络游戏同步。

玩魔兽3的攻击和魔法也很少tracking
暗黑2的亚马逊的弓箭tracking比较多,可以借鉴
至于星际的延迟,应该是刚好到顶,再多就过头了,拿来做清版类act游戏是大大的不爽。如果洛克人可以做成互联网版,不知道还要多少问题要解决呢

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2004-8-2 10:39:00 | 显示全部楼层

Re:事隔一年,再谈网络游戏同步。

能把FPS游戏拓展为MMORPG吗?

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20547
发表于 2004-8-2 11:18:00 | 显示全部楼层

Re:事隔一年,再谈网络游戏同步。

不是很仔细看楼主的帖子,可能看法会有所错误,还往见谅!

看楼主说到星际争霸,我想说的是星际与目前现有的MMORPG是完全不同的处理方式,星际是100%同步,而MMORPG却可以有不同步的存在,它们内部程式处理机制完全不同。

星际:按照我的理解,它可能是每250ms发送一次脉冲,此脉冲包含了用户的输入指令,并且前提条件是“必须”获得同个游戏中所有玩家的脉冲信息,否则就暂停游戏,这也就是我们如果在网路上玩星际经常会遇到的情况,毕竟星际是即时战略游戏,如果得不到100%同步,那也就意味着个游戏没有公平性可言。
MMORPG:如果因为一个人的延时导致整个场景上百个上千个玩家的暂停,那显然是不合理的事情,所以MMORPG都通过服务器进行统一调度,如果网络慢就是会出现明明看自己躲过火球,但实际却被击中,这点在暗黑里面也经常出现。

说了半天好像也没达到回复楼主的目的,只是上来说说自己对这类游戏的同步看法,希望也能跟大家多做交流。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-17 08:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表