我如何在假想大陆上生成人工河流

在我的世界之旅中,我需要在这样的景观上生成半现实的河流。 造河基本上涉及根据当地地形对水流进行建模:我们从山区开始,逐渐将水收集到越来越大的溪流和河流中,直到最终到达海岸。 这听起来非常简单-实际上是流量计算。 但是最大的障碍是山谷的存在,即当地的极小值:流动的水将被困住而无处可去,从而切断了河流的形成。 必须以某种方式填满山谷。 我尝试了几种方法,下面将进行讨论。 这是我逐步解决问题的尝试的一部分:如果您想跳到工作模型的细节,请放心。 模拟水滴法 一种解决方案是对每块瓷砖上的水单元进行建模,以使它们自然移动并堆积在草皮和草皮中,最终将它们填满,并使更多的水以新的路径流出。 就像您可能想像的那样,这是计算密集型工作:您必须跟踪所有水,并根据其位置在每个时间步长重新计算流向。 如果您尝试不使用微分方程式离散地执行此操作,由于流动的水无法均匀地追赶其自身,您还容易产生振荡和棋盘图案。 我最初实施了这种类型的系统,但是由于速度和另一个无法预见的缺点,我想找到一个替代方案:随着水从山上流到海岸附近的低洼地区,水会趋向于分散成沼泽。 这在某种程度上是现实的,但结果是河流通常不到达海岸。 一种解决方案是对流速和水动量进行建模,但这是复杂性的主要增加。 相反,我想解决第二种主要方法-这也很简单,但是比第一种方法需要更大的设计智慧。 填充前方法 如果仅以主流量指数计算一次流量,则河流模型可能会快得多,这样,每个时间步长中的水流总是以相同的方式流动。 缺少的是水流过山谷的方法。…

如何制作游戏-从商业应用程序和网站开发过渡到游戏

电子游戏是许多程序员渴望的原动力。 我在Commodore 64上长大,并拥有磁带机和自己的3个游戏。 在击败了所有三个人之后,我想要更多……但是小时候,买更多游戏是不可行的。 知道自己买不到游戏,所以我决定尝试制作自己的游戏。 我研究了C64的基本语言,在屏幕上写了文字,发现了惊人的GOTO功能,并做了一些非常糟糕的事情。 虽然我制作的游戏真的不值得玩,但编写自己的代码的经验激发了我的内心。 我意识到,即使是一个孩子,也可以控制计算机,使计算机能够执行我想要的操作……我了解到我可以编写代码。 即使像许多人一样,我最初的编码尝试都是与游戏有关的,但我的第一个实际编程工作与游戏完全无关。 实际上,我的整个职业生涯都花在了商务应用程序,高流量网站,硬件测试工具以及各种其他非游戏软件上。 那时,我遇到了数十位“商业程序员”,他们受到视频游戏的启发而学习了手工艺。 他们中的许多人还长期渴望有一天可以编写自己的游戏。 但是,由于他们是专业的开发商,承担着账单,家庭和责任,所以他们常常难以潜水。 他们中的一些人试图过渡到“游戏开发”中,但是大多数人都难以入门,这是有充分的理由的。 有一种趋势,很多人不得不认为“编程就是编程” ..它们都是一样的,只是使用的库或语法略有不同。 我总是发现这种说法是有缺陷的。 您无需雇用固件程序员来构建高流量的AWS托管网站。…