多人对战小游戏快速开发实例分享(附源码)
前言:该游戏项目主要是基于前端引擎Cocos Creator开发,涉及后端联网的部分,则通过接入Matchvs SDK完成快速开发工作。
准备工作:相关引擎工具引擎下载及指南
Matchvs JavaScript SDK 下载地址
Matchvs JavaScript 的Cocos Creator 插件使用手册
Cocos Creator 下载地址
《组队小鸡射击》玩法简介:
双方通过控制各自小鸡,通过不断点击屏幕进行空中飞行射击,被击中者将消耗以爱心为单位的生命值,游戏支持四人同时实时对战。
游戏实现部分可拆分为三个步骤来实现:
用户登录
随机匹配和创建房间
同屏游戏
用户登录
使用Cocos Creator(以下简称CC)创建游戏登录场景
使用CC 拖动控件, 还原设计稿 , 依托CC的良好的工作流,使得这部分的工作可以由游戏策划或者UI设计者来完成,程序开发者只需要在场景中挂载相应的游戏逻辑脚本. 举个例子,在登录按钮挂在一个uiLogin.js
的脚本完成用户登录功能.
uilogin.fire
新建js脚本文件
选中场景任一控件
添加组件,选中刚新建的脚本,
在脚本的
onLoad
函数中给按钮添加点击监听,触发登录操作
uiLogin.js
-----
onLoad() {this.nodeDict["start"].on("click", this.startGame, this);
},
startGame() {Game.GameManager.matchVsInit();
}复制代码
实现this.startGame
函数. 登录之前需要初始化Matchvs SDK
:
uiLogin.js
uiLogin.js
-----
var uiPanel = require("uiPanel");
cc.Class({extends: uiPanel,properties: {},
onLoad() {this._super();this.nodeDict["start"].on("click", this.startGame, this);},
startGame() {Game.GameManager.matchVsInit();}
});
Game.GameManager.js
-----
matchVsInit: function() {mvs.response.initResponse = this.initResponse.bind(this);mvs.response.errorResponse = this.errorResponse.bind(this);// 用户登录之后的回调mvs.response.loginResponse = this.loginResponse.bind(this);
var result = mvs.engine.init(mvs.response, GLB.channel, GLB.platform, GLB.gameId);if (result !== 0) {console.log('初始化失败,错误码:' + result);}
}复制代码
初始化需要的几个参数在Matchvs官网注册即可得到,注册地址 www.matchvs.com
channel: 'MatchVS',platform: 'alpha',gameId: 201330,gameVersion: 1,appKey: '7c7b185482d8444bb98bc93c7a65daaa',secret: 'f469fb05eee9488bb32adfd85e4ca370',复制代码
注册成功后,登录Matchvs游戏云,返回UserID,登录成功.
gameManager.js
-----
registerUserResponse: function(userInfo) {var deviceId = 'abcdef';var gatewayId = 0;GLB.userInfo = userInfo;
console.log('开始登录,用户Id:' + userInfo.id)
var result = mvs.engine.login(userInfo.id, userInfo.token,GLB.gameId, GLB.gameVersion,GLB.appKey, GLB.secret,deviceId, gatewayId);if (result !== 0) {console.log('登录失败,错误码:' + result);}
},
loginResponse: function(info) {if (info.status !== 200) {console.log('登录失败,异步回调错误码:' + info.status);} else {console.log('登录成功');this.lobbyShow();}
},复制代码
随机匹配和创建房间
使用CC创建大厅场景(uiLobbyPanel.fire)给用户选择匹配方式,创建匹配场景(uiMatching1v1.fire) 给用户反馈比配进度
和登录功能的实现步骤类似:写一个 uiMatching1v1.js
脚本挂在到场景中的控件上.
uiMatching1v1.js
-----
joinRandomRoom: function() {var result = mvs.engine.joinRandomRoom(GLB.MAX_PLAYER_COUNT, '');if (result !== 0) {console.log('进入房间失败,错误码:' + result);}
},复制代码
通过监听joinRoomResponse
和joinRoomNotify
匹配结果
gameManager.js
-----
joinRoomResponse: function(status, roomUserInfoList, roomInfo) {if (status !== 200) {console.log("失败 joinRoomResponse:" + status);return;}var data = {status: status,roomUserInfoList: roomUserInfoList,roomInfo: roomInfo}// 把事件发给关心这个事件的节点脚本clientEvent.dispatch(clientEvent.eventType.joinRoomResponse, data);
},
joinRoomNotify: function(roomUserInfo) {var data = {roomUserInfo: roomUserInfo}clientEvent.dispatch(clientEvent.eventType.joinRoomNotify, data);
},复制代码
同屏游戏 , 实现游戏同步
还是按照上面的套路,新建场景(uiGamePanel.fire),在playerManager.js中,加载了player.js.在player.js中,攻击的动作使用Matchvs 的 sendEventEx
发出,
player.js
-----
hurt: function(murderId) {var msg = {action: GLB.PLAYER_HURT_EVENT,playerId: this.userId,murderId: murderId};Game.GameManager.sendEventEx(msg);
}复制代码
另一方的客户端收到后处理事情;
gameManager.js
-----
// 玩家行为通知--
sendEventNotify: function(info) {if (info.cpProto.indexOf(GLB.PLAYER_HURT_EVENT) >= 0) {if (Game.GameManager.gameState !== GameState.Over) {player = Game.PlayerManager.getPlayerByUserId(cpProto.playerId);if (player) {player.hurtNotify(cpProto.murderId);}// 检查回合结束--var loseCamp = Game.PlayerManager.getLoseCamp();if (loseCamp != null) {Game.GameManager.gameState = GameState.Overif (GLB.isRoomOwner) {this.sendRoundOverMsg(loseCamp);}}}}
}
复制代码
开发完成后, 再通过CC的微信小游戏一键发布功能上线微信即可。
多人对战小游戏快速开发实例分享(附源码)相关推荐
- Cocos Creator多人对战联网游戏快速开发实例(附源码)
前言:游戏主要是基于前端引擎Cocos Creator开发,涉及后端联网的部分,使用了游戏服务器引擎Matchvs开发完成. 准备工作:相关引擎工具引擎下载及指南 Matchvs JavaScript ...
- mac下dashboard小控件开发实例(附源码)
1.背景 用mac的用户都应该知道,mac有一个很好的功能,就是dashboard小控件的功能,按下F12键就可以自由切换.博主最近在背GRE单词,就尝试这开发了一个背单词的dash ...
- C++小游戏笔记——射击小行星(附源码)
C++小游戏笔记--射击小行星(附源码) 游戏展示图 一.飞船 1.飞船的绘制 2.飞船的角度 二.小行星 1.小行星的绘制 2."凹凸不平"效果的形成 3.小行星的分裂 三.子弹 ...
- Python小游戏——坦克飞机大战(附源码)
一.学习目标: 1.掌握用Python写自己的小游戏. 2.掌握面向对象编程语言的特点. 3.掌握Python基础 二.学习内容: 1.Python文件操作. 2.Python 类的定义与使用 3.P ...
- 《游戏学习》教你上手一个简单的java小游戏《打纸飞机》附源码
源码下载地址: https://download.csdn.net/download/weixin_40986713/20701376 项目结构目录 部分代码展示 import java.awt.Fo ...
- 基于cocoCreator版本2.4.5整理一款2D小游戏快速开发的游戏框架
前言:基于cocoCreator版本2.4.5整理一款2D小游戏快速开发的游戏框架. 一.cocosCreator的UI框架. 中心思想, 将所有的UI窗体分为3类管理(1级窗体, 2级窗体, 3级窗 ...
- 微信小游戏《飞机打方块》源码分享
微信小游戏<飞机打方块>源码分享 游戏使用CocosCreator v2.4.2开发 源码:https://gitee.com/propertygame/cocos-creator3.x- ...
- cocos creator 2.4.5消除小游戏新玩法消星星源码H5+安卓+IOS三端源码
cocos creator 2.4.5消除小游戏新玩法消星星源码H5+安卓+IOS三端源码,开发脚本为typeScript方便扩展和阅读,支持cocos creator2.X版本,完整的源码可直接运营 ...
- FC小游戏合集网页版HTML源码
FC小游戏合集网页版HTML源码,上传到服务器即可访问,包含游戏文件在里面,操作键网页上有列出. 源码下载:FC小游戏合集网页版HTML源码-小程序文档类资源-CSDN下载
最新文章
- angular6 mysql_angular6之路由
- java xftp_IDEA使用Xshell利用Xftp部署javaweb项目
- 实战:向GitHub提交代码时触发Jenkins自动构建
- 诊断案例:从实例挂起到归档失败和内存管理的蝴蝶效应
- JS中的事件冒泡——总结
- session实现验证码功能
- java list 取前3个_用java 截取字符串,每三个一组
- 统计0-n数字中出现k的次数
- js 确定主窗体是否存在
- .NET应用架构设计—表模块模式与事务脚本模式的代码编写
- 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_6_Stream流中的常用方法_count...
- 浪潮之巅阅读笔记(第四版)_(第一章 帝国的余晖)
- mate7 android升级包下载,华为mate7 刷机包
- servlet工作原理之tomcat篇
- iWebOffice一些相关
- YUI:globle object
- 微信公众号如何开通支付功能?
- android 可逆加密,AndroidMD5加密算法(可逆)
- 视频教程-VBScript脚本语言编程与自动化运维操作学习篇-其他
- 决定局域网特性的三要素
热门文章
- 多数据源(Springboot)
- catia孔深度符号标注_CATIA制图及工程图含图框详细教程(精编).doc
- 表面肌电sEMG特征提取的Matlab程序
- 火狐浏览器--由于不能验证所收到的数据是否可信
- C#给pdf增加水印,以及Dyanmics CRM本地化部署增加水印
- docx文档转pdf文件
- usmssosetup 单点登录被禁用_SSO单点登录三种情况的实现方式详解
- 怎么办美术馆线上画展?想办传统画展与科技相结合的?
- 2、用Kettle生成日期维度数据(一)使用kettle生成2019年日期文件保存到hive表中
- 使用 C# 开发 Kubernetes 组件,获取集群资源信息