You need to enable JavaScript to run this app.
导航
游戏排队
最近更新时间:2025.06.10 18:00:40首次发布时间:2025.06.10 18:00:40
我的收藏
有用
有用
无用
无用

火山引擎云游戏为您提供游戏排队原子能力及最佳实践,当云游戏服务器资源不足或面临突发高并发时,可将游戏用户加入排队队列,通过有序的排队机制实现:

  • 资源有序分配:避免服务器过载崩溃,保障已连接用户的流畅体验。

  • 接入优先级管理:为付费用户或特定任务提供插队通道,实现差异化服务。

  • 用户体验优化:实时反馈用户排队进度,通过透明化调度机制降低资源竞争引发的无效连接尝试,提升服务可预期性。

适用场景

资源高峰期
服务器算力满载,新用户无法即时接入,需有序等待空闲资源释放。
热门活动
大量用户同时登录或参与限时游戏活动,需引入排队机制缓冲集中的并发请求,按序分配资源。
VIP 服务
付费用户(如会员、订阅制用户)优先体验新游戏,需加入高优先级队列快速跳过常规等待,直接分配资源。

前提条件
  • 已完成云游戏服务基础接入,能够正常启动游戏。

  • 已联系火山引擎技术支持开通排队功能(默认关闭,且暂不支持自助开通)。

功能实现

火山引擎云游戏当前提供两种排队接入方案供您选择。

方案一(推荐):火山引擎托管队列

火山引擎云游戏整合产品原子能力,提供排队用户的队列管理以及排队优先级等逻辑,仅需要客户端接入使用即可。该方案适用于对排队逻辑没有强定制化需求,且希望以最小开发量快速集成的业务。

API 时序图

alt

  1. 客户端调用 start() 接口申请启动游戏时传入 queuePriority 参数启用排队逻辑。

  2. 火山引擎自动管理队列,通过回调通知排队进度。

  3. 队列中用户排到队首后自动触发游戏启动。

API 参考

客户端

功能描述

各端接口

AndroidiOSWeb

在申请启动游戏,传入 queuePriority 参数启用排队功能。

通过 queuePriority 传入不同数值可以控制不同用户进入游戏的优先级,数值越小,优先级越高。

start()

startWithConfig()

start()

调用 start() 触发排队逻辑后,返回当前队列信息。IGamePlayerListener.onQueueUpdateonQueueUpdateon('queue-update')
用户主动退出排队。暂不支持暂不支持cancelQueue()
当有空闲资源释放时,通知队首用户排队结束,同步发起进入游戏申请。IGamePlayerListener.onQueueSuccessAndStartonQueueSuccessAndStarton('queue-success')
获取游戏开始成功回调,用户看到游戏画面,成功开始游戏。IGamePlayerListener.onPlaySuccessstartSucceedResult通过 start() 接口的 promise 返回
用户退出游戏,停止从云端拉流,并释放本次游戏相关的资源,游戏资源容量更新。stop()stop()stop()

服务端

接口
GetDailyMaxQueueLength查询指定业务某个资源套餐下每日的最大队列长度。
ExitUserQueue用户主动退出排队队列。
回调
丢弃排队用户事件回调用户已经排队成功,但是一直未申请游戏服务,导致超过服务等待时间,可使用此回调将用户丢弃排队。
游戏排队实时队列长度回调获取业务维度每个资源套餐类型的实时排队队列长度。

方案二:自主开发队列

您可以利用火山引擎提供的原子能力,如预锁定资源、查询游戏容量等接口,在服务端自行实现排队用户的队列管理以及插队、区分排队逻辑。该方案适用于对排队逻辑有高度定制化需求的业务,如复杂的 VIP 等级体系。

实现流程参考

alt

  1. 服务端调用 GetGameCapacity 接口监控资源余量。

  2. 自主实现和管理用户队列。

  3. 当有空闲资源释放时,调用 PreAllocateResource 接口预锁定资源并通知队列头部用户。

  4. 成功预锁定资源后,客户端即可申请启动游戏。

API 参考

服务端

接口功能描述

GetGameCapacity

获取游戏维度的资源容量信息。
可以通过返回的 ApplyNum(当前游戏的资源订购总量)和 UsedNum(当前游戏的资源使用量)计算资源余量。

PreAllocateResource

预锁定并发资源。
当有空闲资源释放时,可为队列头部的用户锁定资源,并将锁定的资源通过 ReserveID 字段返回,客户端即可使用该信息申请启动游戏。

GetDailyMaxQueueLength查询指定业务某个资源套餐下每日的最大队列长度。
ExitUserQueue用户主动退出排队队列。

客户端

功能描述

各端接口

AndroidiOSWeb

传入通过 PreAllocateResource 获取的预锁定资源 ID ReserveID,申请启动游戏。

start()

startWithConfig()

start()

获取游戏开始成功回调,用户看到游戏画面,成功开始游戏。IGamePlayerListener.onPlaySuccessstartSucceedResult通过 start() 接口的 promise 返回
用户退出游戏,停止从云端拉流,并释放本次游戏相关的资源,游戏资源容量更新。stop()stop()stop()
常见问题

问题 1:为什么开启排队功能后,业务下并发资源达不到上限?

排队功能开启后,当某用户排到队首时,系统会进行预锁定资源。预锁定资源期间,这一路资源不会被其他用户使用,直到该用户放弃。

问题 2:如何查看线上业务的排队数据?

当您选择方案二时,火山云游戏控制台提供排队数据查询,请前往数据监控页面查看实时数据历史数据。目前仅支持【云端游】按照【订购套餐】分类查看排队数据。方案一不支持查看排队数据。