当前位置: 首页 > 知识库问答 >
问题:

哪种是实现基于轮流计时器的多人游戏的最佳方式?

仲璞瑜
2023-03-14

我正在实现多人回合为基础的游戏使用Node.js服务器端脚本。游戏就像大富翁一样,多个房间和单个房间都有多个玩家。我想为所有房间实现计时器,我已经看了很多文章,我有两个选择如下:

1}我将发射与当前的时间给每个球员,他们将处理计时器,并发射到服务器在回合或时间。

2}我可以在服务器上管理计时器,并在每秒发出一次,但这会给服务器带来负载,也会让人困惑,因为Node.js是单线程的,那么我如何为多个房间管理多个setInterval()。这会增加队列,并会造成延迟。

所以请协助我最好的选择。

共有1个答案

端木乐语
2023-03-14

混合方法可能最适合这个问题。首先,可以从服务器接收计时器的当前值。随后,客户机可以独立地关闭计时器,而无需向服务器请求当前时间。如果准确性对此项目很重要,那么您可以每隔15秒左右请求服务器调整可能导致服务器与其客户机之间差异的时间漂移。

另外,请注意,尽管Node.js是单线程的,但它本质上是异步的。

 类似资料:
  • 每2个玩家,服务器将创建1个房间(我的游戏是PvP,一对一) 每个房间处理游戏逻辑 我将使用作为我的游戏循环 服务器FPS=5 每个房间都可以处理玩家的移动和一些物理操作 关于实际问题: 基于下面的点数,我应该使用什么样的游戏循环?下面每种类型的游戏循环的利弊是什么。 null

  • 提示:“写一个程序对着电脑玩猪游戏。在每个回合,当前玩家将掷出一对骰子并累积点数。目标是在你的对手之前达到100分或更多。(为了测试的目的,使用30点而不是100点)如果在任何回合中,玩家掷出一个1,则该回合积累的所有点数都将被没收,骰子的控制权将转移到另一个玩家身上。如果玩家在一个回合中滚动两个1,则该玩家失去迄今为止积累的所有点数,控制权转移到另一个玩家身上。玩家可以在每次掷骰后自愿交出骰子的

  • 本文向大家介绍java实现多人多牌数比较游戏,包括了java实现多人多牌数比较游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java实现多人多牌数比较游戏的具体代码,供大家参考,具体内容如下 具体实现步骤如下: 实现扑克Card类,用于储存扑克牌,1-13代表点数,4-1代表花色(黑桃,红桃,梅花,分块) 实现扑克列表CardList类,用于实现生成一副牌,洗牌,发牌的功能 实

  • 本文向大家介绍基于spring 方法级缓存的多种实现,包括了基于spring 方法级缓存的多种实现的使用技巧和注意事项,需要的朋友参考一下 方案实施 1、 spring和ehcache集成 主要获取ehcache作为操作ehcache的对象。 spring.xml中注入ehcacheManager和ehCache对象,ehcacheManager是需要加载ehcache.xml配置信息,创建ehc

  • 我希望在我工作的公司里从SVN转到Git。我面临的问题是如何让我的头脑围绕一个体面的工作流程。 通常,对于处于启动后状态的PHP项目,客户端会为一些带有ID(smeg23452)的工作创建票证。在SVN中,我们通常会将票证ID放在开发分支的每次提交中,然后挑选这些更改并将它们放入主干。没关系,但是有时合并失败,或者开发人员未能将票证号与工作相对应。 在理想情况下,我希望能够在Git中为票证建立一个

  • 本文向大家介绍Javascript实现秒表计时游戏,包括了Javascript实现秒表计时游戏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了javascript实现秒表计时游戏的具体代码,供大家参考,具体内容如下 一、说明 本游戏页面设计分为左右两栏。左上为跑马灯,左下为计时器和”START”按钮;右上为排行榜,右下为游戏规则说明。 跑马灯用的是定时器,循环走一遍。计时器是从”00