如何生成类似焦土的地形?


12

我是一名网络开发人员,我渴望开始编写自己的游戏。

为了熟悉起见,我canvas现在选择了JavaScript和element。

我想生成一些像焦土中的地形。

一片焦土

我的第一次尝试使我意识到,我不能只是随机分配y值。高峰和低谷必须有一定的理智。

我已经用Google搜索了一下,但是我找不到足够简单的东西或者使用了错误的关键字。

能否请您告诉我示例中将使用哪种算法生成某些东西,同时牢记我对游戏编程是完全陌生的(因为无论如何,2003年还是使用Visual Basic制作Breakout)?

Answers:


18

中点位移算法正是您想要的。

该链接可以生成如下内容:

在此处输入图片说明

还是喜欢您的图像,取决于您使用的参数。有C源可在这里


感谢这一点,我仍然不确定如何在JavaScript中实现它,但是希望当我阅读完这篇文章后,它对我来说变得更加清晰。
alex

有我刚刚编辑过的C源代码。要实现它应该不是一个太大的问题:)
The Communist Duck

@共产主义鸭子谢谢,我以前涉猎过C。
Alex

@共产主义鸭子希望我在正确的轨道上 :)
alex

@alex,您应该在实现中使用某种递归。当前,您仅拥有一条带有随机y分量的线,其中随机变化向右减小。
JuhaSyrjälä11年

5

如何使用中点位移算法,然后再进行轻微的平滑处理(例如低通滤波以消除太尖的尖峰),该怎么办?此方法与焦土中的方法不同,但应提供相似的结果。

我相信焦土模拟了重力和落下的污垢。例如,您不能有太陡峭的山坡,因为否则灰尘会掉落并形成不太陡峭的斜坡。


1

您可以使用另一种方法。您可以将许多随机生成的正弦波加在一起,然后缩放结果以适合屏幕。尽管与示例屏幕截图相比,它更平滑,甚至更人为,但实际上在实践中很容易,并且会产生一些不错的结果。

您可以在javascript中查看源代码。弄些参数以获得不同类型的地形真的很容易。

https://github.com/fmstephe/Tankwars

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.