使用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
相关文章
|
2月前
|
设计模式 XML 前端开发
设计蓝图到代码奇迹,一次编写,处处惊艳
在跨平台开发领域,Uno Platform 凭借其“一次编写,到处运行”的理念脱颖而出,简化了多平台应用部署的复杂性。本文详细介绍了如何在 Uno Platform 上应用设计模式,从设计构思到代码实现,重点讲解 MVVM 模式的使用方法。通过定义 Model、ViewModel 和 View 层,结合数据绑定和事件通知机制,展示了如何构建响应式 UI,提高应用的可维护性和扩展性。此外,还探讨了其他设计模式的应用,进一步提升了开发效率和应用质量。
33 9
|
2月前
|
设计模式 XML 前端开发
从设计蓝图到代码奇迹:揭秘Uno Platform如何让你用MVVM模式玩转跨平台开发,一次编写,处处惊艳,开发者必看秘籍!
本文详细介绍了如何在 Uno Platform 上运用设计模式,实现从设计到代码的优雅过渡。 Uno Platform 承诺“一次编写,到处运行”,简化了跨平台开发。文中以 MVVM 模式为例,通过定义 Model、ViewModel 和 View 层,展示了其在 Uno Platform 中的具体应用,包括数据绑定和 UI 更新机制。通过这些步骤,不仅简化了跨平台 UI 开发,还提升了应用的响应性和可维护性,为开发者提供了一种高效的解决方案。
55 2
游戏开发:碰撞模型,球球大作战小游戏【VB编程经典案例】
游戏开发:碰撞模型,球球大作战小游戏【VB编程经典案例】
128 0
|
开发工具 C# 图形学
选择游戏开发工具的原则
这篇文章重点不是介绍这个关卡编辑工具,而是想说说如何选择工具。昨天在使用 Unity 制作关卡编辑器的时候,我就在想有没有可能让一个新手快速的学会并且使用它做出东西,想来想去最终得到的结果是不可能。 再看一眼上面的这个 Unity 软件的界面,如果你是一个从未做过游戏的新手的话,估计已经开始脑阔疼了,光是工具本身门槛已经足够高了,更别说是还有另一个前提:学习 C# 编程语言。
113 0
微信小游戏开发系列教程2-了解游戏全貌和一些游戏开发中的术语
这一节小蚂蚁将会带着大家先从整体上了解一个小游戏的全貌,然后再熟悉一些游戏开发领域中常用的术语。最后分享一下自己的一些经验和方法,希望能够帮助到那些刚进入游戏开发领域的新人。 欢迎体验我的微信小游戏作品:精致1010
101 0
|
Java 开发者 设计模式
接口的魅力:全能的世界蓝图 | 带你学《Java面向对象编程》之五十九
本节旨在为读者展现接口的全能性与其独有的功能:制定标准。
接口的魅力:全能的世界蓝图   | 带你学《Java面向对象编程》之五十九