3D星球生成器
一个基于数学原理生成模拟星球的地形和生命状态的工具。
今天是挑战的第 17 天。
写代码的时候,有时候会觉得自己是个建筑师,有时候像个修表匠。但今天,感觉有点不一样—— 今天,我感觉自己像个“上帝”。
因为我花了一天时间,手搓了一个【星球生成器】。
01 赛博时代的“创世纪”
这不是一张静态图,而是一个活生生的、正在运转的星球。
我给它起名叫 Kepler-186F,致敬那颗距离地球 500 光年外的“地球表亲”。
在这个模拟器里,没有复杂的物理引擎,只有纯粹的数学之美。通过 Terrain Matrix(地形矩阵),我把大自然的鬼斧神工浓缩成了几个可以滑动的参数:
Water Level(海平面):轻轻一拖,沧海变桑田。
Amplitude & Frequency(振幅与频率):决定了是崇山峻岭,还是广袤平原。
Detail (Oct):噪波的细节,不仅是星球的皮肤,更是它的指纹。
02 这是一个有“灵魂”的星球
如果只是生成地形,那也就是个大号的贴图球。但我希望它更鲜活一点。
注意看左下角的 Civilization Status(文明状态):
Population: 100.7k Souls
是的,我接入了一个简单的增长模拟算法。看着 Time Operational 的秒数跳动,看着 Active Nodes 慢慢点亮,看着人口数字上涨,你会产生一种奇妙的错觉:
在那些像素构成的陆地上,真的有一群微小的数字生命在繁衍生息。
03 给游戏开发者的“福利”
做这个工具的初衷,除了好玩,其实也很实用。
很多做独立游戏、跑团(TRPG)或者写奇幻小说的朋友,最头疼的就是画地图。
我在右侧面板加了一个 Map View 功能。一键点击,就能把当前的球体地形展开,生成一张可下载的平面投影地图(JSON/图片)。
下一款爆款开放世界游戏的地图雏形,说不定就藏在你随机生成的这一次点击里。
开发感悟
从 UI 的科幻配色,到星球边缘的那一抹大气层蓝光,今天的开发过程非常享受。
编程不仅仅是逻辑的堆砌,它也可以是浪漫的。用代码构建宇宙,用算法模拟生命,这大概就是理工男/女独有的浪漫吧。
下一步计划: 我打算加入更复杂的气候系统,甚至让不同的星球之间建立贸易航线(右侧菜单我已经预留了 Orbital Trade Routes 的接口😎)。
如果你也想当一次“造物主”,欢迎在评论区留言,告诉我你想生成一个什么样的星球?是全是海洋的“水世界”,还是布满熔岩的“炼狱星”?