热血传奇服务端FIR0918源码服务端Actor继承关系以及注解

首先要声明一下,Fir0918服务端方面个人感觉实在是渣 代码各种乱入,写此博客只是记录自己学习的点滴。并不是来告诉大家fir的代码有多好。


TBaseObject 只有四个成员 对象所在地图的X,Y以及对象类型objType(玩家 英雄 NPC  事件 等等)。以及对象创建的时间使用GetTickCount。成员函数也只有一个构造函数。


TActorObject: TActorObject .从代码上看来是作为Actor超类 。但是此类内部实际耦合了太多Player的成员 比如 Socket 句柄 ,衣服样子 以及所属行会等等。而从结构上来看

TActorObject 只是作为一个抽象类来泛化人物 怪物 以及NPC的 具体功能。而此类却耦合太多的人物操作。所以这里并没有设计好。需要解耦。关于属性问题:其内部有三个关于属性的结构体成员:

    {人物属性}
    m_Abil: TAbility;  //人物临时属性。此结构体用来计算人物所在等级应具有的基本属性。之后再计算入m_wAbil内
    m_WAbil: TAbility; //人物主要属性。此结构体是人物的主要属性值记录。攻击伤害是以此结构体作为数据来计算。
    m_AddAbil: TAddAbility;//人物附加属性。此结构体 类似与TAbilty 。有不少重复的字段是一样的。其作用是计算人物身上穿戴装备的属性值。然后和m_Abil相加 赋值给    m_wAbil 。


TAnimalObject : 此类实现了Actor的搜寻 和攻击 以及 随机的走动方法。以及处理Socket消息的小实现。个人认为 此类功能应该在TActorObject内实现。再此多一层继承关系是没必要的。

TMonster :  此类作为怪物类的基类 实现了攻击目标 和基本逻辑处理(Run函数) 子类怪物继承自其要实现新的功能基本 是在Run内进行重写。


TAIObject : 此类 实现了自动控制的一些功能 但并未完全实现。从设计角度来看 此类是为英雄以及假人实现做抽象的。但是个人认为此类应该继承自TPlayObject  而不是让TPlayObject 继承自TAIObject 毕竟 玩家是不需要自动控制的吧。或许需要挂机的功能?


TNormalNPC: 此类实现了各种脚本功能的支持 #IF #ACT 条件的支持!其实有点不太理解 为什么此类需要从TAnimalObject继承。 而卫士类TSuperGuard继承自TNormalNpc 却只实现了攻击玩家这种方法。对于TNormalNPC实现的脚本功能卫士是使用不上的。


TAIPlayObject : 假人的实现。

THeroObject : 英雄的实现。


思考分析:从继承关系上来看TAnimalObject 不应该出现 此类应该集合在Actor类内。而TSuperGuard 也不应继承自TNormalNPC。 而且FIR的源代码内 Actor 也包含了TPlayObject 和 THeroObject的代码:从继承关系上来 应该从更新整理为以下关系


如果非得在服务端实现 人物的挂机功能。那么可以提取出一个公共接口。让假人 和玩家 ,英雄 各自实现 其智能化的功能。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本来打算等录完教程在开源,后来发现实在是没时间,怕大家等不及,先开源了再说吧。大家先拿去研究,等我忙完这一阵有时间了录一个流程讲解,方便大家修改源码! 下面大概给大家介绍下服务器和客户端的交互流程 服务器线程分类:玩家更新,怪物更新,数据接收,地图更新,数据库,界面更新,网管接收 玩家类里的更新和怪物类里的更新大致一样,是操作攻击是否击中,掉血计算,buff到期时间等不是立即生效的东西都在更新里。 服务器的设计思路比较清楚,所以还未见过内存方面报错(数组越界有可能会有,比如部分玩法,目前不稳定的都关闭了暂时没时间修复,大家可以自己动手) 暂时关闭的不稳定玩法:行会争霸,团战(尚未测试),摆摊,交易系统。 玩家视野我设计的是每个地图格子一个整数数组存放玩家或怪物编号,怪物编号以>0开始,玩家以<0开始,每次移动都会去地图类里取视野 另外服务器上的菜单:刷怪控制、管理这两个尚未测试应该有bug,自己注意修复一下 本服务器设计的非常安全,不会有任何变态挂,加速挂,锁血挂等出现,因为所有计算都是在服务器上完成的,计算效率也是杠杆的 不过有人可能说效率不行呀 cpu太高,带几十个人就卡了。那是因为 易语言 在源码调试下运行本身就会慢5-10倍左右,所以测试性能建议编译后在试试 另外微端的事情我说一下,大家直接把RES资源下载到客户端目录下,然后屏蔽微端连接,就可以了,不需要微端了就,但是需要下载好整个游戏就行了 上一个客户端版本我附带在这里大家可以去下载: https://bbs.125.la/forum.php?mod=viewthreadtid=14496289 讨论易语言游戏制作和发展的 QQ群:336787216 ,欢迎一起携手造就易语言游戏的未来,个人认为易语言写游戏真的很容易。主要是引擎非常效率,引擎用的是凤影龙鸣作者封装的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值