虎牙开放平台文档

弹幕云游戏开发流程

弹幕云游戏基于虎牙小程序平台进行开发,以下是基于虎牙小程序平台实现一个弹幕云游戏demo(下载源码)的简要过程。

1. 创建本地项目

通过虎牙小程序CLI工具创建项目,详情参考创建项目。如图:

注意:终端类型必须选择pc主播端-面板 - 主播端面板

hyext_init

这里我们以BarrageGame为项目名,创建好的项目结构如图

project.dir.init

2. 创建小程序

详情可以参考创建小程序流程。小程序运行平台选择虎牙直播

runplatform

创建好的小程序如图

create.hyext

请保管好您的开发者appId及appSecret,以及您的小程序id,后面连接弹幕WebSocket通道时会用到。

3. 监听弹幕消息

创建并正常启动小程序项目后,即可开始对接直播间弹幕消息。虎牙直播间弹幕消息的监听主要基于开放API实现,推荐通过hyext/communication库来实现消息的监听。

注意:由于云端运行环境不支持小程序前端SDK,弹幕云游戏只能通过开放API监听弹幕消息,不能通过小程序前端SDK监听弹幕消息!

openapi.getMessage

第一步,在项目根目录下执行以下命令安装hyext/communication

npm i -D @hyext/communication

第二步,打开streamer\app.js并修改成代码:

import { UI } from '@hyext/hy-ui' import React, { Component } from 'react' import './app.hycss' import { createOpenWS, WSEventIds } from "@hyext/communication"; const { View, Text } = UI class App extends Component { constructor(props){ super(props) this.state={ data:[] } } componentDidMount() { hyExt.context.getStreamerInfo().then((streamerInfo) => { const ws = createOpenWS({ appId: 'your_appid',// 开发者id secret: 'your_secret', // 开发者密钥 expireTimeDelta: 60 * 10, // 10分钟 extUuid: 'your_extUuid',// 小程序id roomId: streamerInfo.streamerRoomId, // 直播间ID debug: true }) // 监听ws内置事件 ws.on(WSEventIds.open, (data) => { this.setState({data:[...this.state.data,'The ws has opened.']}) }) ws.on(WSEventIds.close, (data) => { this.setState({data:[...this.state.data,'The ws has closed.']}) }) // 监听open-api弹幕事件 ws.on('getMessageNotice', (data) => { console.log(data) // this.setState({data:[...this.state.data, JSON.stringify(data)]}) this.setState({data:[...this.state.data, data.sendNick + ': ' + data.content]}) }) }) } render () { return ( <View className="container"> {this.state.data.map((item,i)=>{ return <Text key={i}>{i+'. '}{item}</Text> })} </View> ) } } export default App

请注意将上面代码中的开发者id、开发者密钥、小程序id以及直播间id配置好,即修改这里的配置:

const ws = createOpenWS({ appId: 'your_appid',// 开发者id secret: 'your_secret', // 开发者密钥 expireTimeDelta: 60 * 10, // 10分钟 extUuid: 'your_extUuid',// 小程序id roomId: streamerInfo.streamerRoomId, // 直播间ID debug: true })

开发者id、开发者密钥可在开发者信息查询,如图:

developer.info

小程序id可在开发者中心的小程序-概要中查询,如图:

extinfo

直播间id即开发者账号(完成主播认证即可成为主播号)对应的直播间房间号,可在虎牙个人中心或者虎牙主站中查询,如图:

roomId.web2 roomId.web

4. 本地测试

配置好相关参数后即可执行npx hyext start启动游戏。启动成功界面如下:

local.start

拷贝启动成功后输出的PC主播端-面板的URL(即https://localhost:18080/index_streamer_pc_anchor_panel.html),并在Chrome浏览器打开,即可呈现游戏程序对应的内容,如图所示:

local.start.success

浏览器显示0. The ws has opened.说明游戏已成功监听弹幕,接着在上述程序配置中的直播间(APP或主站均可)发送弹幕即可在浏览器上显示弹幕内容。如图

send.text get_text

若是出现异常则可以寻找帮助

5. 添加小程序

由于云端一键开播是用开发者账号进行开播,因此需要开发者给自己的账号添加小程序。添加小程序可以参考小程序安装教程

6. 申请云端一键开播权限

云端一键开播是通过虎牙云生产平台运行小游戏,并将小游戏画面在直播间直播出来的技术。申请云端开播权限需要向管理员提出申请,请发送邮件到hy-ext@huya.com,说明申请原因并附带您的小程序id

7. 云端一键开播

云端开播权限申请通过后,即可在您的小程序管理页中看到开播管理菜单,如图

cloudliveManager

分别输入直播间标题、直播间品类、直播间密码后,点击“开始直播”即可进行云端一键开播。

注意项1:测试版本的小程序只能在一起玩测试品类下开播,只有审核通过的正式版本小程序才可以在一起玩品类下开播!

注意项2:弹幕云游戏的直播间不能加密,否则小游戏无法通过开放API监听到弹幕消息!

开播成功后提示相关开播信息,请检查开播信息和开播版本(小程序的版本)是否正确。 若检查发现开播版本内容不正确,则需要先停止直播,添加正确版本的小程序后,再重新开播。若开播失败则可以联系管理员协助。

cloudliveSuccess

开播成功后可以点击“停止直播”按钮停止云端开播。

8. 线上测试

云端开播成功后即可进行线上测试验证,点击上一步开播成功后的直播间链接,即可跳转到对应的直播间参与弹幕云游戏。