分享基于白鹭Egret联合Matchvs开发的足球游戏(附Demo源码)

本文介绍了一款使用Matchvs实时联网SDK和白鹭Egret开发的足球游戏Demo,详细讲解了从Demo配置、初始化SDK、建立连接、加入房间、停止加入、游戏开始通知、房间属性修改到断线重连的整个过程,适合游戏开发者学习多人在线游戏的开发。
摘要由CSDN通过智能技术生成

Demo简介

本游戏使用Matchvs的实时联网SDK和白鹭Egret开发,并提供了简洁的Demo来展示多人实时联网游戏的开发过程和效果,用于演示多人匹配、数据传输、帧同步、创建房间、获取房间列表、消息订阅、断线重连、修改房间属性等功能。

目录

┌─── matchvs 支持 Egret SDK库文件
├─── matchvs_wx 支持微信小游戏的SDK库文件
├─── MatchvsDemo_Egret Demo 工程
└─── README.md

Demo下载和体验

注意:下载Demo源码后,需要使用Egret的Wing打开工程(Wing建议使用4.1.0以上的版本,Egret引擎建议使用5.1.5以上版本)。满三人才可以开始游戏,使用三个不同的浏览器运行。Demo支持三人同时游戏,匹配成功后,玩家通过按住按钮左右滑动来推动小鸭子向左向右移动抢足球。

Demo配置

Demo运行之前需要去 Matchvs 官网 配置游戏相关信息,以获取Demo运行所需要的GameID、AppKey、SecretID。如图:

img

img

获取到相关游戏信息之后,Demo 代码里在 LoginView.ts 文件下配置游戏信息,如下图:

img

如果不了解Login这个函数的参数请到官网查看相关的 API接口说明 文档。

注意: 如果运行不成功请查看 egretProperties.json 文件是否配置了加了如下配置:

{ 
    "name": "matchvs",
    "path": "../matchvs"
}

注意:如果是要发布成微信小游戏应该吧 path 下面的 ../matchvs 改为 ../matchvs_wx, 如下:

{ 
    "name": "matchvs",
    "path": "../matchvs_wx"
}

把游戏信息配置好就可以运行试玩,Demo运行界面如下,可以点击随机匹配开始:

img

初始化SDK

在引入SDK之后,在初始化前需要先调用 MatchvsEngine()获取一个Matchvs引擎对象实例:

public static engine:MatchvsEngine = new MatchvsEngine();

另外我们需要定义一个 MatchvsResponse 对象,该对象定义一些回调方法,用于获取游戏中玩家加入、离开房间、数据收发的信息,这些方法在特定的时刻会被SDK调用。

public static response:MatchvsResponse = new MatchvsResponse();

为方便使用,我们把engine,reponse 以及以下其他全局变量放到单独的文件 GameData.ts 中。文件路径在Egret工程的src目录下面。完成以上步骤后,我们可以调用初始化接口建立相关资源。相关代码在LoginView文件。

private onButtonClick(e: egret.TouchEvent) {
        GameData.response.initResponse = this.initResponse.bind(this);
        GameData.gameID = Number(this._gameidInput.text);
        console.log(" environment="+ this._environment + " gameid="+ GameData.gameID);
        //这里调用初始化
        let result = GameData.engine.init(GameData.response, GameData.CHANNEL, this._environment, GameData.gameID);
        console.log("mvs.init result:" + result);
    }

注意 在整个应用全局,开发者只需要对引擎做一次初始化。

建立连接

接下来,我们就可以从Matchvs获取一个合法的用户ID,通过该ID连接至Matchvs服务端。

获取用户ID:

//LoginView.ts
GameData.response.registerUserResponse = this.registerUserResponse.bind(this);
var result = GameData.engine.registerUser();
if (result !== 0) {
console.log('注册用户失败,错误码:' + result);
} else {
console.log('注册用户成功');
}

private registerUserResponse(userInfo:MsRegistRsp) {
        //注册成功,userInfo包含相关用户信息
}

用户信息需要保存起来,我们使用一个类型为对象的全局变量GameData.userInfo来存储

GameData.userInfo = userInfo;

登录:

//LoginView.ts
GameData.response.loginResponse = this.loginResponse.bind(this);
var result = GameData.engine.login(userInfo.id, userInfo.token,200757, 1,
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值