前言:该游戏项目主要是基于前端引擎Cocos Creator开发,涉及后端联网的部分,则通过接入Matchvs SDK完成快速开发工作。

准备工作:相关引擎工具引擎下载及指南

Matchvs JavaScript SDK 下载地址

Matchvs JavaScript 的Cocos Creator 插件使用手册

Cocos Creator 下载地址

《组队小鸡射击》玩法简介:
双方通过控制各自小鸡,通过不断点击屏幕进行空中飞行射击,被击中者将消耗以爱心为单位的生命值,游戏支持四人同时实时对战。

游戏实现部分可拆分为三个步骤来实现:

  1. 用户登录

  2. 随机匹配和创建房间

  3. 同屏游戏

用户登录

​ 使用Cocos Creator(以下简称CC)创建游戏登录场景

​ 使用CC 拖动控件, 还原设计稿 , 依托CC的良好的工作流,使得这部分的工作可以由游戏策划或者UI设计者来完成,程序开发者只需要在场景中挂载相应的游戏逻辑脚本. 举个例子,在登录按钮挂在一个uiLogin.js的脚本完成用户登录功能.

uilogin.fire

  1. 新建js脚本文件

  2. 选中场景任一控件

  3. 添加组件,选中刚新建的脚本,

  4. 在脚本的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);}
},复制代码

通过监听joinRoomResponsejoinRoomNotify匹配结果

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的微信小游戏一键发布功能上线微信即可。

多人对战小游戏快速开发实例分享(附源码)相关推荐

  1. Cocos Creator多人对战联网游戏快速开发实例(附源码)

    前言:游戏主要是基于前端引擎Cocos Creator开发,涉及后端联网的部分,使用了游戏服务器引擎Matchvs开发完成. 准备工作:相关引擎工具引擎下载及指南 Matchvs JavaScript ...

  2. mac下dashboard小控件开发实例(附源码)

    1.背景          用mac的用户都应该知道,mac有一个很好的功能,就是dashboard小控件的功能,按下F12键就可以自由切换.博主最近在背GRE单词,就尝试这开发了一个背单词的dash ...

  3. C++小游戏笔记——射击小行星(附源码)

    C++小游戏笔记--射击小行星(附源码) 游戏展示图 一.飞船 1.飞船的绘制 2.飞船的角度 二.小行星 1.小行星的绘制 2."凹凸不平"效果的形成 3.小行星的分裂 三.子弹 ...

  4. Python小游戏——坦克飞机大战(附源码)

    一.学习目标: 1.掌握用Python写自己的小游戏. 2.掌握面向对象编程语言的特点. 3.掌握Python基础 二.学习内容: 1.Python文件操作. 2.Python 类的定义与使用 3.P ...

  5. 《游戏学习》教你上手一个简单的java小游戏《打纸飞机》附源码

    源码下载地址: https://download.csdn.net/download/weixin_40986713/20701376 项目结构目录 部分代码展示 import java.awt.Fo ...

  6. 基于cocoCreator版本2.4.5整理一款2D小游戏快速开发的游戏框架

    前言:基于cocoCreator版本2.4.5整理一款2D小游戏快速开发的游戏框架. 一.cocosCreator的UI框架. 中心思想, 将所有的UI窗体分为3类管理(1级窗体, 2级窗体, 3级窗 ...

  7. 微信小游戏《飞机打方块》源码分享

    微信小游戏<飞机打方块>源码分享 游戏使用CocosCreator v2.4.2开发 源码:https://gitee.com/propertygame/cocos-creator3.x- ...

  8. cocos creator 2.4.5消除小游戏新玩法消星星源码H5+安卓+IOS三端源码

    cocos creator 2.4.5消除小游戏新玩法消星星源码H5+安卓+IOS三端源码,开发脚本为typeScript方便扩展和阅读,支持cocos creator2.X版本,完整的源码可直接运营 ...

  9. FC小游戏合集网页版HTML源码

    FC小游戏合集网页版HTML源码,上传到服务器即可访问,包含游戏文件在里面,操作键网页上有列出. 源码下载:FC小游戏合集网页版HTML源码-小程序文档类资源-CSDN下载

最新文章

  1. angular6 mysql_angular6之路由
  2. java xftp_IDEA使用Xshell利用Xftp部署javaweb项目
  3. 实战:向GitHub提交代码时触发Jenkins自动构建
  4. 诊断案例:从实例挂起到归档失败和内存管理的蝴蝶效应
  5. JS中的事件冒泡——总结
  6. session实现验证码功能
  7. java list 取前3个_用java 截取字符串,每三个一组
  8. 统计0-n数字中出现k的次数
  9. js 确定主窗体是否存在
  10. .NET应用架构设计—表模块模式与事务脚本模式的代码编写
  11. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_6_Stream流中的常用方法_count...
  12. 浪潮之巅阅读笔记(第四版)_(第一章 帝国的余晖)
  13. mate7 android升级包下载,华为mate7 刷机包
  14. servlet工作原理之tomcat篇
  15. iWebOffice一些相关
  16. YUI:globle object
  17. 微信公众号如何开通支付功能?
  18. android 可逆加密,AndroidMD5加密算法(可逆)
  19. 视频教程-VBScript脚本语言编程与自动化运维操作学习篇-其他
  20. 决定局域网特性的三要素

热门文章

  1. 多数据源(Springboot)
  2. catia孔深度符号标注_CATIA制图及工程图含图框详细教程(精编).doc
  3. 表面肌电sEMG特征提取的Matlab程序
  4. 火狐浏览器--由于不能验证所收到的数据是否可信
  5. C#给pdf增加水印,以及Dyanmics CRM本地化部署增加水印
  6. docx文档转pdf文件
  7. usmssosetup 单点登录被禁用_SSO单点登录三种情况的实现方式详解
  8. 怎么办美术馆线上画展?想办传统画展与科技相结合的?
  9. 2、用Kettle生成日期维度数据(一)使用kettle生成2019年日期文件保存到hive表中
  10. 使用 C# 开发 Kubernetes 组件,获取集群资源信息