棋牌游戏服务器架构: 详细设计(三) 数据库设计

主要有3类Database: ServerInfoDB,UserInfoDB和GameDB。 ServerInfoDB主要存储的是游戏列表的信息,UserInfoDB存储玩家的全局信息,而GameDB就是积分以及积分变化情况。下面分别加以描述。

1. ServerInfoDB

ServerInfoDB主要存储游戏列表信息。主要有以下几个表:

1. GameTypeInfo,其主要字段为:

TypeID:类型标识 ID

TypeName:类型名字,例如棋牌类,休闲类

Enable:控制游戏大厅是否显示该类型,默认为 1,即为默认显示

2. GameKindInfo,其主要字段为:

KindID: 游戏的唯一标识

TypeID: 外键(GameTypeInfo的主键),该游戏所属类型

KindName: 游戏名称, 比如德州扑克,斗地主等。

ProcessName: 客户端进程名称

MaxVersion: 客户端进程的最低版本,若是登录时发现客户端版本低于这个值,要求其更新。

Enable: 控制游戏大厅是否显示该游戏,默认为1。

3. GameStationInfo 站点信息表:

StationID:  站点标识

StationName: 站点名称

Enable: 这个站点是玩家可以选择的,这个标识控制是否显示给玩家,默认为1

2 UserInfoDB

这个数据库主要存储玩家的全局信息,有两个表: UserAccounts和ClubList:

1. UserAccounts的主要字段:

UserID:玩家的唯一标识,注册的时候自动生成,不能修改

Accounts:帐户名字,具有唯一性,不能重复,能修改

LogonPass:玩家帐户的密码,采用通用加密算法 MD5 加密记录

Gender:性别

LogonNullity:帐户禁止标志,影响玩家登录广场和登录游戏房间

ServiceNullity:服务禁止标志,保留供网站系统使用或者将来系统扩展使用

UserRight:玩家权限标志,每一位代表一种权限, 比如旁观权限,大厅公聊权限,私聊权限等。

ManageRight:管理权限标志,第一位代表一种管理权限,比如踢出玩家,发布消息等。

FaceID:玩家头像索引号码

ClubID:外键(ClubList的主键),玩家社团 ID 号码

MemberOrder:会员等级标识

Experience:玩家经验数值,表示玩家游戏的总局数,可以通过修改每个游戏的经验数值增加方案得到策略的改变

AllLogonTimes:玩家成功登陆的总次数

RegisterDate:玩家的注册日期

LastLogonDate:玩家最后登陆的日期

RegisterIP:玩家帐户的注册所在的 IP 地址

LastLogonIP:玩家最后使用此帐户登陆的 IP 地址

Question:密码找回提示问题

Answer:密码找回回答问题

QQ:玩家注册QQ号码

ConnectPerson:联系人姓名

PhoneNO:电话号码

Address:家庭住址

Email:电子邮箱

2. ClubList是用来存储社团列表的,主要字段包括:

ClubID:社团的唯一标识号码,注册的时候自动生成,不能修改

ClubName:社团名字

ClubQQ:与社团对应的QQ群号码

ClubAdmin:社团管理员(外键)

ClubNotice:社团公告,预留字段

3 GameDB

这个DB主要存储玩家的游戏相关信息,例如游戏积分,胜局,和局,逃局,登陆时间等信息。

1. GameScore

UserID:玩家标识号码

Score:玩家的积分数值

WinCount:游戏胜利局数

LostCount:游戏输局局数

DrawCount: 游戏和局局数

FleeCount: 游戏逃跑局数

UserRight:玩家在此游戏中的普通权限数值,在登陆房间的时候与玩家房间权限进行或操作

ManageRight:玩家在此游戏中的管理权限数值,在登陆房间的时候与玩家房间权限进行或操作

PlayTimeCount:玩家在此类游戏中的游戏时间

AllLogonTimes:玩家进入此类游戏的总次数

RegisterDate:玩家首次进入此类游戏的时间

LastLogonDate:玩家最后一次进入此类游戏的时间

RegisterIP:玩家首次进入此类游戏的 IP 地址

LastLogonIP:玩家最后一次进入此类游戏的IP 地址

2. GameLogonLog:

ID:Log的索引ID,自增长。

UserID:外键,玩家 ID 号码

Score:玩家进入房间时刻的积分数值

WinCount:玩家进入房间时刻的游戏胜利局数

LostCount:玩家进入房间时刻的游戏输局局数

DrawCount:玩家进入房间时刻的游戏和局局数

FleeCount:玩家进入房间时刻的游戏逃跑局数

KindID:玩家进入的房间的类型标识号码

ServerID:玩家进入房间的房间标识号码

ClientIP:玩家进入房间的连接IP地址

LogonTime:玩家进入房间的时间

3. GameScorelog:

ID:LogID,自增长

UserID:外键,玩家 ID 号码

LeftTime:玩家离开房间的时间

Score:玩家在游戏房间游戏所产生的积分改变的数值

WinCount:玩家在游戏房间游戏所产生的胜利局数改变的数值

LostCount:玩家在游戏房间游戏所产生的输局局数改变的数值

DrawCount:玩家在游戏房间游戏所产生的和局局数改变的数值

FleeCount:玩家在游戏房间游戏所产生的逃跑局数改变的数值

Experience:玩家在游戏房间游戏所产生的经验数值改变的数值

PlayTimeCount:玩家在游戏房间游戏所产生的游戏时间的数值

OnLineTimeCount:玩家在游戏房间游戏所产生的在线时间的数值

KindID:玩家进入的房间的类型标识号码

ServerID:玩家进入房间的房间标识号码

ClientIP:玩家进入房间的连接IP地址

时间: 2024-12-25 06:32:08

棋牌游戏服务器架构: 详细设计(三) 数据库设计的相关文章

棋牌游戏服务器架构: 详细设计(二) 应用层设计

这里的应用层,指的是CenterServer.LogonServer.LogServer.RoomServer等几个服务器,另外还包括游戏模块的设计.不过游戏模块和前4个服务器的设计很不相同.这里先说一下服务器应用的详细设计. 这上面提到的4个服务器都需要响应客户端(这里的客户端的意思是泛指)的请求,进行数据库操作,同时还要能够配置,以及显示系统运行的状态信息等.这里会采用MVC模式来组织应用层逻辑 . 图1  Application层基本结构 IController从ITCPServiceOb

棋牌游戏服务器架构: 详细设计(一) 内核设计

内核的几个组件被设计成Service,也就是说这几个模块都要实现如下接口: 图1  IService接口 Start方法用来启动服务. Stop 方法用来关闭服务. IsService 方法用于查询当前服务是否正在工作. 内核中的几个Service都不能够直接创建,Applications在使用这些Service的时候首先要得到一个IServiceMgr的实例,这被实现成了一个另类地单例模式.IServiceMgr的接口定义如下: 图2  IServiceMgr接口 IServiceMgr提供两

棋牌游戏服务器架构设计

转载自:简书一位同行的文章 一,棋牌类服务器的特点 1,棋牌类不分区不分服 一般来说,棋牌游戏都是不分区不分服的.所以棋牌类服务器要满足随着用户量的增加而扩展的需要. 2,房间模式 即在同一局游戏中就是在同一个房间中,同一个房间中的人可以接收到其他人的消息. 3,每个房间的操作必须是顺序性 这个特性类似与一般游戏的回合制,每个玩家的操作都是有顺序性的. 二,需要解决的技术点 1,数据共享 因为棋牌类游戏不分区不分服,我们在设计服务器的时候,是按世界服的思想去设计,即服务器是一个n多台物理机的集群

棋牌游戏服务器架构: 总体设计

首先要说明的是, 这个棋牌游戏的服务器架构参考了网狐棋牌的架构.在研究其服务器框架后发现,它的网络部分确实是比较优化的.它主要采用了Windows提供的IO完成端口来实现其网络组件.本服务器虽然参考了其设计,但是还是有很大的不同,因为这个服务器框架主要是用在linux系统之上,而网狐棋牌是基于Windows平台的,严重依赖于windows sdk.这个架构延续了网狐棋牌在网络组件所作的努力,这个棋牌的服务器也使用异步IO作为网络的工作方式,更为彻底的是其数据库也是采用异步架构.boost::as

网络棋牌游戏服务器架构

一.物理架构说明 游戏系统组件包括: 服务器系统(中心服务器的控制系统,服务器登陆控制的系统,游戏登陆服务器,游戏房间控制的系统,游戏组件系统),游戏客户端(游戏大厅,游戏组件). 数据库系统:用于保存用户的信息数据.游戏积分数据.游戏系统运行状态的数据以及系统日志数据等数据. 中心服务器的控制系统:用于向客户端提供全局配置及初始化数据使用. 服务器登陆的控制系统:用于房间服务控制系统的登陆效验使用. 游戏房间的控制系统:用于控制游戏房间的启动,停止,添加,删除,管理等等. 游戏组件系统:用于具

棋牌游戏服务器架构: 部署

先看一下,下面这张可能的部署图吧. 在这个图中,可以看到,客户端的形式多种多样,可能是pc上的一个可执行文件,也可能是通过浏览器打开的一个网页,甚至于手机客户端.它们都通过internet连接到游戏服务器. 在这个部署中有1个CenterServer,1个LogServer,3个LogonServer和很多个RoomServer(只显示了德州扑克的两个房间).这些Server有可能分布在同一台机器上,也可以分布在不同的机器之上.这对扩容来说是极为方便地.在玩家数量增大,系统不足以承载其网络负载时

微信房卡麻将棋牌架设之游戏服务器架构的详细设计(一) 内核设计

题目:微信房卡麻将棋牌架设之游戏服务器架构的详细设计(一) 内核设计 今天向大家介绍一下游戏服务器的设计,着重讲解一下微信房卡麻将棋牌架设(aqiulian.com)的服务器搭建,如果有什么不懂得可以咨询我Q_212303635,欢迎大家的咨询.那么我们开始进去主题吧. 内核的几个组件被设计成Service,也就是说这几个模块都要实现如下接口: 图1  IService接口 Start方法用来启动服务. Stop 方法用来关闭服务. IsService 方法用于查询当前服务是否正在工作. 内核中

我是如何设计游戏服务器架构的

前言 现在游戏市场分为,pc端,移动端,浏览器端,而已移动端和浏览器端最为接近.都是短平快的特殊模式,不断的开服,合服,换皮.如此滚雪球! 那么在游戏服务器架构的设计方面肯定是以简单,快捷,节约成本来设计的. 来我们看一张图: 这个呢是我了解到,并且在使用的方式,而PC端的游戏服务器而言,往往是大量的数据处理和大量的人在线,一般地图也是无缝地图的完整世界观,所以不同的程序都是独立的进程并且在不同的server中运行! 而浏览器端和移动终端,在上面就说过了,它主要是不断的开服,合服,开服,合服,那

棋牌高防服务器架构

棋牌高防服务器架构q8803582 首先要说明的是, 这个棋牌游戏的服务器架构参考了网狐棋牌的架构.网狐棋牌最令人印象深刻的是其稳定性和高网络负载.它的一份压力测试报告上指出:一台双核r的INTEL Xeon 2.8CPU加上2G内存和使用共享100M光纤的机子能够支持5000人同时在线游戏. 在研究其服务器框架后发现,它的网络部分确实是比较优化的.它主要采用了Windows提供的IO完成端口来实现其网络组件.本服务器虽然参考了其设计,但是还是有很大的不同,因为这个服务器框架主要是用在linux