主要的几个对象类

1.Object类主要功能

1)InWorld判断和操作

2)GUID

Mangos的每个对象都有唯一的GUID,每类GUID的最大值是保存在数据库中,初始化时候从数据库加载。Mangos这样做还是很奢侈的,国内服务器可能都存在合服需求,所以国内服务器操持角色ID不同即可。可能要合服的服务器在开服的时候要把的角色ID范围要规划好(天龙八部的角色ID的最大值是保存在数据库中的)。国内服务器中对于重要物品、宠物可能需要唯一的ID,可以考虑角色ID + 物品、宠物id来实现。uint32应该够用了,但是也要限制重要物品的种类和数量。

3)Object类型TypeId

enumTypeID

{

TYPEID_OBJECT= 0,

TYPEID_ITEM= 1,

TYPEID_CONTAINER= 2,

TYPEID_UNIT= 3,

TYPEID_PLAYER= 4,

TYPEID_GAMEOBJECT= 5,

TYPEID_DYNAMICOBJECT= 6,

TYPEID_CORPSE= 7

};

4)网络包发送SendUpdateToPlayer

5)基本状态组包Values、OutOfRange、MovementUpdateBlock等

6)Int, UInt, float等标记数据设置、加载、访问Get/SetXXXValue、SetFlag

union

{

int32*m_int32Values;

uint32*m_uint32Values;

float*m_floatValues;

};

Object有很多数据、状态以数组形式存储,访问时候通过类型和标记定位。

7)任务判断接口hasQuest

2.Item类主要功能

1)创建和复制Create/CloneItem

2)所有者Owner(Player)

3)数据库存取SaveTo/LoadFromDB

Mangos的每个Item在数据中是作为一条记录保存的,一般国内网游是打包保存在玩家记录里面,国内网游的做法在数据库效率上要高很多。

4)绑定Binding、损坏Broken、是否可交易CanBeTrade、叠放数量、是否装备等一般道具属性

5)在包中的位置Bag、Slot

6)增强状态和时效Enhancement

7)Timer更新

8)状态更新和广播State

9)技能和魔法相关Skill/Spell

10)任务相关hasQuest

3.Bag类主要功能

1)增加、删除、得到某位置的道具Store/RemoveItem

2)空间IsEmpty、GetFreeSlots

3)数据库存取SaveTo/LoadFromDB

4)组包更新BuildCreateUpdateBlockForPlayer

4.WorldObject类主要功能

1)位置和朝向Relocate、SetOrientation

2)附近空间位置GetClosePoint

3)所在地图、区域和地区GetMapId、GetZoneId、GetAreaId

4)名字GetName

5)和其它WorldObject位置、角度等关系IsWithinDist、IsInRange

6)发送网络消息SendMessageToSet

7)发送聊天、喊叫等消息MonsterSay、MonsterYellToZone

8)对玩家来说是否可见isVisibleFor

9)召唤Creature,SummonCreature

5.Unit类主要功能

Unit类是很复杂的一个类,改类具有很多属性和方法,实现了游戏中Player,Creature等主要功能。

1)渐变状态GetDiminishing

2)战斗相关(计时器、攻击对象、停止等)setAttackTimer、Attack、getVictim、SendMeleeAttackStop

3)单元状态addUnitState

4)等级、种族、职业、装甲、血量、伤害能力等属性getLevel、getGender、getRace、GetArmor、GetHealth、GetPower

5)友好、敌对等阵营关系IsHostileTo、IsFriendlyTo

6)站立、行走、骑乘、战斗、飞行、水下、恐惧、死亡等状态getStandState、IsMounted、DeathState

7)技能和伤害处理DealDamage、MeleeSpellHitResult、GetWeaponSkillValue

8)类型(商店、银行、飞行点、行会、拍卖行等)isVendor、isBanker

9)施展法术CastSpell

10)光环状态和特效以及数值影响HasAura、RemoveAura

11)广播伤害、攻击状态等消息SendAttackStateUpdate、SendSpellMiss

12)主人、召唤者、宠物等信息GetOwnerGUID、SetCharmerGUID、GetPet

13)状态更新广播stat system

14)可见性处理Visibility system

15)威胁值处理Threat related methods

16)DynamicObject对象和GameObject对象的附加GetDynObject

17)event处理m_Events

18)MotionMaster

Unit类设计得过大,还包含了战斗、技能、伤害处理、光环状态影响等这些比较复杂的功能模块。

6.Creature类主要功能

1)加入到世界

2)加载装备

3)数据库存取

4)类型,是否是车辆、宠物、图腾、精英等

5)能力,能否行走、游泳、飞行

6)对技能免疫

7)AI和脚本

8)售卖的道具

9)状态更新

10)对话内容

11)聊天、喊叫

12)战斗行为,寻求帮助

13)重生处理

14)任务相关

7.Player类主要功能

1)加入到世界

2)传送

3)更新

4)社会关系

5)飞机

6)位置

7)宠物

8)聊天

9)装备、背包和仓库

10)增强状态

11)完整的任务处理

12)数据库存取

13)邮件

14)技能

15)天赋

16)声望

17)战场

18)战斗状态和模式更新

19)竞技场

20)移动处理

21)副本

22)组队

Player类是继Unit类后另外一个很大的类,实现和很多功能。我现在很佩服Mangos服务器的程序员的水平了,这么多功能,居然一个类搞定。这样的代码对后继维护和修改者绝对是噩梦。

其它类比较小,略过。

mangos服务器的游戏对象和ai系统,(搬运工)Mangos服务器的游戏对象和AI系统(一)相关推荐

  1. mangos服务器的游戏对象和ai系统,(搬运工)Mangos服务器的游戏对象和AI系统(二)

    CreatureAI这个类并不大,构造函数要传入一个Creature的指针,然后就是20来个接口函数. 构造函数: explicitCreatureAI(Creature*creature) :m_c ...

  2. Silverlight 2.5D RPG游戏技巧与特“.NET技术”效处理:(十一)AI系统

    谈到人工智能(AI),这个话题就太大了:大学里有<人工智能教程>专门讲这方面的知识,什么大名鼎鼎的人工神经网络.遗传算法等等均可一窥究竟,这里如赘述似乎有些班门弄斧,我们暂且丢它一边去吧. ...

  3. 点晴oa系统搭服务器,点晴OA系统安装后提示:操作对象无效错误101,您没有ASPEncodeDLL.AspCoding对象的操作权限或该对象不存在请联系服务器管理员...

     点晴OA系统安装后提示:操作对象无效错误101,您没有ASPEncodeDLL.AspCoding对象的操作权限或该对象不存在请联系服务器管理员 :安装的时候遇到一个问题,安装完之后出现:您没有 A ...

  4. dnf会修改跨区服务器吗,dnf新跨区系统上线之后,整个游戏只有9个大区

    原标题:dnf新跨区系统上线之后,整个游戏只有9个大区 从11月份开始,DNF官方就已经提出了新的跨区计划,并且陆续对各大区进行更新调整,并且安图恩团队频道和卢克团队频道进行调整,以满足玩家们的打团需 ...

  5. 服务器win7系统能搭建手游吗,如何判断自己的Win7系统能否玩吃鸡游戏?

    如何判断自己的Win7系统能否玩吃鸡游戏?吃鸡游戏对电脑配置要求非常高,很多伙伴都不清楚自己的电脑是否能玩吃鸡游戏?这就要看你的电脑配置了,下面给大家分享几种查看电脑配置的方法. 一.首先来看看吃鸡游 ...

  6. 2核4g服务器选啥系统好,云服务器2核4g可以做什么

    云服务器2核4g可以做什么 内容精选 换一换 实例即云耀云服务器,是由CPU.内存.操作系统.云硬盘组成的基础的计算组件.云耀云服务器创建成功后,您就可以像使用自己的本地PC或物理服务器一样,在云上使 ...

  7. ioGame 网络游戏服务器框架 (java)、java游戏服务器、netty 集群分步式的网络游戏服务器

    ioGame 国内首个基于蚂蚁金服 SOFABolt 的 java 网络游戏服务器框架:无锁异步化.事件驱动的架构设计 通过 ioGame 可以很容易的搭建出一个集群无中心节点.有状态多进程的分步式游 ...

  8. 游戏服务器和网站,大型网络游戏和大型网站需要服务器的不同

    服务器 大型网络游戏和大型网站需要服务器的不同 1) 虽然大型网络游戏产生的数据也很多,但与大型网站系统相比,差了几个数量级. 2) 网络游戏对数据的操作相对简单,基本上简单的select/updat ...

  9. 基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题

    基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题 背景 在这越来越发达的网络时代,web应用也是越来越复杂,尤其是前端的开发,也是越来越受重视 ...

最新文章

  1. 设计模式之_Strategy_03
  2. Flink DataStream 编程入门
  3. 加工中心刻字宏程序_FANUC OI系列图书——车床、铣床及加工中心编程
  4. Closure 代表匿名函数的类
  5. UVM序列篇之一:新手上路
  6. 执行计划有时不准确_生产计划四个层次和解决方案
  7. 同一个电脑安装几个MATLAB,同一个版本的matlab、同一个.m文件,为何一个顺利执行、另一个出错?...
  8. 【多线程】--生产者消费者模式--synchronized版本
  9. java regex 正则表达式 提取数字和去除数字,过滤数字,提取价格
  10. Java学习笔记——IO
  11. 宋宝华:Linux的任督二脉——进程调度和内存管理
  12. Java美颜相机(1)图像处理
  13. ITellYou结合软碟通安装Win10系统指南
  14. 一寸照纯红色底图片_一寸照纯红色底图片
  15. APT之木马静态免杀
  16. DES和RSA加密解密实例
  17. 黄金的18K和24K是什么意思
  18. F2FS源码分析-2.2 [F2FS 读写部分] F2FS的一般文件写流程分析
  19. redis的多路复用
  20. 【蓝桥】 历届试题 分考场(DFS,回溯,剪枝,无向图染色问题)

热门文章

  1. 13、JPA乐观锁和悲观锁
  2. h5底部留白,适配iphoneX安全区域
  3. Python爬虫史上超详细讲解(零基础入门,老年人都看的懂)
  4. 数据库(SQL Sever) QQ查询
  5. 本篇主要介绍Runtime在开发中的一些使用场景,顺便讲解了下MJExtension的底层实现
  6. CALayer的动画跟一个播放音乐的demo
  7. C#中saveFileDialog的使用
  8. 记一次阿里云oss挂在到服务器文件目录操作事故(阿里云oss挂在到ecs清空了原有的文件)
  9. 优惠寄快递比价寄快递小程序功能介绍
  10. Java中Properties+字符流 读写文本文件