发信人: jytjytjyt()
整理人: zhangsf(2000-01-03 18:36:25), 站内信件
|
迷宫的制作帮助文件:
vrm_help
关于随机虚拟迷宫的写作
迷宫是一个游戏里经常要用到的东西,以前的迷宫都需要
巫师一个房间一个房间地手工绘制,费时费力,而且一旦
被玩家找出正确的线路,迷宫格局被泄漏,迷宫就不称其
为迷宫了,所以巫师们都绞尽脑汁把迷宫设计的尽量复杂,
但再复杂的迷宫早晚也会被找到正确的路线,而且过于复
杂难走的迷宫也使玩家感觉过于繁琐,降低乐趣。因此在
本游戏里我们产生了虚拟随机迷宫的概念。
我们的迷宫莫认为是一个由虚拟房间组成的正方形的迷宫,
比如设定单边长为10,也就是我们要创造一个10x10 有100
个房间的迷宫,而迷宫中房间之间的连接方法是由我们的
随机迷宫生成器,参看图 1,迷宫主物件完成对迷宫各项
参数的设置,这个物件需要继承:inherit VRM_SERVER;
(可参考/d/chang/didao.c 这个迷宫)。这里我们假设创
造一个树林迷宫,我们就把虚拟迷宫主物件起名为 shulin.c
在主物件中我们用 set_maze_long() 这个函数来设定迷宫的
单边长,这里我们要创造一个10x10的迷宫,因此 set_maze_long(10);
来设定。我们要求迷宫的入口方向在东面,在主物件中函数
set_entry_dir() 用来设定迷宫的入口方向,因此在这里我
们 set_entry_dir("east"); 来把入口方向设定在东面。而
出口方向为了保证迷宫的复杂度,我们默认在入口相反的方
向,这个例子就是西面,由于是系统默认,因此不需要我们
再设定。为了保证创造出来的迷宫尽量的均衡,我们把入口
尽量选择在进入面的中间位置,而出口我们在对面随机选择
一个,如图 1,我们用 ● 来表示入口和出口房间,而出口
和入口是随机得来的,也就是它的文件名是不固定的,而区
域房间要与此迷宫相连需要有固定的文件名,因此主物件还
要创造出两个固定名字的房间用来衔接迷宫和区域,迷宫入
口与区域的连接的房间我们规定为 entry ,迷宫出口与区域
的连接的房间我们规定为 exit ,这样区域房间就可以固定的
于这个我们创造出来的迷宫想连接了。在主物件中由一系列的
函数用来设定浙两个特殊房间的属性:
set_link_entry_dir()
用来设定 entry 与区域连接的方向,因此在这里我们
set_link_entry_dir("northeast");
set_link_entry_room() 函数用来设定区域与 entry 连接房
间的文件名,我们这里假设区域房间为与主物件 shulin.c 同
目录下的 xiaolu.c,因此我们 set_link_entry_room(__DIR__"xiaolu");
而区域房间 xiaolu.c 的出口设定 set("exits",...) 里我们
要加入 "southwest" : __DIR__"shulin/entry", 这个 mapping
使其与迷宫的 entry 相连。
set_link_exit_dir()
用来设定 exit 与区域连接的方向,因此在这里我们
set_link_exit_dir("west");
set_link_exit_room() 函数用来设定区域与 exit 连接房
间的文件名,我们这里假设区域房间为与主物件 shulin.c 同
目录下的 dashan.c,因此我们 set_link_exit_room(__DIR__"dashan");
而区域房间 dashan.c 的出口设定 set("exits",...) 里我们
要加入 "east" : __DIR__"shulin/exit", 这个 mapping
使其与迷宫的 exit 相连。
set_inherit_room()
函数用来设定迷宫里房间所继承的物件,在这里我们用
set_inherit_room( ROOM ); 来设定其继承标准 room,
set_entry_short();
函数用来设定 entry 房间的短描述,在这里我们
set_entry_short("小路旁");
set_entry_desc()
函数用来设定 entry 房间的长描述。在这里我们
set_entry_desc(@LONG
这里是少室山的半山腰,东北方向是一条崎岖的小路,向西
面望去是一片小树林,不时传来声声鸟鸣。
LONG
);
set_exit_short()
函数用来设定 exit 房间的短描述。在这里我们
set_exit_short("树林尽头");
set_exit_desc()
函数用来设定 exit 房间的长描述,在这里我们
set_exit_desc(@LONG
这里是一块洼地,东面是一片小树林,西面是一座大山耸入
云端。
LONG
);
**********
当然我们还要来设定迷宫房间的长短描述:
set_maze_room_short()
函数用来设定迷宫房间的短描述,这里我们
set_maze_room_short("小树林");
set_maze_room_desc()
函数用来设定迷宫房间的长描述,这里我们
set_maze_room_desc(@LONG
这是一片浓密的小树林,小鸟的鸣叫声和风吹过竹林的沙沙
声交织成美丽的大自然的旋律。地上杂草丛生说明这里很少有人
来。
LONG
);
**********
还有一些其他的函数:
set_outdoors()
函数用来设定迷宫房间(包括 exit 和 entry)是否维护外。
我们刚制作的迷宫为树林,所以我们 set_outdoors(1);
其他请参看例子。
********************
《本游戏关于随机迷宫的一下规定》
游戏区域制作中凡是遇到迷宫的地方必须使用随机虚拟迷宫。
迷宫的单边长不能小于 5,太小了失去迷宫的意义。我们一般
使用的迷宫为单边长 30-50,根据区域设计的故事情节而定。
如需使用单边长超过 100 的迷宫,须想负责此区域的 arch
申请。
Find.
北
◎─◎─◎ ◎─◎─◎─◎─◎ ◎ ◎
│ │ │ │ │ │
◎─◎─◎ ◎─◎ ◎ ◎─◎─◎─◎
│ │ │
◎ ◎─◎─◎ ◎─◎─◎ ◎ ◎─◎
│ │ │ │
◎─◎─◎ ◎ ◎ ◎─◎─◎─◎─◎ 区域
│ │ │ │ │ │ /
◎─◎ ◎─◎─◎─◎─◎─◎─◎ ●─◎ 东
│ │ │ entry
◎─◎─◎ ◎─◎─◎─◎─◎─◎ ◎
│ │ │ │ │ │
◎─◎ ◎ ◎─◎─◎ ◎─◎ ◎ ◎
│ │ │ │ │ │
区 ─◎─● ◎ ◎─◎─◎─◎ ◎─◎ ◎ ◎
域 exit │ │ │ │ │ │
◎ ◎─◎ ◎ ◎─◎ ◎─◎─◎ ◎
│ │ │ │
◎─◎─◎ ◎─◎─◎ ◎─◎ ◎─◎
图 1. (10x10的随机虚拟迷宫示意图)
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 210.74.177.246]
|
|