快速多人游戏(5) - 示例代码和Demo

翻译 2016年06月02日 22:05:25

原文链接:Fast-Paced Multiplayer: Sample Code and Live Demo


这是一个简单的C-S架构的实现,用来证明这一系列文章里的一些观点。如果你没有阅读过之前的文章的话,下面的内容对你并没有什么意义。

代码是JavaScript写的,都包含在这个网页里,不超过400行,并且包含了很多的注释,这也证明了你如果理解了其中的概念,实现它是相对简单的。



注:实验demo最好前往原网站进行体验

参数说明

 上面的两个窗口模拟了玩家的视角,还有整个世界的状态,你可以通过左键和右键来控制,试一试吧!


最佳状态

将参数设置为 Lag=0,Update = 60这是最佳状态,服务器以最快的速度更新整个世界的状态,客户端和服务器之间没有任何延迟,这种情况当然是最吼的。


响应缓慢的服务器

设置Update = 5. 服务器每秒只更新5次,所以客户端端的看起来一顿一顿的,但是整个游戏看起来还能玩。


延延延延延迟

我们来加一些延迟,将它设置为250ms。游戏已经感觉有点迟钝了:玩家的视角直到服务器确认了客户端的输入才会更新,因为传送出去还传送回来都要花费时间,所以当你按下按键,你的角色要0.5s之后才会移动。


客户端预测

开启预测,将Update设置为1,按住右键一会,现在动画就变得很顺畅了,因为做了客户端的预测,但是当服务器处理完客户端的请求将结果返回给客户端的时候,由于延迟,客户端的预测已经超过了返回的结果,所以角色弹回去了。


服务端调解

现在开启调解,当服务器发送状态的时候,从服务器发送过来的确认的位置,通过所有未经确认的输入进行再次预测。现在不管有多少延迟,不管服务器的更新频率是多少,客户端总是同步的。


相关文章推荐

快速多人游戏(3) - Entity插值

介绍在系列的第一篇文章中,我们介绍了一种权威服务器的思想还有他在防止玩家作弊方面的优势。但是直接使用这种技术会引起可玩性和响应性方面的问题。在第二篇文章中,我们提出了一种客户端预测的方法来处理。到现在...

SliderJoint2D 滑动关节移动限制

using UnityEngine; using System.Collections; public class limiteTranslation : MonoBehaviour { ...

快速多人游戏(5) - 示例代码和Demo

http://blog.csdn.net/silangquan/article/details/51553300 原文链接:Fast-Paced Multiplayer: Sample Co...

【示例代码】超萌的休闲HTML5小游戏——打地鼠

打地鼠小游戏是位HTML5达人用10天时间完成的,他总结了在研发过程中的教训和不足: 1.在5种地鼠的随机产生过程中,本不应该是同等概率出现的,但我还是同概率的。应该,甚至是一关出现几只...

Listview展示拍照图片demo示例代码

图片展示 ...

Listview的上拉加载更多和下拉刷新demo示例代码

var items = null; $M.page.addEvent('onLoad', function(params){ items = [ {'icon':'/images/a...

【Android LibGDX游戏引擎开发教程】第03期:示例代码详细讲解

承接了上一篇文章中关于环境搭建的简单示例,这一篇我会详细讲解FirstGame和HelloGameActivity类中的代码。   一、ApplicationListener接口详解   1、...

一周最新示例代码回顾 (5/28–6/3)

回顾上周微软一站式示例代码库最新发布的7篇示例代码:   [Sample of June 3rd] IE Browser Helper Object demo 该实例演示如何开发一个IE的Bro...

html 5 拖拽示例代码

发现了一个小知识点: var members=document.querySelectorAll('#member li');members 是nodelist 对象,而不是数组,有长度,但是不能遍历...

HTML5实现多文件的上传示例代码

[转自] http://www.jb51.net/html5/136791.html 主要用到的是的multiple属性 代码如下: 下面是页面的详细代码: 代码如下: ...
  • kolabb
  • kolabb
  • 2015年12月29日 10:08
  • 1370
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:快速多人游戏(5) - 示例代码和Demo
举报原因:
原因补充:

(最多只允许输入30个字)