房卡麻将分析系列 "牌局回放" 之 播放处理
Posted 火云洞红孩儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了房卡麻将分析系列 "牌局回放" 之 播放处理相关的知识,希望对你有一定的参考价值。
持续放出房卡麻将设计与研发讲解。敬请关注微信共众号:红孩儿的游戏开发之路
房卡麻将分析系列 "牌局回放" 之 播放处理
昨天红孩儿给大伙讲了讲”牌局回放“的数据记录处理,有了数据的存储,下面就是数据的显示了。
实话讲,好久没用过 SQL Server 来做数据库了, 网狐的服务器是基于WIN,IOCP, SQL Server 这套路子。配置好后,可以在QPTreasureDB数据库中看到三个牌局相关的表。
其中dbo.PrivateGameRecord是存储当前游戏的房间及玩家,最终胜负信息的。
dbo.PrivateGameRecordChild是存储当前游戏的每一局的牌局回放,也就是咱们上篇文中所讲述的每一场牌局详情和操作数据。
dbo.PrivateGameRecordUserRecordID是记录ID与玩家ID的对应关系。
我们打开dbo.PrivateGameRecord,可以看到有一个属性字段UserData存储着一堆二进制数据。也就是我们上节中通过Stream_VALUE来将结构数据填充为字节流后存进来的。
当客户端在进入战绩界面时,会向登录服务器发送SUB_GP_GAME_RECORD_LIST消息,请求当前玩家的所有参与过的房间据,也就是dbo.PrivateGameRecord中与玩家相关的数据列表。这个可以在CGPGameRecord.cpp的CB_GetGameRecordList函数中看到。
在登录服务器的AttemperEngineSink.cpp中,我们可以看到登录服务器会在收到消息后转发数据库请求,数据库再通过存储过程拉数据出来。之后返回给客户端。
客户端收到后通过StreamValue将数据流解析到结构tagPrivateRandTotalRecord中显示出来。
以上是关于房卡麻将分析系列 "牌局回放" 之 播放处理的主要内容,如果未能解决你的问题,请参考以下文章