以游戏功能为导向的程序世界


36

在大型程序性景观游戏中,这片土地看起来很沉闷,但这可能是因为现实世界在很大程度上是沉闷的,只有有限的地方具有戏剧性或战术性。

从这个角度来看世界的产生,游戏的景观生成器(不是为了风景,而是为了玩法)不需要遵循美化的规则,而是需要遵循一些美化规则。玩家的期望。例如,可能存在一个扼流点/路线生成器,该生成器在城市之间创建丘陵沟壑,河流和山脉,而不是自然形成的城市,它们是根据山脉或降雨模式产生的资源或条件散布在土地上的。

有没有像这样的现有工作?从城市或人口中心开始,然后再添加地形?

我问的原因是,我以前曾想过从幻想小说(我自己的和其他人的)中提取现有的地图,将信息作为系统的基点,然后生成一个可以玩的好世界。这似乎已被现有技术所覆盖,也就是说,设计人员在其中输入了所有必要的信息,例如城市人口,资源,生物群落,道路网络和河流,然后允许PCG填补空白。

但是现在我想知道是否有可能让内容生成器也生成整体设计。生成城市和人口中心,平衡它们,以便自然地有商业需要,然后生成位置和连通性,然后从城市类型中产生必须在附近的必要资源列表,只有这样才能给出有关如何使城市之间的旅程既可信又有趣的一些规则,产生了最终的内容,包括道路,阻塞点,桥梁和隧道,渡轮以及包括必要的生物群落和海岸线在内的地形。

如果以前这样做过,我想知道,也想知道哪里出了问题,什么才对。


您的方法似乎很奇怪。我不知道为什么会首先出现城市和人口中心。即使如此,您是否也不能放置一些城市并为这些点分配有利而随机的参数,然后从那里开始工作呢?
共产党鸭子

1
我认为您的文化设计首先是正确的,其次是地形(和天气)。在现实世界中,社会,文化,经济网络和结构不会随处可见。取而代之的是,它们基于地形而出现(或不会出现)。有些地形不利于社会的兴起,而有些则不利。大城市不会出现在沙漠或冻冻的苔原中,因为a)几乎找不到食物或水,b)难以将商品带入城市。
Tim Holt

2
我了解您的角度,@ Tim Holt。我认为,在设计游戏场景时,冷静的规则和娱乐的规则总是胜过合理性。在一座活火山的火山口上架起一座桥梁的城市可能看起来并不合理,但它仍然很酷。同样,当玩家需要在游戏世界中均匀分布的城市来进行游戏时,即使他们的地理位置没有意义,您也必须将它们分配给他们。
菲利普

Answers:


12

这是使用湿度,高度等参数生成程序地形的一个很好的例子... http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/


2
可爱的作品,但仍然是随机分布的景观,其次是文明/游戏元素
理查德·法比安

这不是完全随机的,但我同意,没有文明因素。我认为该技术可以适应许多不同的游戏玩法元素,但演示中的内容适用于多人游戏(每张地图约80名玩家):(a)被水包围的小岛,所以人们不会碰到边缘,( b)沙滩上的轻松区域,玩家分散开来;(c)玩家集中的山区硬区域,(d)道路将您带到具有相同难度的其他区域,(e)河流将您带到难度较高的区域。玩家将在海滩上开始独奏,并在奔向中心时进行分组。
阿米普2011年

1
我要探索的主要内容是首先从游戏限制开始,然后构建一个填充细节的地图,而不是从通常的随机或“现实”地形生成器开始,然后尝试将游戏元素放在顶部。我认为它在那种风格的游戏中效果很好,但是我还没有在其他风格的游戏中尝试过。
阿米普2011年

4

我相信过去三天我一直在回头看这个问题,同时问自己,世界甚至星系的程序生成如何同时具有确定性(例如始终从同一种子生成相同的内容) ),看起来自然,并且在景观中仍然具有独特,有趣,不寻常甚至美丽的特征。

我继续回到相同的通用答案,即答案高度依赖于游戏的类型及其在故事中的内部一致历史。例如,世界末日后的流派,为什么有人会在荒原的中间建造一个大墙的大都市,并使里面的每个人都过着悲惨的生活?为什么要殖民这样的星球?在幻想中,为什么要在浮岛之上建造一座城市?矮人为什么要在山脉内建造城市?您的一般邪恶敌人来自拥有活火山的火热土地?冷静的规则?

因此,这一切都回到了您自己的答案,即您在PCG中输入信息并填补了空白,还回到了有关生成与情节线和整体故事相匹配的世界的其他答案。

因此,情节会生成可产生合适风景的游戏元素。

就是说,我不知道一个能产生一致的情节线条树的故事是否会产生您想要的整体游戏设计。

(PS:这三天的思考也使我对可能出现的问题有了另一个答案:应该有一个自动测试工具来检查所生成的游戏设计是否正确,例如,您应该让一支中世纪的军队努力是时候击败生成的堡垒了)


2

我只能找到处理类似问题的论文,即Stachniak和Stuerzlinger的“ 一种自动分形地形变形算法 ”。假定您先创建地形并将其变形(或者让算法选择参数使其自动变形),然后再适应您的约束,因此它不会直接回答问题。尽管如此,这里提出的方法可能对其他有类似问题的人有用。


2

当城市之间产生道路时,这种算法不会自动产生更多的“战术”地形吗?

假设道路每距离只能有一定的高度变化,则地形高度将适应道路的高度,这将在道路穿过丘陵/沟壑/任何地方时导致产生阻塞点。当然,也需要限制地形高度的变化量,否则您的道路将直奔最高峰。


我以为您的意思是,现有的道路会减少地形的产生,导致看起来像人造山谷的情况。有趣的是,您在哪儿见过地形生成器对景观进行判断并判断其行驶难度太大,但切入要便宜一些呢?它没有回答我的问题,但是确实增加了发电机应考虑的事项,例如相反的情况(道路高出地面)将需要桥梁或高架桥,这在通常情况下是看不到的。 PCG。
理查德·法比安

我只是在考虑它在现实生活中是如何完成的:
2011年

1
山脉形成,被侵蚀。植物和树木在土地上生长。数百万年后,第一批游牧民族出现,四处游荡,甚至安定下来。它们开始影响周围的土地,例如通过石坑或笨拙的木材。后来,他们将寻找其他城市,开始与他们进行贸易,因此需要道路。跟随地形通常比改变地形容易,因此他们会根据地形调整道路(除了一些平滑/平坦处理)。如您所见,我更多地从世界构建的角度来研究问题。
2011年

2

当我在Cryptic Studios时,我们正在为任务/任务生成进行类似的工作。设计师稍微抽象地指定了任务目标,并在“玩家旅行顺序”中随机地列出了这些目标,并在它们之间切开了路径。

《星际迷航》在线版附带的早期版本是Genesis Missions (档案)。当时我们对此感到非常兴奋,但是我不知道离开后它继续运行了多少,或者最终用户的Foundry工具中是否提供了它。(这是最终目标。)


1
这听起来像是使用过程图生成器完成的工作,实际上是生成与这些任务所需的图线相匹配的世界细节,还是根据世界的实际情况来完成任务,还是很幸运,这些任务艰巨或根据您生成的内容容易吗?
理查德·法比安

1

生成过程地形的一种典型方法是手工绘制特定特征,然后使用生成器填充其余特征。VTerrain一定会对这个话题感兴趣。


1

Lighthouse 3D对地形生成的一些简单算法进行了很好的调查。如果您从包含城市或其他有趣区域的地图开始,则可以使用其中一些技术来生成所需的地形。例如,可以聪明地使用故障算法来在您的城市周围创建悬崖或山谷,将其作为阻塞点。同样,使用圆算法将是为转塔放置生成地形的好方法。这些只是一些示例,但是使用这些简单算法将是在城市周围生成有趣地形的一种相当简单的方法。


1

也许我过于简单化了,但是为什么不考虑城市建在有利地形上的事实,或者出于任何原因而忽略任何规模的文明区域的事实呢?地形可能为军事设施提供了战术上的优势,或者也许是在一片大森林和一条河流的交汇处有伐木场,而这条河的下游有一个更大的村庄。即使“圣地”也基于地形,即使简单的事实是特定的土地在某个时候被认为是圣地,等等。无论后果如何,绝大多数文明的最后安息地都存在于由于非常基于地形的原因而形成的物理点。即使是在一个城市如雨后春笋般冒出来的情况下,仅仅是因为两个大城市之间发生了足够的贸易来保证有中间人,如果您愿意,根据阻力最小的路径选择城市位置。它将被放置在可以为当地粮食供应提供良好平坦土地的地方,以及能够很好地用于道路建设的土地。我确定您已经考虑过了...

因此,如果您要首先建造城市,那么,为什么不呢?为什么不建造城市,村庄,定居点之类的东西,以及由人工建造的,可支撑这种类型建筑的不错的周围地形呢?

以程序生物群落为例。它们通常应用于伪随机温度,湿度和高度图。如果您已经设计了城市(或伐木场等),那么您可能会对土地的需求有一个确定的概念,如果我没有误解,那正是您的观点。以Orthanc之类的奇幻建筑为例,该建筑充满了您忠实复制的平面图和周围地形。好吧,我们知道,根据时间表的不同,Orthanc周围是一片巨大的森林,里面布满了Ents(树生物)等。如果您要复制它,那么对我而言,应用随机地形是没有意义的。话虽如此,一旦您为塔楼本身和周围的森林创建了此设置,Orthanc和您下一个城市之间的关系是什么?

一种简单的方法可能是编写程序性地形生成,将设置放置在随机生成的地形系统内,然后将高度放到固定设置周围,然后中提琴就可以将Orthanc放置在许多不同的随机生成的世界中(应该是那样)。

但是我认为,最好结合设置,地形和已定义的生物群落,并确保Orthanc放置在以程序方式生成的大型森林生物群落中。根据您的编码方式,您可以为雕塑的每个预定义设置或建筑物或城市设置最小/最大生物群落,地形,湿度等。在成熟的逼真的3d世界中,这将是一个小任务吗?明显不是。

我认为,如果要尝试这样做,我将首先研究海岸线程序算法。采取的做法是,整个历史上几乎所有文明都遵循任何海岸线,无论是海洋,大海还是大湖。这是增长阻力最小的途径,因为那里可能有大量的捕鱼活动,附近有树木供木材使用,即使使用基本的船只(至少是单向),当然也可以更快地旅行。

我认为您将不得不完全落后。想一想,代表文明点的地图上的伪随机点可能是通过噪声算法在确定其他任何东西之前确定这些文明的种群的。好的,所以1000人的总积分为1分,另外2000000人(当然,这取决于您的世界总人口数)。为什么?为什么那里的人口那么多?一千人口可能是小的伐木场社区。如果您要创建3D球形世界,则可能是采矿社区,如果它位于地图的北侧。这里有点模糊,因为我不知道您是否在各个方向上都将无限前进,从而使NESW在确定生物群落时毫无意义,还是您想要一个非常真实的“地球”

但是,如果您基于伪随机噪声种群放下文明,我认为我们可以放心地假设一些规则(但可能不是绝对的),例如...文明越大,最有可能的是,手和地形来支撑他们。必须存在珍贵的矿物,木材等,否则必须有庞大的贸易体系来支持如此庞大的企业。在此基础上,您可以开始生成从一条城市到另一条城市的高速公路,以及到深部采矿作业等偏远居民点的道路。选择能够形成良好海岸线并将人口点完全掉落在地图上的文明点,以便您填满自己的土地海洋(或者您的世界中有亚特兰蒂斯号,或海上石油钻探)。

再次填充它们之间的地形完全取决于您的生物群落方法。如果您在各个方向上都拥有无限的空间,则将Orthanc放到适合种群的任何位置,将其压入森林生物群落并向外环绕,直到您到达算法执行相同程序生成的下一个预设目标的一半为止周围。当两个地形相遇时将它们混合在一起,是的,这显然是过于简单化了。

如果没有对您实际要机械完成的工作的实际了解,我只会抛出一些想法,甚至可能是不好的想法。我认为您的方法具有优点,即使在现实中完全是梦幻般的,因为您的目标始终是任何游戏中最重要的因素:玩家玩得开心吗?或者,我是在创建一个无聊的,有趣的随机世界吗?

还有什么会变得有趣,这在任何游戏中都可能是文明世代的一部分,无论是否首先是地形,如果您将两个相邻的大城市相邻放置,会发生什么?这是什么意思?他们在战争中吗?它们是两个繁荣国家之间的大规模贸易活动吗?什么样的敌人潜伏在那个伐木场的树林里?

我确实认为,如果您要尝试基于“城市”构建地形,那肯定是一件事情,那就是地形将直接受到所述城市人口的影响,无论是景观还是自然资源(甚至是美丽的景观)。

我不确定我是否真的回答了什么,或者这是否合适,但这是一个非常有趣的概念,我很想听听您的想法。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.