HellMapManager(HMM) 的主要功能是管理MUD地图相关的数据。软件根据实际的使用经验,将MUD中的地图相关的数据归类为以下数据结构
主键一般指一个不可重复的,唯一的ID。
对于大部分主键来说,有以下特殊的验证规则:
- 不可为空字符串
- 不可包含回车
Room指mud中常见的,将玩家和道具按位置进行分割,可以通过不同的出口串联起来的基本元素。是HMM地图结构中最基本也是最核心的概念。
对于HMM的地图来说,Room就是一个独一无二的key,以及不同key之间通过出口串联,再附加一些额外的信息。
具体的Room数据结构为
- Key 字符串,主键,不可重复,可以认为Key即Room本身。
- Name 字符串,名称。Mud中一般每个独立场景都有自己的名称。Name方便用户记录这些信息,直观的进行管理,并能进行搜索/过滤。
- Group 字符串 分组。用于管理数据的维度。Mud中未必有直接体现,最常见的是房间会归属于某个城市/区域。这里是将Room进行简单规律,实际使用中可能会使用地区(Region)的结构。
- Tags 标签列表,房间对应的标签属性,用于与地图计算的上下文进行匹配。
- Exits 出口列表,房间和其他房间的对应关系,用于地图计算。
- Data 房间数据列表,字符串键值对,可用于程序中需要的额外信息。
- Desc 字符串,对使用人说明的描述性文字,一般不在代码中使用。
标记本质是MUD中对房间(Room)的业务描述。
一般认为,数据的主键不应该包含业务信息。同时,由于Room往往承载很多功能,所以需要一个类似于别名/快捷方式的功能,将业务中的房间信息绑定到实际的主键上。
标记就用来实现这个需求的数据结构。直面意义上,标记指在地图软件中很常见的,在某个地点上打上标记的功能。
具体的标记数据结构为
- Key 字符串,主键,不可重复。
- Value 字符串,标记值,实际的Room主键。
- Group 字符串,分组。
- Message 字符串,传递给脚本的数据,可以用来对标记传递更多的程序信息,比如NPC的标记可以传入NPC的ID,名字等。
- Desc 字符串,对使用人说明的描述性文字,一般不在代码中使用。
路线指预先定义的行都路线,一般用于按指定顺序一次在指定的房间之间移动
具体的路线数据结构为
- Key 字符串,主键,不可重复。
- Group 字符串,分组。
- Rooms 字符串列表,有顺序的房间关键字。
- Message 字符串,传递给脚本的数据。
- Desc 字符串,对使用人说明的描述性文字,一般不在代码中使用。
足迹一般用于标记在Mud中随机出现的对象的位置。
Trace的数据结构和路线基本接近,区别在于Trace的房间不应该有顺序属性,以及提供了单独的API将指定的房间Key追加到足迹中。
具体的足迹数据结构为
- Key 字符串,主键,不可重复。
- Group 字符串,分组。
- Locations 字符串列表,无顺序的房间关键字。
- Message 字符串,传递给脚本的数据。
- Desc 字符串,对使用人说明的描述性文字,一般不在代码中使用。
地区是指MUD里一些列房间形成的区域集合。
地区用途通过一系列的 增加/移除 房间/房间组的操作,计算出一系列的房间Key集合,常见的使用场合是将MUD中的几个城市外加几个房间,集合成一个虚拟的地区组合。
具体的地区数据结构为
- Key 字符串,主键,不可重复。
- Group 字符串,分组。
- Items 地区元素列表
- Message 字符串,传递给脚本的数据。
- Desc 字符串,对使用人说明的描述性文字,一般不在代码中使用。
定位指MUD中用来定位当前房间的依据。
定位里类型是很重要的概念,一个类型代表机器里的一种定位方式,比如房间名,描述正则,地图等。
一个类型下,主键不能重复。也就是 类型+主键构成一个唯一特征
具体的定位数据结构为
- Key 字符串,房间主键,和Type组成唯一特征。
- Type 字符串, 定位类型,和Key组成唯一特征。
- Value 字符串,具体用来定位的数据。
- Group 字符串,分组。
- Desc 字符串,对使用人说明的描述性文字,一般不在代码中使用。
捷径指Mud中可以从任意符合条件的房间去指定房间的移动形式。一般体现为飞行,骑行等。
捷径本身是房间出口(Exit)信息的扩展。
具体的捷径数据结构为
- Key 字符串,主键,不可重复
- Command 字符串 命令,不可为空
- To 字符串 目标房间Key
- Cost 整数,移动消耗,计算路径的权重
- Conditions 条件列表,用于移动计算时判断出口是否有效
- Group 字符串,分组。
- Desc 字符串,对使用人说明的描述性文字,一般不在代码中使用。
变量指地图信息中专门提供给脚本的键值对数据。
具体的变量数据结构为
- Key 字符串,主键,不可重复
- Value 字符串 传给程序的值
- Group 字符串,分组。
- Desc 字符串,对使用人说明的描述性文字,一般不在代码中使用。
快照是对MUD中指定房间的特殊环境信息进行一个快照记录,一般用于收集信息,辅助定位等。
MUD中往往存在随着时间/季节等不同,环境会发生变化。所以,在同一个类型下,通过一个房间可以有多种不同的值并存,同时会记录同一个值的出现次数,方便统计出现概率,进行排除意外情况。
快照的特点是,主键,类型,值为唯一特征
具体的快照数据结构为
- Key 字符串,房间主键,和类型与值组成唯一组合
- Type 字符串,快照类型 和主键与值组成唯一组合
- Value 字符串,值,快照值 和主键与类型组成唯一组合
- Count 整数,重复次数,同样组合的快照通过TakeSnapshot形式重复了多少次
- Timestamp 整数,时间戳,最后一次修改的Unix时间戳
- Group 字符串,分组。
- Desc 字符串,对使用人说明的描述性文字,一般不在代码中使用。
房间数据是房间信息中的附加数据信息。
具体的房间数据的数据结构为
- Key 字符串 主键
- Value 字符串 值
标签指代表当前条件的标签值。默认情况下下,可以认为1为True,0为False
具体的标签数据结构为
- Key 字符串 主键
- Value 整数 值
条件指预设的期望标签,和标签的区别是多了一个排除选项进行取否操作。
具体的条件数据结构为
- Key 字符串 主键
- Value 整数 值
- Not 布尔 取否
出口是描述怎么到达一个特定房间的信息。
具体出口的数据结构为
- Command 字符串 命令,不可为空
- To 字符串 目标房间Key
- Cost 整数,移动消耗,计算路径的权重
- Conditions 条件列表,用于移动计算时判断出口是否有效
地区元素是用来描述在地区计算中加入或者排除特定的几个房间的数据结构
具体的确元素的数据结构为
- Not 波尔 是否是排除
- Type 类型,0为房间,1为分组
- Value 具体设计到的房间/分组的值