如果欧陆战争3多人模式5有多人实时对战模式

多人实时对战网络同步方式研究 - CSDN博客
多人实时对战网络同步方式研究
写在开头:已经研究生毕业快一年半了,一直在一家游戏公司做客户端研发。至于这篇文章讲的却是服务端的东西,主要是因为以前一直没想写博客,学到的东西也一直记在本子上就得了。本人喜欢有剧情的东西,像RPG游戏(仙剑爱好者),有剧情的电视、电影,还有竞技类型的游戏,像dota/2、王者荣耀等。最近在做的项目和玩的王者荣耀都涉及到游戏的同步问题,王者荣耀做的不错,但也有自己的问题,就准备研究下这方面。本文的内容是从这两个网站和
学习总结出来,并实现了一个demo,效果也确实不错。
好了,下面说点具体的内容,所有的内容以moba类游戏为例。
所有moba类游戏或者一些对同步要求比较高的游戏都面对一些具体的问题。一、如何让玩家体验到非常流畅的体验,而不是一顿一顿一卡一卡的表现等。二、如何防止玩家作弊。
针对玩家作弊,我进入游戏界最先听到的一句话就是“永远不要相信玩家”,一切操作都在服务端实现。但是呢由于手游的崛起以及流量的费用,一些手游还是会部分的相信玩家。
扯远了,一句话就是“在服务端进行验证”。那么最简单的实现就是玩家的任何操作都先向服务端发送请求,然后等待服务端的响应做出相应的反馈。如图一所示。客户端想向右移动一个单位,先向服务端通知,服务端反馈给客户端结果。客户端在100ms的延迟之后执行向右移动一个单位的操作。
很明显上面的结果是,玩家点了向右移动的按钮,过一会才会向右移动(体验很差)。
优化一下:既然上面体验不好就优化一下呗,可以发现如果我点击向右移动按钮,就直接向右移动,而不是等服务端的响应就会比较好。可是这就引发了问题二,玩家作弊怎么办?大家可能已经想到了,我先向右走然后等服务端的响应,等服务端发送过来响应的时候再检查一下,当前客户端的状态是不是对的,如果对的就好了,不对的可能就是客户端作弊了,比如说跑的快了。如图二所示。
问题:但是上面又有一个问题,如果服务端响应的较慢,在服务端响应回来之前玩家已经又进行了一次操作怎么办呢?如图三所示。
一个可行的方案是:客户端没法送一个操作给服务端的时候,加上一个序号。客户端继续按照上面介绍的方式去运行,不用等待服务端的反馈。当服务端的反馈到来的时候,客户端不再是去检测当前客户端的状态和服务端反馈的状态是否一致,而是要检测客户端当前的状态与服务端反馈的状态+还未执行的客户端状态是否一致。如图四,当服务端反馈#1时,客户端的位置为12而服务端的反馈的位置是11, 但是服务端反馈的位置11+#2的操作的结果是位置12所以验证时合法的。同理在服务端反馈#2的时候,验证的结果也是合法的。可见使用这样的方法,可以保证合法的玩家的用户体验很不错,同时能检测到作弊的玩家,对于作弊的玩家怎么处理可以根据项目的具体需求具体操作。
上面解决了客户端内只有自己的玩家的问题,当有其他玩家的时候,如何同步其表现呢?
我们还是从最简单的开始考虑。如图五所示,那就是服务端直接同步客户端1的操作结果给客户端2,客户端2直接设置玩家1在客户端2的位置,你会发现在客户端2上客户端1的玩家的位置一跳一跳的。
一个可行的简单的优化是:既然你一跳一跳的表现不好,那我们就让它平滑一点呗(游戏中常用的方式)。让它在一段时间内以一个恒定的速度从当前位置移动到服务端反馈的位置。这样表现会稍微好点,但是当我们设定了一个恒定的时间或者恒定的速度,都会出现玩家很快移动到目的地停下来等待下次操作或者还没移动到目的地就要向下一次目的地移动,一直跟踪不上节奏。聪明的读者可能想到,出现这个的问题是因为我们无法预测玩家下一次到到达的位置,无法动态的平滑的调玩家的移动速度、移动时间来刚好达到目的地。一个巧妙的方式是“我们不要追踪当前即时的目标点,而是追踪一个我们已知的目标点”。如图六所示,我们来介绍这句话的理解。由于服务端会同步别的客户端的玩家的位置给你。在当前时刻了客户端2已知知道了客户端1经过第二次操作跑了位置12和上一次操作玩家在位置11.在当前时刻,根据一个延时,算出客户端1的玩家在一个延时之前的位置,把它表现出来,这样客户端1的表现就会很流畅。比如设置延时时间为0.1s,对人眼而言也没有什么大的误差。对于像cs:go这样的游戏,还可以通过在服务端上做延时回放可以得到精确的位置,这里就不介绍了。想看的话可以去提供的链接1valve上去看。
说了这么多具体怎么实现呢?
由于涉及到客户端和服务端,要是都讲的话,只服务端都得介绍很久。这里我只讲下实现的具体思路,特别想知道具体的实现或者自己实现有问题的,可以联系我一起讨论下。
一个全局的操作序号:& seq
有一个记录上传服务端的操作序列,记为self_op
一个记录其他玩家的操作反馈,记为other_op
玩家操作时:
记录到self_op中
同时seq++
在客户端直接操作
定时上传self_op到服务端上去
服务端回调结果:
如果是自己的:
&&&&&&&& 根据反馈的操作序列+剩余的操作序列self_op与当前客户端玩家状态进行验证
&&&&&&&& 合法 ok& 不合法:惩罚
如果是其他玩家的:
&&&&&&&& 记录到other_op中
logic循环:
&&&&&& 根据other_op和设定的延时时间计算并设置其他玩家的状态
根据收到玩家的op,计算玩家的状态,存储到status中
logic循环:
同步当前所有的玩家状态给同一个team的所有玩家
(注:这是原理的实现,具体项目实现肯定还要进行一些针对性的优化)
好了,第一次写博客。 谢谢大家!
本文已收录于以下专栏:
相关文章推荐
我们开发软件的,通常会有一个测试环境/开发环境,但是系统开发完成后,还会有一个生产环境,也叫正式环境。正式环境我们一般是不能让开发人员去远程登录和维护的,一般正规的生产环境是专门的负责人员去负责更新,...
——记念初学box2d踩过的好多坑
1.调试Box2d,一定要开启DebugDraw
Box2d物理引擎中的世界是不可见的,所有刚体只会在一个看不见的世界中,遵循设定好的规则自行演变...
制作上述的地图,在弯道出添加对象。
增加地图类:
local tileMap=nil
local map=class("map",
function()
return di...
介绍了source引擎在多人对战网络同步(尤其是用于fps游戏)中的做法,在行业内影响了很多多人对战游戏的开发。
在了解了其中的技术和概念之后,对于玩家来说,就会知道为什么fps游戏对射的时候不要静止...
本文讨论实时多人在线游戏的服务器和客户端技术。
实时多人在线游戏主要包括2类,FPS(quake系列,UT系列,CF等),ACT(DNF,龙之谷这类)
其共同特点是需要用户操作尽快的得到体现...
皇室战争实时pvp网络同步
他的最新文章
讲师:钟钦成
讲师:宋宝华
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)您的位置:&>& >
> 欧陆战争5帝国征服怎么玩
征服模式玩法技巧攻略大全
欧陆战争5帝国征服怎么玩
征服模式玩法技巧攻略大全[多图]
字体大小:【 |
14:39:39&&&
类型:策略棋牌大小:175MB评分:5.0平台:标签:
征服怎么玩?小伙伴们正在寻找攻略吧!别着急,下面是小麦整理出来的征服模式玩法技巧攻略大全,希望可以帮到大家。
征服模式玩法攻略
首先,要明确自己的目的,如果你是为了勋章任务而打征服,推荐使用“低仇恨国”。所谓“低仇恨”,即位置和盟友得天独厚的优势。
比如古典时代的希腊,盟友罗马,完全可以站撸波斯埃及迦太基,然后揍匈奴,灭汉,进军美洲,最后和罗马一对一,这对于希腊初期发展是极为有利的。
还有中世纪的苏格兰,盟友法兰克,地处北端,一开始的敌人只有英格兰,虽然收入低,但在所有中世纪的一星国中,压力不算特别大。
“金角银边草肚皮”,无非就是这个道理。在冲突的边缘地带,利于小国;地处冲突中心,即使收入高,也会被持续不断的战争拖垮。
如果,你是为了珍珠、文献、象牙等一类珍宝而刷征服,推荐刷古典时代,低城防,压力小,破局快,30回合左右结束战斗。奖励虽然不如中世纪和帝王时代,但后者征服太长,有时甚至是古典的两倍,而奖励却不如古典的两倍。
珍珠最多:阿兹特克(12)
香水最多:罗马,匈奴,迦太基,英格兰(10)
瓷器最多:日本(10)
象牙最多:吴哥(10)
钻石最多:印加(8)
品最多:阿兹特克,吴哥,印度,日本(6)
文献最多:希腊(20)
众所周知,攻占一个势力的首都,将会对该势力造成巨大的打击。轻者城失,重者国亡。
战术1:丢车保帅
我们在东线榨干了所有钱然后回首西线,阿兹特克人已经跃跃欲试要攻打波哥大了印加精兵要收复加拉加斯了而我们只有亚历山大大帝这一队人马,怎么用?
撇开游戏内,因为我们讲的是思想,只是以游戏为情境,毕竟十分切合的实例很难找。
如果我们进驻加拉加斯,则加拉加斯之困可解,但印加犹存;若舍弃一城,兵锋直指萨尔瓦多,则印加帝国灭,加拉加斯亦存。
看到这,很多人会说,这也算兵法,好辣鸡啊,是个人都懂,是的,是个人都懂,但之所以写出来,是因为包括楼主在内的很多萌新,大多时候都凭着感觉走,不分析战局。
推广到欧5,即舍小取大,李代桃僵。攻城也是一样,把步兵放在攻城车前吸引火力,也是丢车保帅的典例,当然,攻城的计策后面会讲。
专题类型:策略
更新时间:
专题标签:帝国剧情历史战争题材
欧陆战争5帝国是一款以世界各国历史大型战役为题材制作的策略类游戏,游戏中包含了历史不同时期的各国战役,玩家可以通过自己的智慧去征...
5.0友情指数
0人0人
猜你喜欢帝国剧情历史战争题材
帝国游戏以战争为题材,拥有空战、海战和陆战等玩法,游戏丰富的策略玩法,震撼的战斗场面,让玩家可以享受到最真实的军团对决。下面就让友情小编来为您展示一下本站的帝国...
欧陆战争5帝国游戏资讯
欧陆战争5帝国攻略心得1
欧陆战争5帝国游戏问答27
(您的评论需要经过审核才能显示)

我要回帖

更多关于 欧陆战争3争霸模式 的文章

 

随机推荐