虎牙开放平台文档

开发说明

小游戏前端技术

终端小游戏的前端开发语言是 JavaScript。

引擎支持

开发者可以采用开发 HTML5 游戏方式(基于 WebGL)来开发小游戏,支持使用Cocos CreatorEgretLaya等游戏引擎开发,导出HTML5格式;也支持使用Three.jsPhaser 3PixiJS等轻量级 HTML5 渲染引擎直接开发,详情可查阅虎牙小游戏引擎支持清单及对接流程

小程序 SDK 调用

所有小程序前端的 API 和能力,在虎牙小游戏内都可以调用。

小游戏的运行环境中已经自动注入了虎牙小程序的 SDK,所以小游戏代码中不再需要导入小游戏 SDK,可以直接在 js 代码中调用hyExt中的各端 API。

为了解决 H5 游戏单独编译时可能出现hyExt未定义的问题,在小游戏中可使用window['hyExt']的方式调用小程序 API

WebSocket 支持

小游戏前端提供了一个经过虎牙代理的 WebSocket 支持,API 为hyExt.WebSocket。使用方式与标准的 WebSocket 类似。 例如:

let ws = new window['hyExt'].WebSocket(wsUrl); //websocket连接所传输二进制数据的类型,只支持“arraybuffer” ws.binaryType = "arraybuffer"; ws.onmessage = function (event) {} ws.onopen = function (event) { ws.send("test data"); } ws.onerror = function (event) {} ws.onclose = function (event) {}

hyExt.WebSocket 支持文本消息及二进制消息,可以传输 Json、Protocol Buffer、私有协议等。

调用let ws = new window['hyExt'].WebSocket(wsUrl)时,虎牙代理会自动在原始的 wsUrl 的末尾追加参数jwt=xxx,即用户的鉴权 token,方便游戏服务器来鉴权及获得用户 ID,jwt 的用法参考统一鉴权说明

hyExt.WebSocket 支持发送和接收的最大单个 message 为 64k

使用 hyExt.WebSocket 只能连接有公网 IP 的服务器,本机或者局域网 IP 无法访问

使用 hyExt.WebSocket 需要在开发者中心申请“进阶型开发者”及以上的权限套餐,具体请参考权限管理

2022 05 12 11 11 11

HTTP 支持

基于安全性原因,小游戏对XMLHttpRequest的使用进行了限制,目前只允许通过XMLHttpRequest访问以下域名:

hyext.com msstatic.com huyaimg.dwstatic.com

HTTP 请求访问游戏服务器

如果要通过 HTTP 请求访问游戏服务器,由于游戏服务器不在XMLHttpRequest允许访问的范围内,需要通过小程序提供的统一网络请求 API:hyExt.request

加载用户头像

XMLHttpRequest允许访问的域名中包括虎牙用户头像所在域名,所以可以用XMLHttpRequest来加载用户头像二进制数据。

音频播放

暂未支持 Web Audio。 支持使用 HTML audio Element 方式创建及播放音频。

var x = document.createElement("audio"); x.setAttribute("src", "xxxx.mp3"); x.play();

如果要循环播放,需要设置: x.setAttribute("loop", true);

文字输入

建议直接使用游戏引擎提供的文字输入 API,能获得更好的兼容性

文字输入框需要在游戏里面自行绘制,下面的代码只是用来弹出键盘、收起键盘,以及获取输入文字

var x = document.createElement("input"); document.body.appendChild(x); x.setAttribute("type", "text"); //监听输入结果: x.setAttribute("onchange", (event) =>{}); //弹出键盘: x.focus(); //关闭键盘: x.blur();

小游戏后端技术

小游戏后端开发语言不限,包括:Java、NodeJS、C++等都支持。

游戏前后端通信尽量使用 WebSocket 方式。