老哥们,请教个游戏排队的问题!

2020-06-08 09:38:14 +08:00
 spicecch
现在是 app 请求服务器排队接口开始排队,然后服务器开始排队,现在要求是服务器根据排队情况给 app 推送排名消息,app 跟据消息判断用户什么时候能进入游戏,推送消息调用的是第三方,求问下怎么实现这个排队逻辑
2205 次点击
所在节点    问与答
20 条回复
spicecch
2020-06-08 09:54:00 +08:00
有没有游戏开发的老哥来指点一下,想听取下意见在开发
Amance
2020-06-08 09:56:50 +08:00
就是服务器给客户端推送啊,socket 处理就行了
Otho
2020-06-08 10:06:58 +08:00
你说的推送,是指什么? app 根据消失判断用户什么时候可以进入游戏,不觉得很麻烦嘛?既然能知道在排队,必然能知道什么时候可以进入游戏。
spicecch
2020-06-08 10:19:30 +08:00
@Amance 目前是采用接口推送消息的形式通知客户端,不是长连接
spicecch
2020-06-08 10:20:21 +08:00
@Otho 第三方推送,目前用的极光。
th00000
2020-06-08 10:21:51 +08:00
首先给 app 离线推送排队消息这种需求就不该出现, 排队是一个前台需求, 后台情况太多, 边缘很麻烦
很容易出现用户进程被杀掉, session 被销毁, 推送了, 但是用户需要重新排队的恶心情况出现


排队逻辑, 如果是类似 mmo 等分区服游戏, 自己在内存里实现
如果是吃鸡等通服游戏可以用 Redis 来实现
kop1989
2020-06-08 10:23:00 +08:00
推送透传消息的话,到达率堪忧。
个人认为应该用长轮询或者长连接吧。否则怎么知道这个人退出了队列?
如果不知道岂不是会导致排队的体验很差?
Vegetable
2020-06-08 10:25:15 +08:00
迷惑,这不成了美味不用等了吗?我排到了没及时点,还会过号吗?这好怪异啊
jamme
2020-06-08 10:51:09 +08:00
没整明白你要做的是个什么功能,游戏不都是即时的么?你用第三方推送是什么意思?排队结束,然后手机发个通知,告诉玩家排队结束进入游戏,然后需要玩家再打开游戏 app ?
Amance
2020-06-08 11:19:57 +08:00
@spicecch 那你设计不对
Otho
2020-06-08 11:39:50 +08:00
@spicecch 消息推送 这个场景不太适用。
imherer
2020-06-08 13:46:57 +08:00
排队使用推送不合理,建议把排队这块逻辑改成长连接
imherer
2020-06-08 13:47:32 +08:00
实在不行用短连接定时轮询可能都比你推送好一些
spicecch
2020-06-08 14:09:57 +08:00
@kop1989 目前测试的消息(根据用户设备单对单推送)到达率还行,而且是实时到达的
spicecch
2020-06-08 14:11:28 +08:00
@Vegetable 目前设计是排到队了会在 10s 内自动进入游戏
kop1989
2020-06-08 14:11:43 +08:00
@spicecch #14 如果是前台唤醒状态,到达率当然是可使用的,但是你都用上推送了,难道不支持后台排队?
反过来说,如果只允许前台排队的话,用长轮询或者长连接应该更贴合业务吧。最起码能知道这个人离队了。
否则可能排个队 300 个人,前面 150 个都是空等。
spicecch
2020-06-08 14:24:36 +08:00
@kop1989 目前是后台处理排队,每一段时间给用户推送排名信息,app 根据信息显示排名或者进入游戏,用户离队的话会告知服务器将该用户剔除队列
spicecch
2020-06-08 14:26:23 +08:00
@jamme 因为游戏也是放在第三方平台的,app 只提供展示游戏,我这边要处理进入游戏前的排队逻辑,进入游戏后就不关我事了
spicecch
2020-06-08 14:28:06 +08:00
@imherer 目前是想法是通过定时任务给队列中的用户推送排名信息
spicecch
2020-06-08 14:29:52 +08:00
@th00000 我这边就相当于是 app 服务器吧,游戏都是放在第三方的,第三方需要我这边自己处理进入游戏前的排队逻辑

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/679586

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX