【发布时间】:2020-06-01 02:23:54
【问题描述】:
我正在开发一款快速游戏,其中玩家有一个方块(类似时钟)。
因此,我将游戏开始时以及每次移动的时间存储在数据库中,以便我可以轻松计算每个玩家移动所花费的时间。
我知道我不能相信客户会说对手的计时器何时结束,所以目前,我每秒都会检查每场正在进行的比赛的剩余时间。
我知道这是不可持续的,我想知道如何在服务器端检查正在进行的游戏是否因为一名玩家没有时间而结束。
所以,这就是我目前的做法:
- 我在游戏开始时(服务器时间)存储在数据库中
- 我将每个动作都存储在数据库中,以及动作的时间(服务器时间)
- 客户端在移动后通过套接字更新剩余时间
客户端更新时钟(仅用于显示)。
-
每秒,我计算服务器端:
- 从第一手到开始游戏的时间,从第二手到第三手的时间等,了解第一个玩家每一步玩了多少次
- 我对第 2 名玩家做同样的事情,第 1 步和第 2 步、第 3 和第 4 步之间的时间等等...
- 当一名玩家经过的时间超过允许的时间时,服务器会发送(通过套接字)游戏结束。
我想知道我怎么能不计算每一秒,因为我希望服务器在没有人连接到游戏时更新结果。
谢谢。
【问题讨论】:
-
只需在服务器端构建您的时钟逻辑。
-
你能解释一下吗?这是我第一次这样做,不知道如何...... Tu
-
Roko 的意思是使用你的服务器时间作为事实的来源,所以你不必那么依赖客户端时间。这可以通过许多不同的方式来完成。如果您提供有关当前设置的更多详细信息,将会有所帮助。但是你有没有问过自己这个游戏是否真的需要这样的精度?也许在客户端计算时间毕竟可以正常工作。
-
我在问题中添加了更多信息。
标签: javascript mysql node.js typescript