简介

MudOS v21c2

基础 LPC

撰稿: Descartes of Borg
23 april 1993

简介

如何使用此份手册及使用的名词

最近, 在 USENET 上面, 我看到许多人寻找 LPC 的使用手册. 而且在我 mud 上的神族 (immortals) 也曾经告诉我 Nightmare 的架设文件有多好. 但是在那些文件里面, 并没有适当地解释 LPC 程式语言. 所以我决定试着撰写一份使用说明. 有些事情你必须谨记在心.

LPC 是一种非常易於学习的程式语言, 而它真正的价值也如我们在现实世界所知的一样. 我从 1991 年开始玩 mud, 并於一个月内, 在名为 Orlith 的原 Bates College MUD 中, 创造出一个不起眼的区域和乐师公会. 之後, 我搬到洛杉矶 (Los Angeles) 一年, 完全没有碰电脑或玩 mud. 在 1992 年六月, 我回到 Internet 并担任 Igor 的巫师. 在 1992 年九月, 我开始撰写 Nightmare mudlib  以符合我们的需要. 因为当时 MudOS 上并没有任何 mudlib 能让人直接拿来跑, 所以後来决定把它公开出来 (当然, 现在可不是这样 :)).

所以我只有不到一年的时间认真地撰写程式. 如同主修资讯科学的人他们的哲学, 我只想搞清楚, 要完全搞懂 LPC  程式写作, 只需要 login 到 mud 中. 在此份使用手册里, 我们假设:

有人已经教过你最基本的 UNIX 命令, 例如: ls, cs, mkdir, mv, rm 等等. 你知道如何进入你的 mud 中的文字编辑程式, 并且储存一个档案. 除此以外没有其他的要求. 如果你熟悉 C 语言, 你反而会发现 LPC 虽然很像 C, 却又不是 C. 你以前对於模组化程式设计发展 (modular programming development) 的观念还会扯你後腿. 如果你从来没听过 C 程式语言 (像我在 1991 五月那时一样) , 那你只缺基本的 C 结构, 像是程式执行的流程、逻辑运算子的规则等等东西. 所以先前学的 C 对你而言并非有利, 因为能够从 C 拿来用在 LPC 上的东西, 要学起来非常容易. 熟悉 C 跟 LPC 一点关系也没有.

这份手册分成若干章节, 表示你应该按顺序阅读它们. 先读这份简介, 再按照 chapter 那个档案里面所列的目录依序阅读. 每一章开始都有一个或两个段落, 解释你在该章节所应该了解的东西为何. 在这些简介的章节之後, 就开始针对此章节的主题作令人厌烦的详细解释. 在各章结尾, 会就你应该从此章中学到的东西下个简短的结论 (如果我写的内容能让你了解的话) . 接着, 也许会有一些跟主题有关的注解, 而你并不需要去搞清楚注解内所讲的东西.

如果你按照顺序一章章研读过来, 碰到某一章的简介说你这时应该懂某些东西, 而你却搞不懂的时候, 请寄信给我吧 ! 很显然, 我在这里写的内容没收到该有的效果, 我得弄清楚我哪里写错, 才能把错误的地方订正过来. 如果某一章的总结说你在看完该章後应该学会什麽而你没学会, 一样寄封信给我吧. 如果你的mud 在 intermud 系统里, 就寄给 descartes@nightmare. 不然, 寄给 [email protected] 即可.  (译按: 台湾的 intermud 系统通常寄不到美国的 mud. 而 [email protected]  是 1993 的地址, 已无法使用, 请改用 [email protected] )

一些手册中用的基本名词:

driver (驱动程式) -

这就是游戏的 C 程式. 它接听 socket (与其他电脑通讯)、翻译 mudlib 定义的 LPC 程式码、管理记忆体中的 mud 物件 (object)、定期试着从记忆体里面把一些没用的 mud 物件清掉、定期呼叫物件等等, 都由它负责.

mudlib (mud 函式库) -

定义 mud 世界的 LPC 程式码. driver 本身不是游戏. 它只是一个创造多人环境的程式. 就某方面来说, driver 就像是一个 LPC 的编译程式 (compiler), 而 mudlib 像是编译程式的函式库 (library) (这样比喻不太好). mudlib 定义一些基本的物件, 而创造 mud 世界的人重覆使用这些物件. 举例来说, 像是 /std/room (或 /room/room)、/std/user.c (或 /obj/player.c) 等等物件都是.

area (区域) 或 castle  (城堡):

mud 创造者撰写的某些物件, 这些物件用到 LPC「继承」(inheritance) 的功能, 具有基本 mudlib 物件的特性, 并转换成玩家在游戏里面使用的物件.
 
object (物件):

房间、武器、怪物、玩家、袋子等等所有的东西. 更重要的是, 每一个名字结尾是 .c 的档案都是一个物件. 每个物件有不同的用途. 像是 monster.c 和 user.c 这两个物件继承 /std/living.c 这个基础物件. 而基础物件以外的物件则有的拿来复制, 也就是在记忆体中再载入一份相同的程式码; 有的则只是载入记忆体, 而被其他的物件拿来呼叫 (reference).
 
native (原始) 及 compat  (精简):

这两个名词与最常用的两种 driver 有关系. 原始模式的 mudlib 用於 LPMud driver 3.0  以後的版本. 精简模式指的是: 你可以拿一个 2.4.5 型式的 mudlib 配合 3.0 的 driver. 原始模式的 mudlib 指的是 MudOS、CD、LPMud 列出的原始模式 mudlib. 而精简模式的 mudlib 指的是 3.0 以前的 LPMud mudlib 和 3.* 精简模式 mudlib. 我认为 Amylaar 的 mudlib  属於精简模式.

祝你顺利 !

George Reese
(Descartes of Borg)
12 july 1993
[email protected]
 (译按: 已改为 [email protected])


译者: Spock of Final Frontier  97.Dec.21.

回到上一页