发信人: 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]
  | 
 
 
 |