使用说明: 为了防止数据冲突以及更好地集成游戏,开发者必须集成并使用盒子SDK。
使用范围(强制): 开放数据、开放数据域、数据存储、cc.game事件
sdk下载地址: https://github.com/laixiao/gamebox/tree/master/sdk (下载sdk文件夹,复制到项目中即可)
1.配置xx_sdk_conf.js文件:
var sdk_conf = {
debug: false, //调试开关
game: 'aa', //游戏唯一标识
version: '1.0.0', //游戏版本
bannerAdUnitId: 'adunit-d6b9bab967f2f8b7', //banner广告单元id
videoAdUnitId: 'adunit-3fa34dc8aada52e3', //video广告单元id
};
2.初始化sdk(游戏启动时):
if(!window.xx_sdk){
window.xx_sdk = new sdk({ sdk_conf: require("xx_sdk_conf") });
}
//1.初始化sdk成功后才能使用sdk
xx_sdk.init(function(res){
if(res){
console.log('sdk初始化成功')
//=====对接分享接口======
//2.监听右上角分享按钮
xx_sdk.onShareAppMessage({type: 0, query: "" });
//3.主动拉起分享
//xx_sdk.shareAppMessage({type: 1, query: "xxx=xxx" });
}
})
3.获取用户信息
//盒子内的子游戏无需登录,可直接获取用户数据
var user = xx_sdk.getUser();
/*
用户数据格式如下:
{
avatarUrl: "https://wx.qlogo.cn/mmopen/vi_32/E31dTdkFnKSFOmmy98kLqJlmDQFjLoRt52KTxohsKFtib2otLWZFOCzyuPXia8A7YR32th1FibqncWra94aAJQicYw/132",
uid: "测试用户uid",
openid: "测试用户openid",
city: "广州",
country: "中国",
province: "广东",
gender: 1,
language: "zh_CN",
nickName: "千寻િ😨雨天"
}
*/
请使用以下api操作(强制): 数据存储、cc.game事件等操作、开放数据、开放数据域。
1.数据存储:
//存
xx_sdk.setItem("nick","hello")
//取
var nick = xx_sdk.getItem("nick")
2.cc.game 事件:
//注册监听
xx_sdk.on("xxx", (e)=>{
console.log("xxx")
}, this);
//关闭监听
xx_sdk.off("xxx");
//发射事件
xx_sdk.emit("xxx");
xx_sdk.emit("xxx", {nick:"xxx"});
// 3.微信开放数据:
// //存
// var DataList = new Array();
// DataList.push({key:"score",value:"520"});
// xx_sdk.setUserCloudStorage({
// kvDataList: DataList,
// success: function(res){
// console.log(res)
// },
// fail: function(res){
// console.log(res)
// }
// })
// //取
// xx_sdk.getUserCloudStorage({
// keyList: ["score"],
// success: function(res){
// console.log(res)
// },
// fail: function(res){
// console.log(res)
// }
// }
// 4.微信开放数据域:
// //发送
// xx_sdk.postMessage("hello")
// //监听
// xx_sdk.onMessage((d)=>{
// console.log(d)
// })
1.开始游戏
//==获取对战数据==
var gameData = xx_sdk.getGameData();//游戏大厅匹配对手玩家成功,携带对战数据进入子游戏。
/*
//gameData的数据格式如下:
var gameData = {
user : { //当前用户信息
avatarUrl: "https://wx.qlogo.cn/mmopen/vi_32/E31dTdkFnKSFOmmy98kLqJlmDQFjLoRt52KTxohsKFtib2otLWZFOCzyuPXia8A7YR32th1FibqncWra94aAJQicYw/132",
uid: "测试账号1",
city: "广州",
country: "中国",
province: "广东",
gender: 1,
language: "zh_CN",
nickName: "千寻િ😨雨天"
},
ai: 1, //1:机器人 0:真人
room_id: "room_001", //房间id
create_time: new Date().getTime()/1000, //创建时间
room_owner: "测试账号1", //房主uid
game_id: "ae", //游戏唯一标识
player_count: 2, //房间人数上限
all_player_data: [ //对战数据
{
player_data:{
avatarUrl:"https://wx.qlogo.cn/mmopen/vi_32/E31dTdkFnKSFOmmy98kLqJlmDQFjLoRt52KTxohsKFtib2otLWZFOCzyuPXia8A7YR32th1FibqncWra94aAJQicYw/132",
city:"广州",
country:"中国",
gender:1,
language:"zh_CN",
nickName:"千寻િ😨雨天",
province:"广东"
},
position:2, //玩家所在房间的位置
state:0, //玩家状态 0:未准备 1:已准备
uid:"测试账号1",
ai: 1, //是否ai机器人
ai_level: 1, //ai难度 0-1 0最容易 1最难
},
{
player_data:{
avatarUrl: "https://wx.qlogo.cn/mmopen/vi_32/oNyD409Hg3gHqJtqtKFhhYDiad6pRFiaprwjEheyLra4CEicGPdnn7uBCJL0oxZjqAibW4wrTsbtfnHoY6NolPpz9A/132",
city: "河池",
country: "中国",
gender: 2,
language: "zh_CN",
nickName: "象牙塔จุ๊บ",
province: "广东"
},
position:2, //玩家所在房间的位置
state:0, //玩家状态 0:未准备 1:已准备
uid: "测试账号2",
ai: 1, //是否ai机器人
ai_level: 1, //ai难度 0-1 0最容易 1最难
},
]
}
*/
// ==监听游戏全局事件==
aj_sdk.onGameEvent((e)=>{
if(e.type == "emoji"){
console.log("=收到一个表情=", e.emoji)
// 表情格式如下
// emoji = {
// "id":1,
// "type":1, //表情类型
// "url":"https://qxgame-1257972171.cos.ap-guangzhou.myqcloud.com/gameadmin/emoji/1.png",
// "weight":10, //表情权重
// "txt ":"太菜了", //表情中文描述
// "sender": { //表情的发送者
// "uid": "wx_oGUmH5Ic0ls6xa52epYcL7n77U3U",
// "openid": "oGUmH5Ic0ls6xa52epYcL7n77U3U",
// "nickName": "千寻િ😨雨天",
// "avatarUrl": "https://wx.qlogo.cn/mmopen/vi_32/ib3FwHCA5Nc3N0MpRdb6D5aibGTchEiad27KgRal9BPibfNHo0NZmagJVziaGmn96icC8cqJIrUW3B1vHlG9icibbK5tgA/132",
// "gender": 1,
// "country": "中国",
// "city": "广州",
// "province": "广东",
// "sig": ""
// }
// }
}
if(e.type == "giveUp"){
console.log("=对方认输了,调用游戏停止逻辑=")
}
})
2.游戏进行中:
//==表情互动==
//获取表情包列表(自行根据产品需求展示,大小根据UI风格自由调整,规格为正方形)
xx_sdk.getEmoji((d)=>{
console.log("表情包列表", d)
/*
表情包列表数据格式如下:
[
{
"id":1,
"type":1, //表情类型
"url":"https://qxgame-1257972171.cos.ap-guangzhou.myqcloud.com/gameadmin/emoji/1.png",
"weight":10, //表情权重
"txt ":"太菜了" //表情中文描述
},
]
*/
//发送表情包
xx_sdk.sendEmoji(d[0])
});
//==语音互动==
//2.1语音极简版:为按钮注册录音事件。
//(sdk会自动为按钮注册按下,松开,取消事件,然后自动上传该语音并在房间内广播)
xx_sdk.onRecorder(this.soundButton);
//2.2语音开关设置
//屏蔽语音: 如果不想听其它人说话,可以屏蔽语音
xx_sdk.setSoundStatus(0);
//开启语音
xx_sdk.setSoundStatus(1);
//获取语音开关状态:0 或 1
var status = xx_sdk.getSoundStatus();
//==背景音乐开关==
// (盒子有统一的背景音乐设置开关,子游戏只需根据状态判断是否播放背景音乐即可)
let switch = xx_sdk.getBbmSwitch();//0:关 1:开
// ==弹出认输页面==
xx_sdk.giveUp(function(res){
if(res == 1){
//确认
console.log("=自己认输了,调用游戏停止逻辑=")
}else{
//取消
}
})
//==道具接口==
//获取道具(根据开心兔后台配置的道具ID)
let prop = xx_sdk.getPropById(xxx);
//道具格式如下:
// {
// description: "黄金兔工炸药道具",
// icon: "https://cdn.kxt.90wqiji.com/gameadmin/201901281526245c4eaea012d9e.png",
// index: 76494184,
// name: "黄金兔工炸药道具",
// param: {}, //自定义参数
// prop_count: 1, //剩余数量
// type: 102
// }
//使用道具
xx_sdk.usePropById({
prop_index: 0, //道具编号
prop_count: 1, //使用数量
success(res){
if(res.code){
console.log("道具使用成功")
}else{
console.log("道具使用失败")
}
}
});
//==金币接口==
//获取金币
let gold = xx_sdk.getGold();
//使用金币
xx_sdk.useGold({
gold: 100, //使用金萝卜数量
success(res){
if(res.code){
console.log("金萝卜使用成功")
}else{
console.log("金萝卜使用失败")
}
}
});
3.游戏正常结束:
//==弹出结算页面==
var obj = [
{
uid: "wx_robot_2", //用户id
score: 2 //比分
},
{
uid: "wx_robot2_", //用户id
score: 1 //比分
},
]
ab_sdk.showResult({result: obj});
游戏配置接口(没有需求则无需对接)
// 对接游戏配置,可以动态控制游戏内的一些参数和数据。
var d1 = xx_sdk.getConfig1();
if(d1.showshare){
//.显示分享按钮
}else{
//.隐藏分享按钮
}
//游戏配置参数说明:
var d1 = {
"online": 0,//是否上线
"showshare": 0,//是否显示分享按钮
"bannerAd": 0,//banner广告
"videoAd": 0,//视频广告开关
"fs": 0,//看广告加10步
"sns": 0,//社交按钮
"kf": 0,//客服按钮
"gzh": 0,//公众号按钮
"hz2_d": {//跳游戏对应的参数
"appId": "wxde2c29b8d9349652",
"imageUrl": "https:\/\/res.g.llewan.com\/common\/256\/qieshuiguoicon.png",
"path": "pages\/index\/index?channel=21&goAppid=wxf45b17ebcaef8085&goPath=QUESTIONsidEQUAL49",
"extraData": "",
"envVersion": "release"
},//跳盒子对应的参数
"hz3_d": {
"appId": "wxde2c29b8d9349652",
"imageUrl": "https:\/\/res.g.llewan.com\/common\/youxihezi.png",
"path": "pages\/index\/index?channel=21",
"extraData": "",
"envVersion": "release"
}
}
广告接口(没有需求则无需对接)
1.Banner广告
//var bannerAd = xx_sdk.createBannerAd({
// style:{
// left: 0,
// top: 0,
// width: 100,
// height: 200
// }
//});
//.极简版(默认底部Banner)
var bannerAd = xx_sdk.createBannerAd({});
bannerAd.show()
2.Video广告
//.创建广告
var videoAd = xx_sdk.createRewardedVideoAd();
//.显示广告
videoAd.load().then(() => videoAd.show());