开发说明
小游戏前端技术
终端小游戏的前端开发语言是 JavaScript。
引擎支持
开发者可以采用开发 HTML5 游戏方式(基于 WebGL)来开发小游戏,支持使用Cocos Creator、Egret、Laya等游戏引擎开发,导出HTML5格式;也支持使用Three.js、Phaser 3、PixiJS等轻量级 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 无法访问
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 方式。