使用Inform7创作互动式小说:世界的雏形
2014-08-17如果对Inform7是什么还有疑问,请看我的前一篇文章: 使用Inform创作交互式小说。
概念说明
在Inform7中,关于"世界",也就是故事所发生的"地方",存在两个比较重要的相关的对象。一个是区域(reqion),另一个是场地(room).
对于"场地",Inform7为何用'room'这样一个词表示,我是不知道啦,一开始还比较疑惑呢,以为它就是表示一个"房间",后来随着逐渐的学习,才发现它要表示的应该是"场地"才对——之前考虑过使用"场景"这个词,后来发现在Inform7中,还有专门表示"场景"的对象,除了地点外,一个场景还包含了某个开始和结束时刻,所以这里用"场景"来表示'room'是不合适的。
以下是相关的一些概念:
场地(room)
表示 具体 的某个可见的地点,是 主角 移动时的最小单位。
描述(description)
对场地、区域以及物品的描述,用英文双引号("")括起来,作为对这些对象的描述,会在游戏进行时作为展示给玩家的信息。
场地连接(connection)
通过类似"A的东方是B"这样的语句可以创建A和B之间的连接,产生一条联通A和B的路径。通过这些连接,可以将众多的"场地"连接起来,构成一个完整的"世界"。孤立的、无法到达的场地是毫无意义的。
区域(region)
区域通常是 若干个场地的集合 ,通过将一些场地聚合在一起,可以在之上定义普适于这些场景的一些规则。
下面就通过实际的例子来讲解这些概念的实际使用吧。
开始前的设定
首先,就以我的学校华中科技大学作为参考来进行世界的设定吧。简单起见,就使用沁苑、西十二教学楼以及其中一个教室N206这三个地点作为具体的场地吧。
创建场地
首先,创建"沁苑"这个场地吧:
Qinyuan is a room. "Qinyuan is a quiet place. Students of the Faculty of Computer Science and Technology live here. There is a east-west direction road called Bauhinia Road. Go along this road and you'll arrive at The West Twelfth Teaching Building."
后面用双引号括起的就是场地的描述。
需要注意的是,在Inform7中,一个完整的语句最好都以表结束的标点结束,如句号(.)、问号(?)或感叹号(!),像这样定义场地或其他事物时,是以句号结尾的。
创建场地除了明确地用'is a room'声明,还可以通过下面这样的方式隐性地创建:
The West Twelfth Teaching Building is west of Qinyuan. "There is a statue of Lao tze in front of The West Twelfth Teaching Building. A arrow on the ground says 'Go N206'."
在创建场景时,可以用的表示方向的词有: north, south, west, east, northeast, northwest, southeast, southwest, above, below, inside, outside.
比如说,教室N206是在西十二教学楼内部,就需要使用inside:
Classroom N206 is a room. "Classroom N206 is a normal classroom, it can hold 100 students." Inside from The West Twelfth Teaching Building is Classroom N206.
在这里,'from'这个词很重要,它表示这个语句是将两个场地连接起来,而不是在一个场地内创建一个物品。
双向连接与单向连接
在刚才,我们创建了一个连接,在'Qinyuan'和'The West Twelfth Teaching Building'之间产生了一条路径。对于这条语句:
The West Twelfth Teaching Building is west of Qinyuan.
Inform7会确切地知道在'Qinyuan'这个场地中,向西可以到达'The West Twelfth Teaching Building',同时会推测,认为'The West Twelfth Teaching Building'向东可以到达'Qinyuan'。
如果要创建一条单向连接,如让'The West Twelfth Teaching Building'不能到达'Qinyuan',可以这样设置:
East of The West Twelfth Teaching Building is nowhere.
创建区域
区域的创建和场地的创建差不多:
The Huazhong University of Science and Technology is a region. Qinyuan, the West Twelfth Teaching building, Classroom N206 are in a region called the Huazhong University of Science and Technology.
区域允许嵌套,但前提是被包含的区域必须被完全包含,即它不能有包含它的区域所没有的"场地"。
名字缩写
像这两个名字都太长了,不方便输入:
The West Twelfth Teaching Building The Huazhong University of Science and Technology
虽然在IF中可以简单地使用表示方向的词来进行移动,但使用'go'命令并跟随具体的场地名也是一种移动方式,应该考虑到这个,而在Inform7中,像'go'这样带参数的命令,只会解析其参数中的前9个字符,像上面这两个名字显然有点太长。
通过'understand'命令可以指定缩写:
Understand "HUST" as The Huazhong University of Science and Technology. Understand "C12" as the West Twelfth Teaching Building.
一图胜千言
上图:
源文本:
实际运行:
讲的比较简单,实际上各个环节都还有大量的细节,我也还在学习中。