房卡麻将分析系列之断线重连
”房卡“麻将研发技巧,尽在”红孩儿的游戏开发之路“,欢迎关注公众号!
房卡麻将分析系列之"断线重连"
大家好,我是红孩儿,“房卡”麻将分析系列继续进行中。
在进行游戏的过程中,人们往往会遇到“断线”情况,比如坐公车,地铁下班路上玩一局,下车转站时往往先关机,过一会儿再上线继续完,如果没有自动“断线重连”,则对于牌局的体验感影响会非常大,在“房卡”麻将中加入“断线重连”也成为了必要的技术指标。那么怎么做到呢?
首先,游戏服务器上要保存当前进行中的游戏的所有玩家信息。包括玩家名称,ID,头像地址,积分等等。除非解散房间,否则不因为玩家断线而清除房间里的玩家信息,只做玩家的在线状态切换。
然后,在客户端上线时,发送玩家登录请求,服务器在收到当前玩家的请求后,验证通过取得ID,并通过ID查询玩家是否在游戏房间中,如果在,则由对应房间向玩家发送房间信息,所有用户信息和手牌,打出的牌,起牌,操作提示等信息,并将掉线玩家的状态设为上线。
客户端在收到房间信息后进入房间,并显示相应其它玩家信息和重现牌局。总之,需要显示什么,服务器需要一股脑的都发回来并在客户端获取并设置显示。当然,这也并不是说一个消息就能发送完的,一般客户端会收到(1)登录成功(2)房间信息(3)游戏状态信息三个消息。
登录成功消息就不说了,收到登录成功后,客户端会收到更新用户信息消息,如果用户的房间ID有效,则说明在游戏中,直接切换到游戏房间界面,下面是房间信息和游戏状态信息的结构:
//私人场房间信息
struct CMD_GF_Private_Room_Info
{ byte bPlayCoutIdex; //玩家局数0 1, 8 或者16局byte bGameTypeIdex; //游戏类型dword bGameRuleIdex; //游戏规则byte bStartGame; //游戏是否开始dword dwPlayCout; //游戏局数dword dwRoomNum; //房号dword dwCreateUserID; //房主IDdword dwPlayTotal; //总局数byte cbRoomType; //公开房还是包房std::vector<int> kWinLoseScore; //分数
};
//游戏状态
struct CMD_S_StatusPlay
{//游戏变量LONGLONG lCellScore; //单元积分WORD wBankerUser; //庄家用户WORD wCurrentUser; //当前用户//状态变量BYTE cbActionCard; //动作BYTE cbActionMask; //动作掩码BYTE cbLeftCardCount; //剩余数目bool bTrustee[GAME_PLAYER]; //是否托管WORD wWinOrder[GAME_PLAYER]; //胡牌排名//出牌信息WORD wOutCardUser; //出牌用户BYTE cbOutCardData; //出牌BYTE cbDiscardCount[GAME_PLAYER]; //丢弃数目BYTE cbDiscardCard[GAME_PLAYER][60]; //丢弃记录//数据BYTE cbCardCount[GAME_PLAYER]; //牌的数目BYTE cbCardData[MAX_COUNT]; //列表BYTE cbSendCardData; //发送//组合BYTE cbWeaveCount[GAME_PLAYER]; //组合数目XZDD_CMD_WeaveItem WeaveItemArray[GAME_PLAYER][MAX_WEAVE];
};
客户端在接收到这两个消息后,会按照消息数据进行房间信息,玩家信息,牌面信息的数据设置。这样牌局就被恢复了。
”房卡“麻将研发技巧,尽在”红孩儿的游戏开发之路“,欢迎关注公众号!
房卡麻将分析系列之断线重连相关推荐
- 房卡麻将分析系列 牌局回放 之 数据设计
敬请关注微信共众号:红孩儿的游戏开发之路 房卡麻将分析系列 "牌局回放" 之 数据设计 最近几个月,"房卡"棋牌游戏成为了资本追逐的热点,基于微信的广大用户和社 ...
- 房卡麻将分析系列之千里传音
"房卡"麻将研发技巧,尽在"红孩儿的游戏开发之路",欢迎关注公众号! 房卡麻将分析系列之"千里传音" 在房卡棋牌游戏中,因为要频繁的看牌,出 ...
- 房卡麻将分析系列 牌局回放 之 播放处理
持续放出房卡麻将设计与研发讲解.敬请关注微信共众号:红孩儿的游戏开发之路 房卡麻将分析系列 "牌局回放" 之 播放处理 昨天红孩儿给大伙讲了讲"牌局回放"的数据 ...
- 房卡麻将分析系列之架构选型
"房卡"麻将研发技巧,尽在"红孩儿的游戏开发之路",欢迎关注公众号! 房卡麻将分析系列之"架构选型" 这段时间,团队的棋牌订制咨询量激增,每 ...
- 房卡棋牌分析系列之微信登录
"房卡"麻将研发技巧,尽在"红孩儿的游戏开发之路",欢迎关注公众号! 房卡棋牌分析系列之"微信登录" 房卡棋牌之所以火热,很大程度上取决于当 ...
- 房卡麻将分析之一键入局
地方棋牌,VR,AR技术,请关注公众号:"红孩儿的游戏开发之路". 房卡麻将分析之"一键入局" 房卡麻将通过微信邀请好友加入房间进行游戏,大大方便了玩家进行麻将 ...
- 房卡麻将分析之防作弊处理
房卡麻将分析之"防作弊处理" 棋牌游戏最重要的一个特点就是人与人对局,因为玩家各自的不可见,就存在着一些作弊的可能性和漏洞.对于手机房卡麻将游戏,大家最讨厌的问题就是作弊.如何防止 ...
- 房卡麻将分析之“缺人玩法”
一般玩麻将都是四个人,遇到 "三缺一"怎么办?大多数情况下,玩家只好等待或叫人,这无疑增加了玩家的等待时间,同时也减缓了房卡的消耗速度.其实四个人并不是玩麻将的硬性条件,如果能在游 ...
- 房卡麻将分析之“代开房间”
什么是代开房间? 代开房间,就是可以创建一个新的房间,让其它玩家加入. 为什么要做代开房间? (1)可以帮助没有房卡的朋友开房,提升未买卡玩家玩游戏的积级性. (2)代理开房,可以更好的对玩家游戏 ...
最新文章
- 最新《医学图像深度语义分割》综述论文
- lin通信ldf文件解析_详细步骤讲解如何在CANoe中创建一个LIN通讯工程(多图+详解)...
- 【鸿蒙 HarmonyOS】Ability 简介 ( 简介 | 创建应用 | Page Ability 生命周期 )
- iOS: bundle name, bundle display name, bundle identifier...
- rocksdb原理_教你玩转MyRocks/RocksDB—STATISTICS与后台线程篇
- integer 最大值_JAVA源码之Integer
- GdiPlus[40]: 不该忽略的一些基础结构
- nginx 超时设置_Nginx最详细的反向代理配置步骤,拿去不谢
- 金特会谈:有骨气的人,才会被人尊重
- POJ 2923 Relocation ★(状态压缩+01背包)
- 详细图解MySQL(win7x64 5.7.16版本)下载、安装、配置与使用
- 魔兽8.0最新服务器人口普查,魔兽世界8.0最新人口普查: DH稳坐第一职业宝座 同盟种族人数惨淡...
- java生成json格式数据 和 java遍历json格式数据
- Google新人的成长思考
- 微信小程序2048小游戏(下)
- 上海市计算机应用基础答案,计算机应用基础10统考(附答案)
- verdi/debussy的快捷键 以及基本操作
- 架构必备:Rate limiting 的作用和常见方式
- 有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。求笼中各有几只鸡和兔?
- Linux - 轻量级虚拟机工具QEMU