	v22 版 MudOS 说明文件使用说明

	几年来看 v21 版文件的人半个都没吭声，不禁怀疑到底有没有人想看 v22。
	废话不多说，说了没用，没人看。

	basic		- LPC 基础课本
	intermediate	- LPC 中阶课本
	advance		- LPC 高级课本，仅一章 optimization。
	lpc		- LPC 基础语法
			  constructs：	一些基本保留字：if, for, while, etc.
			  types：	各种变数型态：string, int, etc.
			  preprocessor：include 和 define
	concepts	- 某些概念，看了不见得有好处。
	driver		- 关于驱动程式本身的一些东西，当参考。
	efuns		- 外部函式，当字典查即可，疯了再去慢慢看。
	applies		- 应用函式，驱动程式对 mudlib 呼叫的函式，建议同上。
	ref		- 不知道从哪来的某些资料，当参考。
	html		- 一些从 Tim Hollebeek 网页上偷来的东西，如果想知道
			  class, foreach, break 等东西的用法再来看。

	有些东西我没翻，我都翻完了以后的人吃啥？自己当作英文阅读练习，反正
	想搞程式设计的话，英文也该需要有点程度才行，多练习。
	
	最新的 MudOS 资料请查阅 http://www.mudos.org/
	所有资料仍以原始程式码为准，查不到的资料可以翻翻原始程式码。

	有问题别指望我解答，当医生就够累了。

	以下是 Passerby of Illusory of Time〈虚幻时空〉的一些话，就当作是本
	篇的序言。

	spock@muds.net		2000.Aug.29.

基本上我是开头废话普通多文中废话一串的那种，所以大概闲扯一下，我翻了一下
Spock 的文件大都是 DOS 的格式，所以我也采用 DOS 的格式来写这篇文章以求统
一性，基本上在 Unix（含 Unix like） 系统中还是可以正常阅读的，本文件是以
每个 TAB 算 8 个空格的格式写作，如果阅读时发生奇怪的现象可以自行调整看看
，开头的废话扯完了，来进入正题

有鉴于目前国内许多新生 Mud 纷纷倒站，其原因均不是出于被 crack 或是因为站
长毕业没线路以及机器损毁等问题，反倒是因为程式设计人员能力不足无法维护的
原因，这是一个相当不好的现象，我想台湾的 Mud  虽然比国外晚起步，即使如此
这种现象不断发生也相当不可思议，至少以相对时间来说，外国 Mud  也很少有此
类现象产生。观察了一阵子这类站台的生与死，发现相当多人并没有任何 LPC  程
程式写作经验就开始架 Mud，当然，要学会怎么设计 LPC  程式，最快的方式确实
是架一个 Mud 起来没错。

然而国内的现象并非单纯的“架起来研究”，他们居然一架起来就想立刻开放玩家
，想使用现成的东西来开站，这是一件多么离谱的事情，因此他们所使用的Mudlib
通常不是“原装的”，而是一些其他从原装 Mudlib 改来的，然后释出程式码，甚
至是想尽办法从别间 Mud  里面盗取出来的，说得难听点，国内很多站的站长根本
什么 LPC  程式都不会写，就是窃取别站的程式码最拿手，有些还根本不知道自己
拿到手的东西是窃取来的；没错，他们是使用别站现成的系统吸引了不少玩家，但
是他们有能力维护这个系统吗？答案是否定的，就我的经验来说，开放玩家的 Mud
站无论程式或是发展速度都会远比 wizlock  建设中慢上将近 10 倍以上，不要觉
得这个数字夸张，因为玩家不时会玩出许多 Bug 来，而对他们有利的 Bug 通常不
会回报给你，你必须花时间去抓，不仅如此，你还会发现许多玩家滥用指令造成系
统负担以及其他玩家不便的行为，你必须设法去限制与管理，玩家会跟你抗议 npc
难打，会跟你吵你的巫师欺负玩家，你改了一点点系统架构就必须牺牲一些玩家辛
苦练来的东西，或是你需要因为你改变一点点架构就必须花更多时间撰写转换程式
，诸如此类，即使是一个 Mud  程式老手都不见得应付得来，有的根本就因为这样
懒了就把整个站放给他烂，更何况是一个 LPC  新手？他们能做的只有到处寻访高
手，然而寻访到的人大都有自己的站要忙，根本无暇协助这些站什么，此时此刻只
好询问 LPC  程式参考文件该从何取得，当他们拿到这些网路上仅有的文件后又感
到不满意，第一是看不下去，第二是看了看觉得对他们的站一点用处都没有，开始
把希望寄放在坊间有没有在卖相关书籍，答案我想到现在西元两千年八月为止都很
明显是否定的。他们最后只能求助于一些只有一点点能力但是因为行为不正被别的
站所驱逐的巫师，他们认为多一个比自己强巫师的就是对自己的站多一份帮助，因
此巫师越收越多越收越多，然后发生许多巫师之间的斗争，譬如拿谁谁谁的 code 
到某某站去用，或是因为骚扰玩家然后公说公有理，婆说婆有理，闹到最后曲终人
散，自己的能力仍然没增强，换来的尽是失望和绝望，最后就宣布关站了。这是一
件相当可悲的事情，身为一站之长却必须看着手下的脸色行事，只因为自己没有能
力维护这个系统。

那么，该怎么进行 LPC 的学习呢？长久以来国内 LPMud 都是使用 ES2 mudlib 为
基本架构，大致上是以群组研发跟阶级指导为主的模式，因此大家都有一个观念就
是先去应征个小巫师，问问自己的老大跟同事，翻翻参考性的程式码以供学习，也
许这是这个 mudlib 被整理得这么适合阅读的原因，然而国内似乎与这个设想唱反
调，一方面是 ES2 mudlib 的安全架构常遭人诟病，一方面是国内 mud code 窃取
猖獗，很多站都限制了低等级巫师的阅读程式码权利，严重影响了想学 LPC  的新
进巫师，我不觉得这是一个好现象，然而许多站却非要这么做不可，我实在不明白
那个站的发展目的是为了什么，巫师群那么大，很明显就是 LPC 研发为主的 Mud
，却又把自己的程式码藏得紧紧的深怕被别人拿去以致于该站失去特色而没有玩家
，说实话我不觉得该站站长建立这样的架构让人觉得是用来吸引玩家玩的。看到最
后都是一些高层巫师的一票亲朋好友在那边当巫师，有的只会弄权不做事，有的则
是自命清高什么都不想写只想找基层巫师做事。基于目前国内这种现象，我认为应
该将 Mudlib 分为两大派系，即使目前仍是 ES2 mudlib 独大的局面：

	1. 巫师群组研发架构

	2. 玩家游戏走向架构

这两种架构在先天上就有决定性的差异存在，首先后者的巫师可以几乎说是没有，
几乎只能说只有站长跟一两个程式设计人员在管理 Mud，它的好处是撰写程式完全
不需要考虑到巫师权限跟任何 Mudlib 内部程式入侵的问题，因而能把 LPMud  的
功能发挥到极致，有许许多多方便的函式因为权限的问题被禁用或是限制，导致许
多程式码设计上的困难以及效能的损耗，相当不划算。目前国内站台几乎均属于前
者的架构，尽管多，但是不健全，就像之前所说的。因此明确的分辨出两种架构的
差异，也是克服这种现象的“其中一种办法”，我希望能有更多的人提出自己的意
见与想法并有人能够加以实施，才是挽救国内 Mud 衰败的首要目标。

在一个巫师群组研发架构的站，适度与适当的权限设计相当重要，不得严得过于离
谱也不能太松懈，以免居心不良人士伺机加入你的巫师群再毁掉你的站，创造这个
架构的站台必须要有相当的觉悟，必须花相当多的时间在权限的设计上。加入这个
站台的巫师等学习到一定程度，遇到许多系统架构与自己构想不合，以及某些功能
因为安全考量无法使用等问题，就只有三条路可走，一是努力取得站长群的好感以
争取加入站长群的机会，二是自己另开一个巫师群组研发架构的站，三是觉得自己
能力已经足以开发一个玩家游戏走向架构的站，以设计玩家游戏与介面为主。但是
他绝对不可能会想去另一个 Mud  当个小巫师，重头再来过，除非他未学成又爱作
怪被驱逐，不然一个程式能力高超的巫师是不可能在任何地方安于一个能力极低的
工作身份的。

我阅读过国内外各个公开释出的 Mudlib ，即使写作哲学跟系统架构各有不同，然
而都有一套共通的阅读方式可以帮助自己了解整个系统的运作，我将以条列式的方
式来陈述以方便阅读：

    * 熟练基本 LPC  程式码的操作，直到本文件（或原文）中的内容能完全
      融会贯通为止

    * 自己架设一个 Unix like 作业系统，并设法编译一个 MudOS 以及挂上
      Mudlib 成功的跑起来

    * 观察自己身边任何环境变动，给自己疑问，并自己设法找出这些变动由
      何而来，一切事物都不可能无中生有，必定要追溯到源头方可罢休

    * 尝试修改你已经认为理所当然的环境变动，让自己体会到在这个世界中
      你可以用你的程式能力改变一切，没有不可能办到的事情

我想这几个要点说来简单，短短几行而已，但是能真正彻底实行的又有几个人呢？
依据之前所说的，国内绝大多数的人都死在第一点，这也许让许多并未接触过 LPC
程式的人感到不可思议，然而事实却是如此，台湾许多 Mud  的站长从整个站的生
到死，才不过停留在第一步，甚至没走完

在此我建议各位千万不要使用大陆编译的 For Windows MudOS，一来别人编译好的
东西你很多东西不能修改，二来大陆 fool 的观念错误得十分离谱，还放些害人的
文件在里头，我是不清楚这是谁先开始的，但是从 v21c2 升到 v22pre11  直接去
把所有的 private 改成 static 是个相当愚蠢而且可笑的做法, private  的呼叫
要件就是 local function call，在 v22 后必须改用 local 函式指标呼叫了而已
，而不是以 protected 取代 private 。更好玩的是他们的文件教人这种方法处理
不能正常执行的 Mudlib：

    在 global include file 中加入以下两行：

	#define static		nosave
	#define private		protected

这种严重误导别人观念的行为相当不可取，甚至可以说是有预谋性的铺下全国性的
LPC backdoor，只要往后进入这类受骗上当的 Mud，从最基层巫师写个小 code 立
刻变身为站长级的权限根本一点困难都没有，我可以这样肯定，照着做的 Mud  已
经毫无安全性可言，大陆的 MudOS 甚至会将 Warning 在 local_options  中关闭
，让你收不到许多编译或执行时的警告讯息，误以为那种写法毫无问题。

而前面第三与第四项中提到的环境变动，举例来说，像是你 login 一个 Mud ，为
什么进去会显示进站画面，进站画面为什么要取那个档名才读得到？为什么有的系
统会把玩家物件分为两个？为什么你输入的密码系统可以确认是正确的？为什么你
创造新角色的时候会有那些选项跟问答？为什么你进站之后会自动 look ？又为什
么房间程式码那样写以后玩家使用 look 指令就能读得到？为什么 l  可以代替原
先的 look ？懂得怎么给自己问题，懂得发问或是翻阅文件的人，很容易就会因此
而在数天之内进步神速，事实上光以口述加上纸笔说明教会一个人 LPC  只需要六
到八个小时，之后全看他个人造化，也就是阅读现成的程式码。当然，阅读了够多
的程式码，并写懂得修改自己身边的任何环境变动之后，就可以自己创作一个新的
 Mudlib 了，事实上这并不困难，要花的时间甚至比修改现成的 Mudlib 还少，有
兴趣不妨试试，创作方式很简单，怎么开始玩的就从哪写起，缺什么就写什么，至
于究竟怎么创作？光说就没用了，当你熟悉过一两个系统之后，你自然就会知道整
个 Mudlib 起源于哪，我还是在这里给个起头，先从如何登入系统下手。

最后，在这感谢 Spock 为我们翻译了这些 v22 文件，以方便新一代的新巫师学习
以及 LPC  老玩家进一步的中文资讯，省下阅读原文的时间，目前 Matt Messier 
接手了 Tim Hollebeek 的 MudOS 计划，目前已经将 MudOS 修正到了 v22.2 beta
的版本，除了修正许多原有的 uid/euid 系统的 Bug 之外，也加强了对 virtual
系统的支援，虽说 MudOS 求稳定就好，但是那不过是无聊的理论罢了，对 MudOS
的 Bug 想要 report 的也可以到 www.mudos.org 里去回报，他都会尽快将其修正
于下一个版本，当然你使用的版本很旧那他大概也只能请你换新了。MudOS 除了在
国外有新的进展之外，国内的 Annihilator 也正在进行 neolith 计划，有兴趣的
可以到 es2.muds.net 参观看看，至于要如何取舍就全看自己所需了。
