第 一 章

觀 念 篇


認 識 自 己
--什么是巫師?
  巫師是創造者,程序設計師,負責創造玩家眼里的游戲世界。你可以創造任何東西, 這也使得巫師這個位置顯得很重要且需擔負很大的責任。當一個巫師代表你可以在瞬間取一個玩家的性命,對游戲系統造成很大的損害,或是建立一個人間天堂。任何你想得到的都可以做到。
  在目前的大陸,專職的巫師是很少見的。這恐怕主要是因為MUD這個游戲還沒有一套成熟的商業運營機制來使它產生經濟效益,并以此養活那位專職的巫師吧!大多數巫師都是走的“玩而優則巫”的道路。很難想像:一個從未玩過MUD的人會有多高的熱情和動力去承擔如此艱巨、而且是無報酬的工作。但并非說玩得好的玩家就一定要去做巫師,有人就是天生的玩家。流行的對于巫師有專職與兼職之說,這是指在一個MUD與兩個或多個MUD擔任巫師之分。我們的觀點是堅決反對兼職巫師的,以下摘錄的一段文字很能代表我們的看法:
--------------------------------------------------------------------
: 對于目前大部分的wiz兼職實在對于大陸泥巴這個freeware 是最大侮辱了
: 我對于巫師的看法就是該誠懇的,勤奮的,付出在自己最熱愛的一個mud
: 而不該去其他的mud尋找所謂的新的創意,或是一個等待開發處女,如果
: 大家的目的是需要提高中國泥巴的整體水平的話,大概你一個單兵作用不
: 大吧,那可需要的是一個整體的力量。
: 兼職的巫師本身就是一種浮華的類wiz ,他們有點技朮,熱忠于這個那個的
: mud串門做個嘴片子,本身精力也許很多,有任務也許完成,下網了就也許
: 滿足于自己名片頗多。
: 如果要獲得新的想法,需要在其他mud當巫師才能獲得嗎?那不是成了看別
: 人的工作成果,“啟發“自己的新想法?這...
: 如果覺得另外一個mud比現在所在的mud 更能體現自己的想法思路或風格,
: 那: 堅決的全身心的投入到那個更理想的mud里哪,如果覺得現在呆的mud
: 沒發展了。那呆著也是惹那一身煩嘛!居然有人在自己不喜歡的mud里當
: wiz ,這...
: mud 本身就是體現一個創作群體的思想,現在大家對于mud的觀念特奇怪,
: 做wiz 的等待admin發任務,admin 抱死自己的權利,不去發現wiz們的長
: 處而只知道門派、地圖、daemon的下任務,有技朮的wiz抱怨工作簡單、無
: 聊,需要提高的wiz抱怨石頭太硬。這就導致了巫師這個群體成個很官僚的
: 狀況,如果大家真心的做個mud,又何至如此呢。
: 還有就是兼職也導致侵犯某些codes的作者的權利,甚至有人拿著這邊的程
: 序到那邊去申請職務,這...
: 如果大家真心要把自己做的門派,或是得意的程序奉獻給大家,那建議把
: 那些程序放到自己的主頁上呀,好壞自有公論嘛,而且大家在你的主頁上
: 經過討論,或者對你是個更大的提高呢,這樣大家知道是你的程序,覺得
: 保証你的權利。freeware,sigh,到了中國這個福地,什么都變味了,人們
: 換著法子的保護自己署名的權利,更大一群人拿著去掉開發者的署名的程
: 序做開發. 這... 是freeware 的精神嗎?限制巫師兼職根本就不是一種可
: 以用來限制的條件,只是一相情愿的愿望而已。(有刪改)

※ 來源:·BBS 水木清華站 bbs.net.tsinghua.edu.cn·[FROM: 166.111.54.141]
---------------------------------------------------------------------

--巫師的觀念:
  巫師是什么?巫師并不是神,神只是提供我們服務器、提供我們站點的人物,在我們這里,他們被定義為(gods),真正的巫師都是同玩家一樣通過遠程登錄上去的用戶──只是一個擁有較多權限的超級用戶而已。因此本質上也是一種高級的玩家,但他所遵循的原則卻要絕對地高于玩家。
****
爭吵
****
  巫師:永遠不要與玩家爭吵。如果你覺得自己錯了,請于第一時間去改正它,第二時間再向玩家說明。要是覺得丟面子的話,就保持緘默吧。如果你覺得自己沒錯,就不要理會,對方再糾纏下去干脆 kickout....有些事情是越爭越越亂、越爭越糟糕。還有一點:你如果上線時手頭有事情要處理或者沒有二十分鐘以上的閑功夫,奉勸你不要現身,隱身處理事情算了。
  玩家:永遠不要與巫師爭吵。如果你覺得自己對的,盡可能地去post或mail,如果覺得自己未被重視受到了傷害又不大可能得到補償,你可以拒玩這個站點。如果你發現是你自己錯了......你完了.........
****
要求:
****
  巫師:永遠不要對玩家提出要求。如果你覺得確需限制,就直接設計出程序,只要他們在規則的允許之內,任由他們發展。一個好的巫師是完全通過他的程序來實現對世界的調控,而不是言語。話多的巫師工作將會很累很累。
  玩家:請不要對巫師提出出格的要求。這是一種很不健康的思想,理論上,玩家與巫師應該是有某種正式的溝通管道,而盡量減少私底下的交易。也就說,巫師應該只是制訂規則、寫區域、管理維護MUD,而盡量減少介入玩家的生活或成長過程。玩家也應該要盡量不要要求不在巫師工作范圍內的事情,最常見的就是向巫師索取仙果、詢問打開暗門的口令、某個秘密人物的所在。這種要求直接導致你在巫師心目中的評價直線下降。如果牽涉到要求改武功、提經驗的地步的話,可能會帶來進行坐黑牢的懲罰。而在此,我們還得指出一點,對于巫師來說“勿以惡小而為之”,最好的辦法就是做一個鐵石心腸的家伙,拒絕一切超越工作范圍的事,否則,你還是去做一個“新手指南”的玩家好了。
****
脾氣:
****
  巫師理論上不應該有任何的脾氣,這也許有點不盡人情,但是我們對每一個巫師都這樣建議,上線前深呼吸几次。一上線先hihi,遇到事情先hehe,實在脾氣上來壓也壓不住時,你干脆就quit再拍桌子跺腳大叫几聲:“老子再也不做巫師了!”然后心平氣和地再 login進去,巫師當然還得做、程序也還得寫、丑話還得聽。人們不是常說:“我們都有情緒因為我們不是神仙”,哈哈!現在你一在線,你就已經是神仙了。所以........
****
動力:
****
  一個純義務的、沒有報酬的工作,初期的那份新鮮勁會隨著沒完沒了的程序、函數而消磨怠盡。因此你得不時地給自己尋找動力。善始善終,巫師應該是程序員屆最能考驗人的工作之一。
****
水平
****
  怎么你也得了解一下 MUDOS吧?實在不行,大致有個概念也成。對于 LPC你總弄懂吧?你所工作的MUDLIB不看完也說不過去吧?也許你目前還不行,但你若真的想當一名好巫師,你就得朝這個目標去做。
──巫師權限簡介:
  大總管(gods):這個級別的比較特殊,一般是由你服務器所在單位的工作人員或管理人員擔當。嚴格意義上,只有他們是神。神可以什么事都不做,卻可以決定任何事情。不要去向神要求什么?你所要做的事除了溝通就只有祈禱。當然,對于神來說,除了到處goto和參預巫師頻道的討論外,他們也不必要過多的檔案處理權。因為服務器就在他們的身邊,任何制約對于他們來說都是可笑的,“神打了個呵欠,地上就刮了三個月的風暴”.........
  天神(admin) :游戲的實際管理人,在游戲中所有事情的最后決定者。事實上他們只是神的使者的意義。天神唯一的限制就是不能(確切說應該是不准)修改 /LOG 下的文件,那里只有真正的神(大總管)才能通過服務器的操作進行刪除。
  大巫師(arch):天神的助手,一般都是由熟悉系統架構的人來擔任的。大巫師也是執行多數區域的 QC 的人選。只有一些涉及系統更動的問題,才必須通過天神進行更新操作,大巫師與天神沒有職責上的區別,只有處理權限的不同。
  巫師(wizard):寫區域的人, 請乖乖的遵守所有的巫師規則.
  巫師學徒(apprentice):練習生。在這個階段,你的工作是先熟悉環境和相關規定。調適一下你的心態,并確實的知道當巫師所負有的責任.

--一些見議:
  當巫師好像是在當創造者,任何你想得到的東西都可以通過程序做到。因為這樣,請你動手前務必多想想,先把后果想清楚了再做。如果不幸出了些差錯,也請完完全全地負起責任并承擔后果。永遠記住,你的一舉一動,不論大小,對這個游戲都將造成一些影響,請盡量讓這些成為正面的影響。
善待你的同事并尊重你的上級,巫師級別的划分并不一定是完全反應著能力的高低。而實際上略通編程技巧的人也都知道,一個wizard可以很輕易地把自己改為 admin,而事實上你也別去動這個腦筋。巫師守則的遵守只是靠相互信任與自覺。原理上,用程序我們是可以完成任何事情。系統中的各種防御及記錄體系也都是防君子不防小人的,但是我們不希望在程序中看到巫師物品,即使必須要有,一定要加上對使用的人的權限判斷,我認為有寫巫師物品的時間還不如多設計几個謎題算了。


認 識 工 作

--在開始制作之前
  讓我們大略看一下在LP MUD,即所謂戰斗 MUD中, 世界的構成方式。這個世界是由一個個的對象(object)所組成, 每個對象有一個對應的程序來描述它的特性。在游戲中所見到的每個房間,每個 npc,每個物品,甚至你自己,都是一個object,都是一段程序。
  我們首先寫出一段程序來創造出一個全新的對象,然后利用update來更新對象所屬的程序, 再用 clone來實際造出一個可用的對象。在這里所謂更新,就是將硬盤里這個文件編譯后形成一段代碼,這段代碼是存在于內存中的。在MUD中,程序只有進了內存方可執行。因此當你修改了或新寫了一個文件,那只表明你在硬盤上改動或創造了這個文件,你必須做一下update,將它編譯放入內存,你的修改和創造才正式生效。而clone命令其實就是update+move,因為它update的是一個物品或npc,這個物品或npc還需要有地方放。(看起來吃力嗎?沒關系,當你對 updata和clone的操作十分熟悉后,再想想這段話,你就會chat* oh)在系統里, 我們可以制作各式各樣的對象, 但是都可以將之划分在三大類里面: 房間、物品與生物。在制作區域時, 我們習慣將區域放置在根目錄下的/d 目錄。房間的檔案就直接擺在區域的目錄下,生物與物品則擺在這個區域中名為 npc及obj的子目錄中。

--制作的基本品質要求
  所有的 MUD都有自己的風格、發展方向、跟程序品質的要求。由于這些東東與程序是否能通常執行關系不大。有時僅僅只是一些個人習慣而已。作為MUD這么一個集體創作的作品,這種習慣就有必要有一個集體性的統一,這種統一大約是隨著主持這個 MUD的admin而異。事實上又由于每個admin對mudlib的了解程度不一,所以對品質要求的深度也不同。以下是我們“無錫 MUD巫師組”對各位新加盟的巫師的品質要求:
****
命名
****
  命名的一個基本原則就是簡單直觀。一般我們要求使用中文的拼音,如果其英文名很熟知并確實比拼音短小直觀的情況下,也可使用英文,當然也包括那些已經約定俗成的如:room、eat、food、cloth等。在使用拼音時,要遵循下列要求:
1,請盡量保証發音准確,沒把握請查字典﹔
2,兩字詞直接連寫,例:大門 damen.c,超過兩字請使用隔斷符號進行間隔,以免出現難以辨讀的情況。
3,隔斷符號分“_”和“-”兩種,它們兩者的區別在于前者兩邊的關系是修飾的、而“-”兩邊之間的關系是并列的。東客房可以寫成dong-kefang或者是kefang_dong,兩者之間的區別相信不需要我再多說了吧。
4,四字詞應在兩字中間用“-”隔開,象wuxidayu應該寫成wuxi-dayu。三字詞請選擇好隔斷的部位。象老管家lao-guanjia就不能寫成laoguan-jia,這些看起來似乎有些羅嗦,但的確是必須養成的一種良好習慣。
  此外,命名最好形成統一的規范,不管在哪里當巫師,一定要先仔細看一看那里的大部分文件的命名格式,盡可能地與前面的文件相融合。
****
目錄
****
  目錄原則上沒有什么過多的限制,有一些傳統,你可以通過閱讀整個系統的文件來看明白。一般的區域放在/d目錄下,每一區域中下面再包含npc與obj兩級子目錄,用于放置這一區域里的人物與物品,一般不要再增添其它的有關子目錄,而可以教授武功的人物請放在/kungfu/class/下的同名稱的目錄下,我們所要提醒的一點是,在新的區域目錄的設置上要相對合理,里面文件過少,就請合并至相近的一個目錄中,如果太多,也要盡量拆成兩個目錄。以免給日后對該目錄的操作造成不便。
****
程序
****
  程序語言相當簡單,但是良好的習慣必須在一開始養成。
1,程序必須縮排整齊,縮排一律用 tab (相當於 4 的空格),雖然縮不縮排無關程式是否能夠執行,但是如果你是一個只求程式執行正確,而不管別人是否容易閱讀,在 Mud這樣一個由多人共同發展程序的環境中將會十分惹人反感。

例:請采用類似
  if(...)
  {
    if(...)
    {
     ...
    }
    else
    {
     ...
    }
  }
  else if(...)
  {
   ...
  }
  else
  {
   ...
  }
  的風格,不要采用
  if(...){
   ...
  }
  這樣的風格。有人也許會說,我看很多正規的程序員就不這樣子嘛!但是你別忘了,LPC是一種特殊的編程語言,它還有有它特殊的工作環境。一是,它的程序有可能會經過很多的人閱讀與修改,二是它經常要在zmud這樣的客戶端軟件下進行遠程的在線逐行修改,到了那時你就會對這樣的規范體會頗深了。

2,開頭的注釋行并不是可有可無的,最起碼得讓你的同事對這個程序有疑問時知道找誰?并建議是加上編寫和修改的時間。

  // 該文件完整的絕對路徑 中文名稱
  // 作者完成或者是最修改日期
  // 如有對該文件的重要說明,請寫在這一行

3,對于房間的描述應該整齊划一,至少在同一區域下的場景描述都需保持一致。每行控制在57至61個字節之間,建議人物20個字,房間30個字一行。對于人物的描述,出現的信息提示也遵守這種規則。

4,檔案路徑名稱最好和絕對路徑無關,這樣當你的程序在整個目錄被移到另一路徑下后仍然能夠正常運行,為此你可以用 __DIR__ 這個由MudOS提供的巨集定義表示這個檔案目前所在的目錄(__FILE__表示目前這個檔案的檔名),即使移動之后必須做修正,最好也限於某個 .h 檔案。

5,檔案中盡量不要直接調用其它目錄下的 NPC 或 OBJ ,為擴展性著想,至少房間一定要調用自己目錄下的。當然 /CLONE 目錄下的除外,如確需要,請直接在自己的目錄下復制一份。如果確實發現各個目錄對該文件的調用率很大,不妨申請大神直接在 /CLONE 目錄下設置。

6,語言風格也許與寫作的各個人有關,但是我們這里的金庸風格是十分明顯的,什么該有,什么不該有,最笨的方法就是翻翻原著。我們不希望在你創造的區域發現一塊德芙巧克力或者是沖鋒槍。同時我們也希望區域的設計需要有相當的「原創性」,現在俠客行上衍生出的版本非常之多,我們不希望我們巫師只是在這其間東抄一點、西竊一點。能用自己想出來的東西,最好回避跟一些太出名的作品雷同的東西。在制作時,有關的地理、歷史以及相關小說應該是一個好的巫師的必備參考書籍。

7,所有的訊息必須正確而且適當,所謂「正確」是指基干一般常識必須無誤,例如:某人拉開一張桌子,自己看到的是“你拉開了一張桌子”,旁觀的人也能看到訊息,但卻應該是“某人拉一了一張桌”,各有不同。而如果是某人看到桌子心中不由一驚的訊息,旁觀的人就不一定能看到了。所謂「適當」是指訊息出現的地方、訊息的長短、標點符號、顏色、出現時間必須盡量合乎真實世界的情形,例如人物add_action的訊息應該要能適當地表達出動作者的立場,不能有看起來怪怪的感覺。寫作的時候,應該多想想:現實中應該是怎么樣的?

8,景物或物品的設置必須合理,如一株可以爬的樹你可以把它寫成房間的景物,也可以用一個物品來表示樹的存在(可以砍下來帶走),但是一個可以鑽進去的地洞就不應該寫成一個物品,雖然在程序上是可行的,但卻是絕不合式的。

9,人物的強度,也就是它的武功與經驗必須合理,我們的MUD雖然采開放式的屬性系統,但是另一個重點是:NPC和玩家是同一個世界的人,NPC 的作用不能作為它具有變態能力的理由,換句話說NPC的「強」必須有故事背景設定上的理由,比如根據天龍八部小說你可以把少林寺中的一個燒火頭陀設成罕世高手,但這必須要控制在嚴格的情況下需要在游戲中給予足夠的提示。任何應用上的牽強理由而設計的強力NPC會受到最嚴格的檢驗。( 請先參照各門派掌門的強度,作為假設的玩家強度水准上限,NPC沒有特殊理由不應該強過這些人,而且這種強度的NPC應該是十分「少見」的。)一旦由于某種原因你要將某一個存在的NPC調高,你必須要給玩家足夠的提示與聲明。

10、武器裝備的強度必須合理,和NPC相同,強力的裝備也就是寶物應該是十分罕見的,如果沒有適當的故事背景設定,強力的裝備會受到最嚴格的檢驗,而且這些裝備必須是極其罕見的,也要受到一定條件的限制。這里一個例子就是各種雜類的MUDLIB總會在一些好奇的巫師手中出現一些增加1000級的伏魔刀之類的東西,這些東西一旦出現,事實上將會對你(或者是原作者)精心構筑的整個MUD的武功系統的否定。

11、區域的大小與其中所含的「機關」必須成正比。在這里我們給出一個數字,如果你的區域每過10個房間,都全是一堆用房間編輯器做出來的改改敘述、名稱和數字的房間、NPC 、裝備或物品,那對于這種陽春區域,我勸你還是自己收回去欣賞、不要作任何通過你上級 QC (也就是對佻的程序進行品質鑒定)的可能性幻想。

  此外,還有一些編程原則是必須遵守的:
一、自己定義的函數,在文件開始最好有一個函數原型的定義聲明(聲明的作法就是在文件的開關几句將這個文件里所用到了自己定義的函數頭寫上,注意:末尾要加分號),每個函數前有一個簡單的說明也是基本的要求(也就是前面加//的注釋行,告訴別人,這個函數是干什么的,是在什么地方調用,如果別人要修改要注意什么)。而一些復雜的地方也最好加上注釋。因為在線解決問題時是經常要查看源程序的。

二、若要完成復雜的功能需要對/d、/kungfu以外的目錄增加或修改文件,需要先征得大巫師的檢查和同意。而在這之前,可以提請巫師組討論,看看有沒有更好的實現辦法。

三、做復雜的物件時,盡可能將一些日后可以通用的功能做成inherit或include,以方便以后的編寫。

四、為兼容性、穩定性考慮,除非迫不得已,不要直接調用你很少看見過的EFUN(就是一些由MUDOS定義的外部函數,你在整個 MUDLIB 是找不到它們的說明。)。