使用Delphi编写棋牌类游戏 – 设计篇(2)

简介:
在设计篇(1)中我们大概探讨了如何设计一个中心服务器,并且说明了设计中心服务器的作用和实现的原理。这次我们将探讨一下登录服务器的设计。
登录服务器,顾名思义就是主要负责用户登录信息的认证的。除了对用户的登录信息进行认证以外,登录服务器应该还负责一些其它的功能:
1:向通过认证的用户发送游戏树形信息。
2:向通过认证的用户发送当前游戏的在线人数。
首先我们来讲述一下登录服务器的第一个功能:“向通过认证的用户发送游戏树形信息”。
大家都知道,就一般游戏而言,当用户登录进入以后,在游戏大厅的左面会有一个树形的游戏列表信息。在这个列表信息中说明了这个游戏平台所包含的游戏的名称,以及每个游戏当前存在的房间。例如下图:
对于这些树形列表,我的设计是保存在服务端数据库中的一个叫做“树形信息表”的表中。
“树形信息表”的字段设计是:
字段中:
TreeID              这个树形的节点编号。
GameID             这个树形节点所对应的游戏编号。
ParentTreeID     这个树形节点的父节点编号。
WEB                 这个树形节点对应的说明网址。
TreeName          这个树形节点显示的名称。
TreeIco             这个树形列表显示的图标。
VER                  这个树形节点对应的游戏的版本。
DownURL         下载这个树形节点所对应的游戏的网址。
 
通过这个“树形信息表”中的信息,我们可以在客户端绘制出一个树形列表(m_RoomList)。但是这个表中只说明到如何挂接一个游戏,而一般的游戏都会在游戏节点下面显示出这个游戏有几个房间,以及房间的名称等信息。
房间信息的获得是通过中心服务器获得的。中心服务器将收集的游戏服务器所管理的房间信息通过整理发送给登录服务器。登录服务器根据游戏编号将这些房间信息保存在链表m_RoomList中。当用户登录成功以后,登录服务器将这个链表中的信息发送给客户端,客户端绘制树形信息。这样客户端大厅的树形信息就绘制出来了。
其次我们来讲述一下登录服务器的另一个功能“向通过认证的用户发送当前游戏的在线人数”。我们在玩QQ游戏或者远航、联众游戏的时候都可以看到在游戏名称的后面或者在房间名称的后面会显示出这个游戏或者房间当前的人数信息。虽然客户端和登录服务器的连接属于短连接,但是当用户登录成功以后,显示出每个游戏和每个房间的人数是很有必要的。
每个游戏服务器可以方便的汇总出自己管理的每个房间的在线人数信息。中心服务器定时向每个游戏服务器发送请求信息,从每个游戏服务器上获得这些人数信息,并在中心服务器上进行汇总。将汇总后的结果发送给登录服务器。登录服务器将这个人数信息依然保存在链表
m_RoomList中。当用户登录成功以后发送给客户端。客户端进行绘制。
 
以上两点是我设计的登录服务器所具有的功能。其实登录服务器除了这两点基础功能以外还可以扩展出例如“好友信息”,“好友在线信息”等功能。
 
下次我们将探讨棋牌类游戏服务端的主要部分——游戏服务器的设计。由于游戏服务器实现的功能很多,所以我将会将它分开来阐述。
本文转自狗窝博客51CTO博客,原文链接http://blog.51cto.com/fxh7622/73189如需转载请自行联系原作者

fxh7622
相关文章
|
机器学习/深度学习 人工智能 Cloud Native
云原生场景中的 AI任务调度
PAI平台参加“周二开源日”活动,本期分享核心内容摘要 一、AI任务的需求与DLC 二、KubeDL 三、KubeDLPro 四、总结
1725 0
云原生场景中的 AI任务调度
Avalonia使用默认弹窗
Avalonia使用默认弹窗
254 0
Avalonia使用默认弹窗
|
Python Windows
Pycharm最新激活教程(亲测有效!) 1
Pycharm最新激活教程(亲测有效!)
|
文字识别 自然语言处理 Ubuntu
跨平台工具集JamTools:支持截屏、录屏、文字识别、翻译、传输等
一个跨平台的小工具集类软件,支持Windows7/8/10/11、Macos、ubuntu系统(其他系统可以直接从源码编译打包)。包含了(滚动/区域)截屏、录屏、文字识别、多种语言互译、多媒体格式转换、鼠标键盘动作录制播放、局域网文件传输、聊天机器人等功能
2938 0
|
JSON 前端开发 JavaScript
腾讯位置 - 服务端IP定位(结尾附视频)
腾讯位置 - 服务端IP定位(结尾附视频)
254 0
ENVI_IDL: 文本文件的读取(主要是txt、csv文件)
ENVI_IDL: 文本文件的读取(主要是txt、csv文件)
539 0
|
缓存 Oracle 关系型数据库
Oracle中控制commit的三个参数 commit_write, commit_logging和 commit_wait
Oracle中控制commit的动作有三个参数 commit_write, commit_logging和 commit_wait,按重要性分别说明如下
336 0
|
XML 数据库 网络虚拟化
Android8.1 MTK平台 SystemUI源码分析之 网络信号栏显示刷新(上)
Android8.1 MTK平台 SystemUI源码分析之 网络信号栏显示刷新
376 0
|
IDE 开发工具 Python
【windows】下Anaconda详细安装过程
【windows】下Anaconda详细安装过程
401 0
【windows】下Anaconda详细安装过程
|
新零售 人工智能 供应链
从交易平台升级到营销平台, 阿里巴巴或让中小企业实现更多可能
11月29日,阿里巴巴1688“商潮云启--让生意有更多可能”发布会如期而至。大会以“商潮云启”为主题,阿里巴巴对外宣布将在三年内把1688平台从交易平台升级成为营销平台,并通过八大矩阵服务打造数字商业基础设施。
446 1
从交易平台升级到营销平台, 阿里巴巴或让中小企业实现更多可能

热门文章

最新文章