”房卡“麻将研发技巧,尽在”红孩儿的游戏开发之路“,欢迎关注公众号!

房卡麻将分析系列之"断线重连"

大家好,我是红孩儿,“房卡”麻将分析系列继续进行中。

在进行游戏的过程中,人们往往会遇到“断线”情况,比如坐公车,地铁下班路上玩一局,下车转站时往往先关机,过一会儿再上线继续完,如果没有自动“断线重连”,则对于牌局的体验感影响会非常大,在“房卡”麻将中加入“断线重连”也成为了必要的技术指标。那么怎么做到呢?

首先,游戏服务器上要保存当前进行中的游戏的所有玩家信息。包括玩家名称,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];
};

客户端在接收到这两个消息后,会按照消息数据进行房间信息,玩家信息,牌面信息的数据设置。这样牌局就被恢复了。

”房卡“麻将研发技巧,尽在”红孩儿的游戏开发之路“,欢迎关注公众号!

房卡麻将分析系列之断线重连相关推荐

  1. 房卡麻将分析系列 牌局回放 之 数据设计

    敬请关注微信共众号:红孩儿的游戏开发之路 房卡麻将分析系列 "牌局回放" 之 数据设计 最近几个月,"房卡"棋牌游戏成为了资本追逐的热点,基于微信的广大用户和社 ...

  2. 房卡麻将分析系列之千里传音

    "房卡"麻将研发技巧,尽在"红孩儿的游戏开发之路",欢迎关注公众号! 房卡麻将分析系列之"千里传音" 在房卡棋牌游戏中,因为要频繁的看牌,出 ...

  3. 房卡麻将分析系列 牌局回放 之 播放处理

    持续放出房卡麻将设计与研发讲解.敬请关注微信共众号:红孩儿的游戏开发之路 房卡麻将分析系列 "牌局回放" 之 播放处理 昨天红孩儿给大伙讲了讲"牌局回放"的数据 ...

  4. 房卡麻将分析系列之架构选型

    "房卡"麻将研发技巧,尽在"红孩儿的游戏开发之路",欢迎关注公众号! 房卡麻将分析系列之"架构选型" 这段时间,团队的棋牌订制咨询量激增,每 ...

  5. 房卡棋牌分析系列之微信登录

    "房卡"麻将研发技巧,尽在"红孩儿的游戏开发之路",欢迎关注公众号! 房卡棋牌分析系列之"微信登录" 房卡棋牌之所以火热,很大程度上取决于当 ...

  6. 房卡麻将分析之一键入局

    地方棋牌,VR,AR技术,请关注公众号:"红孩儿的游戏开发之路". 房卡麻将分析之"一键入局" 房卡麻将通过微信邀请好友加入房间进行游戏,大大方便了玩家进行麻将 ...

  7. 房卡麻将分析之防作弊处理

    房卡麻将分析之"防作弊处理" 棋牌游戏最重要的一个特点就是人与人对局,因为玩家各自的不可见,就存在着一些作弊的可能性和漏洞.对于手机房卡麻将游戏,大家最讨厌的问题就是作弊.如何防止 ...

  8. 房卡麻将分析之“缺人玩法”

    一般玩麻将都是四个人,遇到 "三缺一"怎么办?大多数情况下,玩家只好等待或叫人,这无疑增加了玩家的等待时间,同时也减缓了房卡的消耗速度.其实四个人并不是玩麻将的硬性条件,如果能在游 ...

  9. 房卡麻将分析之“代开房间”

    什么是代开房间?   代开房间,就是可以创建一个新的房间,让其它玩家加入. 为什么要做代开房间? (1)可以帮助没有房卡的朋友开房,提升未买卡玩家玩游戏的积级性. (2)代理开房,可以更好的对玩家游戏 ...

最新文章

  1. 最新《医学图像深度语义分割》综述论文
  2. lin通信ldf文件解析_详细步骤讲解如何在CANoe中创建一个LIN通讯工程(多图+详解)...
  3. 【鸿蒙 HarmonyOS】Ability 简介 ( 简介 | 创建应用 | Page Ability 生命周期 )
  4. iOS: bundle name, bundle display name, bundle identifier...
  5. rocksdb原理_教你玩转MyRocks/RocksDB—STATISTICS与后台线程篇
  6. integer 最大值_JAVA源码之Integer
  7. GdiPlus[40]: 不该忽略的一些基础结构
  8. nginx 超时设置_Nginx最详细的反向代理配置步骤,拿去不谢
  9. 金特会谈:有骨气的人,才会被人尊重
  10. POJ 2923 Relocation ★(状态压缩+01背包)
  11. 详细图解MySQL(win7x64 5.7.16版本)下载、安装、配置与使用
  12. 魔兽8.0最新服务器人口普查,魔兽世界8.0最新人口普查: DH稳坐第一职业宝座 同盟种族人数惨淡...
  13. java生成json格式数据 和 java遍历json格式数据
  14. Google新人的成长思考
  15. 微信小程序2048小游戏(下)
  16. 上海市计算机应用基础答案,计算机应用基础10统考(附答案)
  17. verdi/debussy的快捷键 以及基本操作
  18. 架构必备:Rate limiting 的作用和常见方式
  19. 有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。求笼中各有几只鸡和兔?
  20. Linux - 轻量级虚拟机工具QEMU

热门文章

  1. 关于抽烟、戒烟、或者说是收放自如
  2. 2017滴滴校招 末尾0的个数(数学知识)
  3. 邓俊辉 数据结构 词典
  4. Farmer John 木瓜地 C++
  5. 图文讲解 WiFi 驱动移植过程,很肝~
  6. 2018年下半年考试感想
  7. linux6 下dns配置,RHEL6中DNS配置
  8. COG Practise
  9. Windows10+Ctex+winedt10.3
  10. NTL的安装、连接与使用(基于CentOS、Clion)