我想在Lua进行程序生成的2d自上而下的僵尸启示录游戏。
使用多个噪声贴图,我可以轻松获得高度图,湿度图和温度图的二维数组,我可以使用它生成逼真的生物群系。 这很容易做到,但是,为了减少延迟,我需要将地图划分为块,所以我只生成一次块。我也可以这样做,但我想要的是一个巨大的开放世界,有河流,树木(森林中更多的树木),农场和其他特殊建筑,村庄,城市,道路,......
我目前的想法是,为不同的结构设置其他较小的2d数组,并随机地将它们与另一个结构图放在一起,但我不知道该怎么做,但是那时建筑物和道路也可能重叠,我不想要。而且我认为我不能生成一个在2个或更多块内的单个结构(因为原理图会覆盖地图,结构在哪里)
那么我怎么能这样做,有人可以帮忙吗? 谢谢!
答案 0 :(得分:2)
世界是静态的还是动态的?如果树木可以燃烧,村庄被毁坏但是在其他地方重建,等复杂性会跳跃。此外,如果村民在场并且有任何类型的人工智能,他们就需要“知道”他们周围的东西,这可能会随着程序的产生而变得棘手。
一个“技巧”是创建世界块,当需要创建新块时,生成并保存结构数据。您还可以将此作为“周边”功能发生,如果玩家在块A中,则在后台生成并保存其周围尚未生成的任何块。
放置结构应该是微不足道的。结构的块ID和(块特定的)xy坐标是放置它们所需的全部。您可以包括结构“区域”宽度和高度,以帮助进行结构放置碰撞检测。比方说,在农场围栏,你可以只在那里渲染围栏,玩家可以在它周围或其他任何地方走动。对于像洞穴入口山中的地牢这样的东西,你需要一个“入口结构”,当玩家与之交互时,将玩家放入地下城。
努力让这些机制找到 BEFORE 试图让开放世界超级巨大。首先使用2x2或3x3块世界,然后单独测试结构。这比最初的景观决策更重要,因为游戏玩法可能围绕这些结构而不是景观。
Lua是实现游戏的绝佳选择,但您最终可能希望在C / C ++中执行程序生成/结构布局/等。 Use C/C++ to do the heavy lifting like the procedural generation,并将其转换为Lua / C-call消耗的LOVE。 Here's some code不是2D自上而下,但考虑到可能有用的生成,时间等。 {/ 3}}在Lua / LOVE中。来自斯坦福的Here's a city generator和More on map generation。 Stackoverflow post
玩得开心!