快节奏的多人游戏同步 - 示例代码和在线演示

这是一个实现我《快节奏的多人游戏同步》系列文章中主要概念的客户端——服务器架构演示示例(不包括实例插值,那块我还没弄完)建议在阅读完这系列文章后再看这部分。

代码是纯JavaScript写的,一页就装下了。少于400行代码,包含大量注释,如果你真的看懂了上文的概念就可以开始演示了,执行起来相当直观。

以下为动态网页部分,建议直接打开网址观看

http://www.gabrielgambetta.com/fpm_live.html

引导:

两种视角显示出玩家看到的和从服务器角度看到的游戏世界。你可以使用键盘上的左右方向键来控制绿球移动。试试吧!

理想状态

以lag=0,update=60开始。这是理想状态:客户端一旦产生新状态服务器就马上处理,客户端和服务器之间也没有任何延迟。当然的,其运行情况堪称完美。

缓慢服务器

现在把update设为5.服务器每秒只发送5次更新,客户端那边看起来就是非常跳跃的。但整体上看起来还算有响应。

超超超超超超超级延迟

现在把lag设为250ms。游戏看起来好像失去了响应似的,玩家视角中必须等到服务器承认了输入并回传给客户端后才会产生变化。因为双向的延迟,角色开始在你按下按键后半秒才移动。

客户端预演

开启预演并将update设为1.按下右键一会。现在因为客户端的预演动画看起来非常平滑。但当服务器完全处理完客户端所有输入并将状态回传时,由于延迟,客户端预演受到影响,位置跳回了之前的位置。

服务器调节

现在启用调节。服务器发送状态时,我们从服务器端发送的权威位置开始将所有未被承认的输入重新进行预演。不管延迟多大,或者服务器更新频率几何,客户端始终都可以同步!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章