微信号:CocosEngine

介绍:Cocos引擎官方账号,第一时间为您送上引擎动态、精品教程、达人专访等干货,还会定期举办有奖活动喔!

Part I:「幼麟麻将」全套源码讲解

2018-02-28 23:55 C姐

据爆料,17 年水面下的地方棋牌游戏市场规模远超台面上正统的移动游戏总流水十倍。这么大的市场推动,也难怪有众多棋牌外包公司应运而生,接单接到手软,其火热程度相信大家去年都曾近距离接触过


而成都幼麟科技有限公司就是这里面实力强悍的佼佼者,他们基于 Cocos Creator 开发了质量优秀、扩展性强的「幼麟麻将」,并于去年六月份将全套源码成功上架 Cocos Store,至今仍稳居商店下载率 Top One!


今天C姐专门整理了三期讲解棋牌开发的直播视频,分别是「幼麟麻将」全套源码框架介绍、棋牌服务端和网络通讯知识和伪 3D 渲染布局,帮助大家温故而知新。


全套源码框架直播视频  




 Creator 棋牌游戏制作优势  


- 一次开发,多端发布,还可以通过 AnySDK 来轻松接入多个渠道

- 牌桌布局一目了然,适应各种复杂需求

- 轻松扩展现有 UI,实现各种活动同步




 幼麟麻将整体架构  


所有场景中的主逻辑都挂在 Canvas 节点上,打开每个场景可以从主逻辑脚本开始阅读


-  start 场景:AppStart 全局模块初始化,闪屏展示,以下所有模块都存⼊ cc.vv 命名空间。初始化所有模块后,进⼊ loading 场景


-  loading 场景:LoadingLogic 资源加载,进度条展示,加载完成后进⼊ login 场景


-  login 场景:尝试从本地存储读取帐号和 token 信息,不存在则需要⽤户点击登录按钮(游客或微信),如果是新⽤户则进⼊创建⻆⾊场景 createrole,否则进⼊⼤厅场景 hall


-  createrole 场景:创建新⻆⾊,指定名字,性别,头像


-  hall 场景:Hall ⼤厅菜单,包括以下⼦界⾯模块 

   CreateRoom 创建房间 

   JoinRoom 输⼊房号加⼊房间 

   History 战绩列表 

   Settings 设置


-  mjgame 场景:牌桌场景,包括游戏主逻辑、麻将贴图资源管理、麻将布局、碰胡提示、玩家头像、牌局信息等⼦模块


-  跨场景组件 

   WaitingConnection ⽹络链接等待提示 

   Alert 消息提示对话框 

   UserInfoShow ⽤户⻆⾊信息展示




 麻将摆放和展示 


-  通过 `Canvas/game` 下的 left, right, bottom, myself 四个节点作为四家麻将牌的容器 


-  ⼿牌、弃牌、胡牌、出牌都在场景⾥全部摆好,再通过获取相应控制节点的 children 来获取列表 

(这些牌堆在更新接受服务器的消息,其中包含牌堆的全部数据,每次更新是更新整个牌堆 )


-  碰杠牌采⽤随⽤随⽣成的做法,在 penggangs 节点下实例化 prefab,再初始化贴图和牌堆数量




 交互逻辑 


-  选择定缺花⾊ `DingQue.onQueYiMenClicked()` 

-  点击⼿牌 `MJGame.onMJClicked()` 

    换三张选牌 

    双击出牌 

-  拖拽⼿牌 `MJGame.initDragStuffs()` 

    拖拽⼿牌出牌 

-  (吃)碰杠胡⾏动选择 `MJGame.showAction()`




 麻将资源管理 


-  拖拽绑定的资源包括 

    东南⻄北四家的麻将牌图集各⼀张 

    碰牌 prefab(左右和上下两种) 

    麻将牌背图集 

    除⾃家外其他三家⼿牌贴图(牌背)


-  麻将贴图资源和 id 

    M_bamboo_1 表示⺓鸡(⼀条)

    前缀表示座位 

    M ⾃家 

    R 上家 

    B 对家 

    L 下家


-  中间表示花⾊ 

    dot 筒 

    bamboo 条 

    character 万


- 后缀表示点数,从 1 到 9 

-  麻将 id 

    0~8 筒 

    9~17 条 

    8~26 万


-  加载贴图时需要指定麻将 id 和座位 `MahjongMgr.getSpriteFrameByMJID(pre, id)`




 通信模块和业务消息 


-  Http 请求

   ⽤户模块 AnySDK 微信登录 

   游客登录 

   创建新⽤户 

   创建房间 

   加⼊房间 

   获取历史战绩 

   获取房间结算信息 

   获取服务器信息 

   获取公告信息 

   抓取⽤户信息(头像、名称、分数等)


-  Socket.io 建⽴ 

   socket 连接 `Net.connect()` 

   定时发送⼼跳包 

   监听服务端消息 `GameNetMgr.initHandlers()` 

   送客户端消息 `Net.send()` 

   业务消息列表

 
COCOS 更多文章 国内顶级游戏上市公司开启 Cocos 专业人才招聘! 基础 | 微信「跳一跳」带火小游戏,开发者如何快速上手? Cocos 祝各位同学 2018 继续精彩! 春节自救完整指南 Cocos 2017 十大高亮推文,回顾依然精彩!
猜您喜欢 2016年七大顶级JavaScript框架 新课速递 | 微信小程序入门与实战 常用组件 API 开发技巧 项目 比勤奋更重要的,是深度思考的能力 QQ空间掉帧率优化实战 PaPa微信自动抢红包纯净版