综合讨论组

创建于:2016-06-18

创建人: indienova

1372 信息 3829 成员
这是一个可以畅所欲言的小组

Eagle Island 的渐进式地图设计思路

水瓶座阿斌 2017-05-08

如果你也喜欢rogue like,喜欢研究随机生成地图的算法,可以看一下Eagle Island 的开发者分享的这篇文章:

渐进式地图设计思路。

The theory behind beautiful procedural 2D worlds

Eagle Island的世界地图类似Metroidvania,由很多随机生成的小地图(也称为房间)组成。这个游戏是一个横版的2d平台跳跃类游戏,所以本文主要介绍基于瓦片(tile)的小地图的生成方式。

第一步,生成初始房间

根据房间在大地图里的位置,留出入口和出口,然后在剩余位置填充边框。注意房间的尺寸可以任意尺寸,这样会比较自然。

Image title


第二步,从角落开始填充凹型块(concave fillers)

如图,角落里填充的块就是凹进去的形状。注意不要覆盖出入口。

Image title


第三步,填充凸型块(convex fillers)

如下图中粉色块就是凸型块。

注意,尽量用算法而不是预先设计好的模板来生成这样的凸型块,不然玩家很容易发现重复的地形。

Image title


第四步,填充悬浮块(floating fillers)

如图中绿色块。

这些块可以与之前填充好的块重叠,这样可以随机出各种形状的地形。

Image title


第五步,测试路线。

现在可以测试这个房间是否拥有一条完整的通线,如下图的白线就是从入口到出口的一条通道。

如果不存在完整的通线,可以考虑挖一条出来,或者重复之前的步骤重新生成一个房间。

Image title


第六步,测试路线的可行性。

有通路不代表就可以走。

下图中,左边的平台只能从左侧跳上去,不过不影响。而右边的平台就有问题了,玩家没法跳上去。

Image title


第七步,修复路线

下图中,青色块就是升起的地面,这样玩家就可以跳到刚刚没法跳上去的平台了。

Image title


哒哒,完成!

最后,填充图片,这样一个房间就完成了。

对比一下,下图中的各个色块就是之前算法中各步骤中生成的。

Image title

Image title



注:我并没有确认,他们是用这个算法在游戏中动态生成地图,还是基于这个算法设计了一个工具给关卡设计师用。不过,并不影响学习哈。

欢迎关注我的公众号:阿斌的日常,一起开心做游戏。

(转发自:原日志地址

近期喜欢的会员

 
黑小兔 2017-06-04

感谢分享,感觉用这样的思路生成3D洞穴也应该可行的。

 
水瓶座阿斌 2017-07-04

标题翻译错了,应该是程序化地图设计,也就是用程序生成地图。

 

加入 indienova

  • 建立个人/工作室档案
  • 建立开发中的游戏档案
  • 关注个人/工作室动态
  • 寻找合作伙伴共同开发
  • 寻求线上发行
  • 更多服务……
登录/注册