首先我们应该知道mudos提供哪些服务
我们可以从许多lib中找到我们需要什么
假设我们的lib还是拥有很多现在mud的特性 比如战斗 人物和世界
我们需要一些最基本的东西
比如 master.c user.c login.c <include>
你完全可以使用不一样的文件名 甚至修改出自己的mudos
你也可以完全使用一个成熟的lib来修改 不过这里要讨论的不是这些。
我们需要一个指令目录 一个系统配置文件的目录 一个数据保存的目录 一个帮助文档的目录 一个安全系统 一个角色系统 一个战斗系统(如果你是战斗类的 根本不需要这个)
一个网络服务提供系统(这个一定需要吗?可以不需要) 一个核心守护 一个时间系统(如果你的mud只有简单的时间概念 也根本不需要这个) 一个处理文字的系统
我们可以找出很多lib都有的通性 这些文件可以这样描述:
// Daemons
// maintains information on legitimate character creation
#define CHAR_D "/secure/daemons/chard"
// support to chinese character
#define CHINESE_D "/secure/daemons/chinesed"
// handles fighting events
#define COMBAT_D "/secure/daemons/combatd"
// handling core daemon state
#define CORE_D "/secure/daemons/cored"
// handles the loading and rehashing of verbs
#define COMMAND_D "/secure/daemons/cmd_d"
// handles domain state and build rooms
#define DOMAINS_D "/secure/daemons/domains_d"
// emote daemon
#define EMOTE_D "/secure/daemons/emoted"
// the management daemon a user connects to before determining their real body
#define LOGIN_D "/secure/daemons/logind"
// handles mud's Quests
#define QUEST_D "/secure/daemons/questd"
// handles security of Lpmud
#define SECURITY_D "/secure/daemons/securityd"
// handles intermud services
#define SERVICES_D "/secure/daemons/servicesd"
// management daemon of time/disasters/scenario
#define TIME_D "/secure/daemons/timed"
// handles update events
#define UPDATE_D "/secure/daemons/updated"
// virtual daemon
#define VIRTUAL_D "/secure/daemons/virtuald"
// handling vote security
#define VOTE_D "/secure/daemons/voted"
构架lib 最先要考虑的不是针对一个游戏 而是一个游戏支持所必需的内容 连接 服务 和表现 而我觉得 可扩展性 在经历这么多年以后 对于Mud而言 已经日益重要
1.指令
是玩家接触mud world的直接界面 没有好的指令 就算这个角色不是blind 也会感到看不到东西的感觉 所以最基本的指令 是look say quit who 等等 注意say代表的是交流的意思 而不是现在mud的含义-"说"
2.数据保存
正式开启mud world的时候必须考虑的问题 你可以使用传统的文件保存方式 也可以采用msql/mysql数据库方式 要注意的是 不要以为传统的方式是一个无效的或者无能的方式
不过利用高效的mysql方式 还是比较好的 这里的数据 不要单纯的认为是玩家本体的数据 一个mud不单单只有这些数据 更多的数据可能出现 比如地图(rooms) 动作(emotes) 物件((objects) 技能(skills)
3.安全系统
传统的es安全模式借助于uid系统,这是快10年的系统了。而每个LPC Library都可能会有自己的系统。注意一个mud往往有三部分构成 分的比较明白的就是mudos 还有两部分是 LPMud 和 LPC Library 的说法。比如常说的 ES TIM-II NIGHTMARE 都是LPC LIbrary
而ES3 就是 ES LPMud,比如fy3这个LPmud 使用的ES lib library。安全的做法很多 而且没有一种是绝对安全的 毕竟这个mud系统先基于unxi更基于internet。但是目的只有两个:安全和使用性。安全是指能保证原创者的利益,使用性是指能发挥使用这个LPC lib的人的自主性,不要单单认为是设计者或者是大家说的巫师(wizard)。
4.角色系统
如果你的lpmud不需要角色,那么这个可能对于你是无足轻重的。如果你要求体现完美的人物特性,那么复杂而不冗余的系统是需要的。一般角色所要表现的东西都应该考虑一下。传统需要的是 表现 生命 动作和交流。
5. 战斗系统
首先 确定你的lpmud是否需要战斗 这里的战斗是指比较复杂的战斗 包括西方的魔法和东方的战斗 都是战斗。战斗系统的表现方式有很多种 需要提醒的是 心跳并不是唯一处理战斗的方式。就好像现在很多游戏都使用既时系统 但是还有很多的游戏在采用回合或者半回合的方式。ES的lib比较东方化 但是带有明显的西方mud的特性 就是心跳来处理普通技 而传统武侠是没有skill perform的区分的。记住,没有心跳一样可以战斗。战斗要处理的事情就是 怎么决定出手(心跳是AI处理的一种途径) 怎么决定结果(伤害 回避等等) 怎么决定仇杀等等 表现方式(描述)
6 网络服务系统
更多的服务被包含到intermud3中,mudos显得更像是一个server服务提供者,最多可以达到4-5个端口,可以用来提供包括http/mail/ftp/finger/telnet/等等服务 其实我们可能根本不需要这么多 一个最基本的telnet或者ftp用来处理一些文件服务 一个简单的UDP交流可以用来保持相关mud之间简单交流。另外 文件自动更新功能 数据统一风格 分站区域互连和漫游也在考虑的范围之内
7.时间系统
一个时间系统,用来保持整个Mud的发展,天气/灾难/故事的发生都可以归纳到这一类。良好的时间系统可以用来纪录mud world的历史,这方面参考国外的mud可以收益良多。好的系统已经出现了时间 天气 季节 区域 灾难等等的结合。东方太阳西方雨。
一些基本的设置用来维持一个LPC lib,而作一个LPMud,还需要更多的变化和环境。不仅仅是一个LPC lib。就好像一个linux系统 单单只有内核是不行的。