【发布时间】:2023-03-19 01:13:01
【问题描述】:
我正在编写一个国际象棋游戏的服务器,其中组织了活动,成千上万的玩家将参加一个活动,我们将在 2 名玩家之间创建比赛,即如果有 1000 名玩家,则意味着 500 场比赛,并且在比赛中用户有有限的时间来轮到他轮到他的 N 轮,如果超时服务器将代表这个用户轮流。万一中间打得差不多了,我们还是要完成比赛。
我的问题是如何管理剩余时间并获取超时玩家的信息。
谁能建议我处理这类游戏的最佳方式。
【问题讨论】:
-
我看到您将套接字作为标签,所以我认为您知道如何使用它们,您只需与用户保持连接,您必须在服务器上设置计时器。虽然我不明白为什么你要在时间用完时继续游戏,因为这是结束游戏的条件之一,如果玩家关闭游戏,你可能会有某种“暂停”,因为如果有 1 个玩家断开连接,因为他可能有发出并回来。
-
谢谢@FilipRistic 是的,我对套接字有一个想法,但我们不能依赖客户端,因为用户可以选择通过按
I am back button回到游戏,在这种情况下他可以玩他剩下的回合。目前,我正在使用 mongodb-cron[npmjs.com/package/mongodb-cron] 模块。并且它经常查询数据库以检查用户是否有时间没有轮到他玩。但我不确定每秒或更少查询数据库是否有效。服务器上的数千或缺少用户的计时器是什么意思? -
并且有可能他在事件声明时直到事件结束才打开他的应用程序,但我们需要通过随机移动轮到对手来完成他的游戏。
-
这些都是现在的实现细节,你需要找出最适合你的需求,我只是给你一个想法。
-
感谢@FilipRistic。还有其他人可以帮助我吗?
标签: node.js mongodb sockets redis