智勇三国架构设计总结书

作者:何志丹

 

文档修订记录

版本号

修订内容简述

修订日期

作者

1.0.0

初稿

2014-02-24

何志丹

 

 

 

 

 

 

 

 

 

 

 

 

 

本总结书的目的两个:一,对智勇三国进行总结。智勇三国网络版,从开发到现在,已经三年多了,由于竞争激烈,每天都要为生存考虑,所以各类文档都没有。现在补全。二,指导重新写内核。智勇三国已经三年多了,现在维护的成本越来越高了,不如重新写。

1,开发架构  

服务端用MFC(VC6);客户端用(VC6),备选方案QT+QMLQT优点:一,界面好看。二,跨平台,支持赛班(此手机操作系统最高占有中国市场的60%,现在基本没市场);QT5.0开始支持安卓,QT5.2开始支持苹果的IOS。目前最新版本是5.2.1,发布日期是2014-02-06。三,可以让程序员新手完成界面,如果以后出繁体中文版或外语版,会很方便。QT的缺点:一,让客户端增加约5MMFC(VC6)的客户端大约2.9M,如果用QT的话,客户端的大小增加近2倍。单机版将用QT进行试点,如果发现已有玩家可以接受约10M的游戏的软件,则网络版也用QT。二,刚刚支持安卓和IOS(这两个操作系统占领了手机操作系统的绝大部分市场),可能不稳定。本架构暂时不考虑QT,只考虑MFC

2,物理架构 

游戏主体采用CS架框。几乎所有的程序,都依赖团队库BaseData.dll,所以下面就不再把BaseData.dll列出来。

服务端包括:Server.exe,SBaseData.dll,Sock.Dll,ZYBaseData.dll,配置文件con1.ini,异常日志文件catch.txt

客户端包括:SanGuo.exeVWnd.dllCBaseData.dll,ZYBaseData.dll,Sock.Dll

监视程序包括:Watch.exe。如果游戏服务端崩溃或没回应,就强行关闭服务端,并重启之。同时将简要信息记录在崩溃文件sysinfos.txt中,方便排错。

更新程序服务端包括:UpdateServer.exeUPDATE文件夹放更新后的文件。更新程这些文件进行压缩,然后放在EndDir文件夹。

更新程序客户端包括:UpdateClient.exe。更新程序客户端比较游戏客户端和更新程序服务端的文件md5码,是不是有差别,如果有差别,则下载压缩后的文件,然后解压。

合服工具包括:HeFu.exe(对应合服工个数据处理层和界面层),ZYBaseData.dll

运营工具包括:Tool.exe,ZYBaseData.dll

 

3,数据架构

3.1 游戏世界观

游戏数据配置文件,运营人员使用运营工具配置好后,就不会改变了。如果想改变,游戏服务器需要关闭,更新了相关文件后,再启动服务端,就是通常所说的维护更新。服务端和客户端都有游戏数据配置文件,如果两者不一致,以服务端的为主。包括如下文件:一,技能文件,技能书文件,装备模板文件,药品文件,怪物文件,剧本文件,幻境文件、服务器信息(开服时间,服务器名称等)。过关斩将怪物的数据会随机变化,重楼怪物的规律性很强,暂时没独立成文件。如果时间充足,则也独立成为文件。

 

3.2 服务端配置

无需重启服务端,设置后实时或5分钟内生效。con1.ini记录GM的配置,如当前的活动。欢迎.txt,记录用户登陆时的欢迎信息。

 

3.3 客户端配置

Con1.ini,用户的习惯,如:字体、字号。操作记录,如上次打的怪物。

 

3.4 服务端和客户端的通信

每次通信的内容分三部分:类型(USHORT)、内容长度(USHORT,以Byte为单位)、内容。许多时候,服务端更新了,客户没必要更新,这时客户端,可能会收到不可识别的通信内容,这时根据长度扔掉不可识别的数据。通信数据先存到内存文件(CMemFile)中,然后统一发送。客户端,每次连服务器时,会发送客户端的版本号,如果客户端的版本号,低于服务端版本号,则有以下三种处理方:一,影响很小,不做处理。如:界面稍调。二,影响适中,建议用户更新。如:增加新玩法,有的玩家很感兴趣,有的玩家可能不感兴趣。三,影响恶劣,必须更新,否则拒绝用户登陆。如:掉宝下调、系统商店售价上调。

类型1-99系统保留,用户类型从100起,具体如下:

1,客户端发给服务端,内容为客户端的版本号。

2,内容为空,心跳包,建议每10秒发一次,证明客户端没有掉线。如果服务端,300秒内,没收到心跳包,则主动断开连接。10秒和300秒很可能根据实际情况修改。

3,服务端发给客户端的信息,内容由两部分组成:重要性(UBYTE)、提示信息(字符串)。重要性为200,表示很重要,如:提示用户客户端必须更新。重要性100表示重要,如:建议用户更新客户端。系统只占用重要性200100,其它用户都可以使用。系统重要性200100,由两个成员函数处理,但效果完全一样:AfxMessageBox(提示信息)。重要性100的函数,建议覆盖掉。

4,内容为空。服务端收到客户端的版本号,马上返回此消息,告诉客户端,通信正常。

 

3.5 用户数据

如果只读写文件的一部分,用内存映射文件。如果读取整个文件,先读到内存文件,再从内存文件中读取;如果写入整个文件,先写到内存文件,再从内存文件写入到文件。 用户数据包括:一,总信息:玩家(账号)信息、中介(区中介、老中介)、体力。二,本服信息:本服玩家信息,社团信息,人物(角色)信息,人物索引信息,交易信息,合服信息,其它信息,汇款信息,离线信息。

4,运行架构 

游戏服务端、更新程度服务端和监视程序,都在服务器上常期运行,游戏客户端和更新程序客户端由玩家决定何时运行。合服工具和运营工具,运营人员需要的时候运行。

游戏服务端以外,其它程序都只有一个线程。游戏服务同有两个线程:主线程,服务线程。两者共享数据:标记数据。两处使用了标记数据,只需要同步这两处。一,打标。有以下三种情况:1,服务端收到客户端建立连接的申请;2,服务端收到客户端断开连接的申请;3,服务端收到客户端发送的数据。二,服务线程,每0.2秒读取一次打标数据。

 

5,逻辑架构

5.1 各层简介

1,文字型游戏界面库层

文字型游戏的界面很简单,连应用软件常用的编辑框、滚动条都不需要。所以重写了。除游戏客户端尽量用此库外,其它都用标准界面。对应VWnd.dll

2,客户端界面层

显示本地数据,处理用户的输入。对应SanGuo.exe

3,客户端数据处理层

处理本地数据,对应CBaseData.dll

5,服务端界面层,简单的后台功能,显示数据处理层的数据,调用通讯层的功能。对应Server.exe

6,服务端数据处理层,维护服务端的游戏数据,处理通信层接收的数据。对应CBaseData.dll

7,通信层,建议、断开连接,发送缓冲中的数据,接收数据到缓冲。SockData.dll

8,智勇三国数据层,包括游戏各类数据的定义,如:怪物、装备、人物、猜数字等。ZYBaseData.dll

9,团队库,本团队多年积累的若干类和函数。几乎所有的层都或多或少的用到了此层,对应BaseData.dll。主要包括如下内容:

一,封装的常用函数。

二,个性化函数。

三,安全指针、安全数组,支持结构体的CMap.

四,加密、MD5等。

 

5.2依赖关系

各层依赖关系如下:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闻缺陷则喜何志丹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值