	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 參觀看看，至於要如何取捨就全看自己所需了。
