热血传奇服务端源代码分析笔记

RunDB.pas 维护DBServer和M2 的数据交换。

RunSock.pas 维护 M2和网关的数据交换。

LocalDB.pas 用于读取标准数据库(物品 技能 怪物)内的数据。

其中可以看到 在读取物品数据库的时候

 StdItem.AC := MakeLong(Round(Query.FieldByName('Ac').AsInteger * (g_Config.nItemsACPowerRate / 10)), Round(Query.FieldByName('Ac2').AsInteger * (g_Config.nItemsACPowerRate / 10)));
        StdItem.MAC := MakeLong(Round(Query.FieldByName('Mac').AsInteger * (g_Config.nItemsACPowerRate / 10)), Round(Query.FieldByName('MAc2').AsInteger * (g_Config.nItemsACPowerRate / 10)));
        StdItem.DC := MakeLong(Round(Query.FieldByName('Dc').AsInteger * (g_Config.nItemsPowerRate / 10)), Round(Query.FieldByName('Dc2').AsInteger * (g_Config.nItemsPowerRate / 10)));
        StdItem.MC := MakeLong(Round(Query.FieldByName('Mc').AsInteger * (g_Config.nItemsPowerRate / 10)), Round(Query.FieldByName('Mc2').AsInteger * (g_Config.nItemsPowerRate / 10)));
        StdItem.SC := MakeLong(Round(Query.FieldByName('Sc').AsInteger * (g_Config.nItemsPowerRate / 10)), Round(Query.FieldByName('Sc2').AsInteger * (g_Config.nItemsPowerRate / 10)));
物品的防御、魔法防御 、攻击这种 一个字段内包含了 攻击上限了下限。类型为4字节。 这里也就限制了 物品的属性无法超越2字节限制。 0-65535 。要超过此限制 必须使用8字节数据。

--------------------------------------------------------以上是M2和外部数据交换的操作--------------------------------------------

Magic.pas 内实现了一个魔法管理器 TMagicManager 所有魔法的伤害都在此进行管理和统计。源代码很冗余。相同的代码有太多重复。如果考虑将物品属性改成4字节 那么这里面有很多代码需要重新维护 防止数据溢出。


Guild.pas内 实现 了2个类,TGuild(行会) 和TGuildManager  (行会管理)。那么关于行会的操作都将在此进行。


UsrEngn.pas内是对所有Actor数据的处理。包含处理NPC  人物  怪物 和英雄 的数据


在TUserEngine.ProcessHumans 我发现在处理全局公告的时候的逻辑 也在这里面处理 实在是很不应该。这应该是公告类自身来处理的。主要负责前端  不过职责太混乱 啥都有。

而frnEngn.pas  内 TFrontEngine = class(TThread) 虽然从字面上来理解是前端。。但是做的是后勤工作。。反正这两个类的职责比较混乱!是处理数据的主要类!


Event.pas 内实现的是事件类。安全区的光环 以及地图上的特效 都是以事件来实现的。比如困魔咒。在游戏网络突然中断我们可以看到困魔咒的光环依旧是动态的。这说明。这些地图特效的帧率 是不受服务端控制 的 主要逻辑在客户端 服务端只是告诉客户端 有这么一个事件  什么时候消亡!

TEvent = class(TBaseObject)


Envir.pas 内维护了一个TEnvirmonent  在服务端 如果服务端有1000个地图map  那么会有1000个TEnvirMonent 对象。每个对象维护各自地图内的玩家怪物列表。 而此类并不是线程类的子类。也就就是表示服务端在处理数据并不是并行处理的。而是线性处理。那么随着对象纵深越来越深  效率也是会降低。所以此类应该独立出来 不受M2维护 应该做到自维护。

在加入新土城格式 需要在此单元内做兼容。


DataEngn.pas 此单元与RunDB.pas配合   DataEngn.pas主要是处理底层Socket链接 而RunDB.pas主要负责合适发送者这种高层逻辑。是线程类。


Castle.pas 是城堡处理实现单元内部实现了TCastle 和 TCastleManager。关于城堡的操作 在此单元内。


StorageEngn.pas 仓库实现单元。其保存的为本地文件 并非数据库内。 需要改进


其他以Obj开头的单元是怪物 以及NPC的 AI实现。


ps:源代码为  飞尔20120918代码









  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
本来打算等录完教程在开源,后来发现实在是没时间,怕大家等不及,先开源了再说吧。大家先拿去研究,等我忙完这一阵有时间了录一个流程讲解,方便大家修改源码! 下面大概给大家介绍下服务器和客户端的交互流程 服务器线程分类:玩家更新,怪物更新,数据接收,地图更新,数据库,界面更新,网管接收 玩家类里的更新和怪物类里的更新大致一样,是操作攻击是否击中,掉血计算,buff到期时间等不是立即生效的东西都在更新里。 服务器的设计思路比较清楚,所以还未见过内存方面报错(数组越界有可能会有,比如部分玩法,目前不稳定的都关闭了暂时没时间修复,大家可以自己动手) 暂时关闭的不稳定玩法:行会争霸,团战(尚未测试),摆摊,交易系统。 玩家视野我设计的是每个地图格子一个整数数组存放玩家或怪物编号,怪物编号以>0开始,玩家以<0开始,每次移动都会去地图类里取视野 另外服务器上的菜单:刷怪控制、管理这两个尚未测试应该有bug,自己注意修复一下 本服务器设计的非常安全,不会有任何变态挂,加速挂,锁血挂等出现,因为所有计算都是在服务器上完成的,计算效率也是杠杆的 不过有人可能说效率不行呀 cpu太高,带几十个人就卡了。那是因为 易语言 在源码调试下运行本身就会慢5-10倍左右,所以测试性能建议编译后在试试 另外微端的事情我说一下,大家直接把RES资源下载到客户端目录下,然后屏蔽微端连接,就可以了,不需要微端了就,但是需要下载好整个游戏就行了 上一个客户端版本我附带在这里大家可以去下载: https://bbs.125.la/forum.php?mod=viewthreadtid=14496289 讨论易语言游戏制作和发展的 QQ群:336787216 ,欢迎一起携手造就易语言游戏的未来,个人认为易语言写游戏真的很容易。主要是引擎非常效率,引擎用的是凤影龙鸣作者封装的
### 回答1: 热血传奇服务端是玩家可以在局域网上进行游戏的一种游戏服务器。搭建这样的服务端需要一些特定的步骤和教程。 首先,我们需要一个热血传奇服务端的架设教程。可以通过搜索引擎或者游戏相关的论坛找到一些比较详细的教程。这些教程通常包括了从下载服务端文件到配置服务器的过程,详细介绍了每一步的操作和配置选项。 在成功架设服务端之后,我们可能还需要一些额外的工具来管理服务器。其中一个重要的工具是GM工具,即游戏管理员工具。GM工具可以帮助服务器管理者进行一些特殊的操作,比如添加物品、调整游戏规则、管理玩家账号等等。使用GM工具需要一定的了解和专业知识,因此建议在使用之前阅读相关的教程或者向有经验的人咨询。 总之,在搭建热血传奇服务端时,需要借助架设教程来完成安装和配置,同时可以考虑添加GM工具辅助管理服务器。这样就可以在局域网上开放一个热血传奇游戏服务器,供玩家们享受游戏乐趣。 ### 回答2: 热血传奇是一款非常受欢迎的在线游戏,可以通过架设一个属于自己的热血传奇服务端来实现局域网游戏。下面我将为您介绍如何架设热血传奇服务端以及相关的教程和GM工具。 1. 准备工作: a. 安装必要的软件:MySQL数据库、Navicat数据库管理工具和Visual Studio开发环境。 b. 下载热血传奇游戏客户端和服务端核心文件。 2. 架设热血传奇服务端: a. 创建一个数据库,并使用Navicat导入热血传奇的数据库文件。 b. 使用Visual Studio打开服务端核心文件,修改数据库连接地址和其他参数。 c. 编译并生成服务端核心文件后,将生成的文件拷贝到游戏客户端所在的目录中。 d. 运行服务端核心文件,通过游戏客户端选择“联机游戏”进入局域网游戏。 3. 教程资源: a. 网上有很多关于热血传奇服务端架设的教程视频和文档,您可以通过搜索引擎找到相关资源。 b. 推荐一些技术论坛和游戏玩家社区,如17pk、新热血传奇等,这些社区中的论坛板块经常有玩家分享架设教程和资源。 4. GM工具: a. GM工具可以帮助管理热血传奇游戏,包括添加、删除、禁言玩家等功能。 b. 您可以通过搜索引擎找到热血传奇GM工具的下载链接。 c. 注意使用GM工具时要确保游戏环境的安全性,避免被人恶意利用。 希望以上信息能够对您有所帮助,祝您在热血传奇的世界里玩得愉快!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值