gamemaker吧 关注:13,603贴子:94,712
  • 4回复贴,共1

【GMS2】我想要做想类似传说法师的随机地图,有什么好的思路吗

只看楼主收藏回复

RT,就是那种多个小房间用通道连接在一起的随机地图,基础机制该怎么设计呢?通过什么实现呢?


IP属地:广东1楼2018-08-07 20:41回复
    鉴于lz不能打开我的gm8的随机地牢,我简要描述一下个人全随机地牢的思路:创建三种物体,分别是空气,墙壁,中心标志(含变量ok,初值为0,描述是否被连接过)第一步:用双for循环遍历整个房间,填满墙壁。第二步:collision函数检测指定矩形方块内是否有空气,如果否,则双for循环遍历所有墙壁,矩形区内全部墙壁换成空气方块,并在矩形中心放置中心标志。重复直到生成完毕全部房间。第三步,随机一个中心方块为起点,目标是连接离他最近的一个中心方块,连接完毕后目标移动到下一中心方块并重复,直到全部中心方块被连接。此步完成后所有房间均可抵达。详细算法:以第一个方块为【当前操作方块】,检测目标方块与【当前操作方块】的角度,根据角度结合随机决定下一步要打通哪个方块,并移动【当前操作方块】到该方块(例如目标在当前的139度方向,则下一步有两种选择,左打通或上打通,根据随机决定左还是上,假设随机结果为上,则【当前操作方块】移动到上面一个墙壁,并将此方块变为空气,重复进行,若此方块为中心方块,则将下一目标设为最近的且ok=0的中心方块,此方块设置变量ok=1)。第四步,随机选取两个中心方块,以第三步方式打通之间的路,增加地图随机性,此步设定次数上限。第五步,随机设置角色位置和楼梯位置,根据中心块位置随机设置怪物,物品,npc等,完成后删除空气方块和中心标志。至此生成完毕。


    IP属地:北京来自iPhone客户端2楼2018-08-07 21:41
    收起回复
      你指生成的路径弯曲程度大?可以加入curve和maxcurve变量,maxcurve影响第三步中打通多少格后拐弯,每打通一格curve减1,curve为0时才随机拐弯,否则维持当前方向不拐弯,并将curve设为maxcurve构成循环,这样拐弯少了,路就规则了。缺点是结束之后必须清除死胡同。


      IP属地:北京来自Android客户端3楼2018-08-08 09:30
      收起回复