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

2023-05-16

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


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

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


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

                                                

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


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


                              



         

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

                                                                                      


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

房卡麻将分析系列之"断线重连" 的相关文章

随机推荐

  • 嵌入式Linux系统串口通信协议设计

    1 设计基础 这里指的协议是应用层协议 xff0c 针对应用协议的设计 xff0c 需要注意的有几个基本点 xff1a 可识别 xff0c 兼容性 xff0c 访问控制 xff0c 可追溯 xff0c 数据完整性校验 首先是可识别 xff0
  • 什么是导航?导航具有什么样的作用?

    导航 xff08 Navigation xff09 是引导载体从起始点安全 可靠地引导到目的地的过程 xff0c 导航的基本作用就是回答我在哪里 xff1f 通常用载体在空间的即时位置 速度 姿态和航向等参数来描述导航过程 xff0c 这些
  • 一个失败的程序员

    一个失败的程序员 第一次写博客 xff0c 看了别人的很久 xff0c 也想了很久 xff0c 觉得无论文笔有多不好 xff0c 分享的内容有多糟糕 xff0c 都应该有这个勇气迈出第一步 xff0c 记录生活 抒写回忆 xff0c 等到回
  • 学习FreeRTOS前的准备工作

    转自 http bbs armfly com read php tid 61 1552 了解FreeRTOS之前 xff0c 一定要搞清楚FreeRTOS xff0c SafeRTOS和OpenRTOS之间的关系 1 先说FreeRTOS和
  • Linux网络编程(一)

    Linux网络编程博文均选自 unix网络编程 Richard Stevens xff0c 仅限于学习与查漏补缺只用 xff0c 原址 xff1a http blog csdn net hongchangfirst article deta
  • vscode配合gitee同步云设置

    更换开发设备后 xff0c 新安装的vscode软件 xff0c 是没有原先的配置的 xff0c 诸如快捷键 xff0c 快捷代码段生成 安装的各个插件 xff0c 插件的配置等都木大了 xff0c 开发起来会很别扭 xff0c 网上最多的
  • 升压减压以及充电电路设计

    供电电路在整个硬件系统中都是极其重要的 xff0c 只有能产生稳定电压与电流的供电电路才能保证整个硬件系统的正常工作 在本系统中 xff0c STM32F103C8T6需要的电压为3 3V xff0c 同时还有其他的模块需要5V的电压 xf
  • Java枚举详解及常见用法

    1 枚举的使用场景 枚举是一个被命名的整型常数的集合 xff0c 用于声明一组带标识符的常数 枚举在曰常生活中很常见 xff0c 例如一个人的性别只能是 男 或者 女 xff0c 一周的星期只能是 7 天中的一个等 类似这种当一个变量有几种
  • ros编译时与opencv发生冲突的解决办法 opencv_imgcodecs3.so.3.3.1: undefined reference to `TIFFReadDirectory@LIBTIFF

    在编译ros项目的时候 xff0c 遇到下面的错误 xff1a 38 Building CXX object cube slam detect 3d cuboid CMakeFiles detect 3d cuboid dir src ma
  • ROS的一些常用的命令

    下面是ros下面的一些常用操作 xff0c 先做个总结 xff0c 方便后续使用 1 只编译工作空间下面的一个包 catkin make DCATKIN WHITELIST PACKAGES span class token operato
  • realsense相机两种获取相机内外参的方式

    realsense相机出厂的时候一般都标定好了 xff0c 直接读取他们的内参即可 终端输入 xff1a rs sensor control 然后按照提示操作即可 方法 xff1a https blog csdn net mystyle a
  • 【Python开发利器-TKinterDesigner 】 :第一讲:TkinterDesigner的基本功能介绍

    Python开发利器 TKinterDesigner xff1a 第一讲 xff1a TkinterDesigner的基本功能介绍
  • 基于Spine动画的AVATAR换装系统优化

    大家好 xff0c 我是红孩儿 xff0c 目前在玩吧技术专家组负责技术研发工作 xff0c 好久不见 xff0c 作为一名引擎开发者 xff0c 这次我给大家分享一下基于Spine动画的AVATAR换装优化 xff0c 希望能够对有类似需
  • TKinterDesigner v1.6.4 前瞻- 即将开启Python移动开发时代

    TKinterDesigner v1 6 4 前瞻 即将开启Python移动开发时代 我想 xff1a 这可能是一个新时代的开启吧
  • TKinterDesigner从入门到精通视频教程

    想使用TKinter开发桌面应用 xff1f 想使用TKinter开发移动应用 xff1f TKinterDesigner来帮助你吧 xff01 欢迎使用TKinterDesigner xff01 以下是 TKinterDesigner从入
  • 房卡麻将分析系列 "牌局回放" 之 播放处理

    持续放出房卡麻将设计与研发讲解 敬请关注微信共众号 xff1a 红孩儿的游戏开发之路 房卡麻将分析系列 34 牌局回放 34 之 播放处理 昨天红孩儿给大伙讲了讲 牌局回放 的数据记录处理 xff0c 有了数据的存储 xff0c 下面就是数
  • AutoSAR 标准--基础安全特性

    CSM 密码服务管理器 Crypto Service Manager xff1a 访问加密服务 配置用于执行服务的加密服务和算 同步或异步执行的配置 安全计数器的配置 对加密密钥的操作配置 配置证书操作 CRYIF 密码算法接口 Inter
  • 房卡麻将分析系列之"发牌器"算法设计

    房卡麻将分析系列之 34 发牌器 34 算法设计 大家好 xff0c 经过一段时间的努力 xff0c 在填平了大部分源码框架中的坑后 xff0c 我们的 大赢家 红中麻将总算完成了1 0版本 xff0c 虽然仍然有诸多问题 xff0c 但总
  • 房卡麻将分析系列之"架构选型"

    房卡 麻将研发技巧 xff0c 尽在 红孩儿的游戏开发之路 xff0c 欢迎关注公众号 xff01 房卡麻将分析系列之 34 架构选型 34 这段时间 xff0c 团队的棋牌订制咨询量激增 xff0c 每天都有人问如何进行订制合作 xff0
  • 房卡麻将分析系列之"断线重连"

    房卡 麻将研发技巧 xff0c 尽在 红孩儿的游戏开发之路 xff0c 欢迎关注公众号 xff01 房卡麻将分析系列之 34 断线重连 34 大家好 xff0c 我是红孩儿 xff0c 房卡 麻将分析系列继续进行中 在进行游戏的过程中 xf