Look at this tree I grew. 🌳

seen from France

seen from Russia
seen from United States
seen from United States
seen from Philippines
seen from United Kingdom
seen from United States
seen from Türkiye
seen from China

seen from United States
seen from United States

seen from Malaysia
seen from China
seen from Türkiye

seen from France
seen from Germany

seen from United States

seen from Germany
seen from United States

seen from United States
Look at this tree I grew. 🌳
Stochastic Geomophical Transport for Terrain Erosion Simulation
One major way to model terrain has been through simulating erosion: how the rock weathers away is a big component of the vibe of the landscape on a geological scale. But there's a couple of components to that: both the erosion itself and also where that material goes afterwards. In short, this new simulation from Nicholas McDonald and Guillaume Cordonnier handles both mountains and rivers.
(Another major way, of course, is Perlin Noise and related approaches, which eschew teleological realism but gain other benefits.)
The idea here is momentum conversation: using a new particle-based algorithm (which can be combined with other geological processes, like tectonics and wind direction) it simulates geomorphological transport, which operates over geological time, taking advantage of the difference in timescales: over the course of geologic time, a river is basically instantaneous.
This makes it very flexible for mixing "a wide variety of phenomena" as they say: in the paper they describe the potential for things like dunes, coastal erosion, floods, rockfalls, varying erosion weights. I particularly like how effective it is at effects like braided rivers and river deltas, which are very common in nature but often overlooked on procedurally-generated maps.
On the other hand, if the erosion is fast (individual rockslides) or transport is slow (glaciers) that breaks the assumption and it won't be as accurate at modeling it.
I think the reason that I'm personally drawn toward this algorithm is because it has a history that is naturally embedded in it.
You don't necessarily need to replicate the exact phenomena that was involved in creating something to get a good result. Much of games and simulation is about picking the right abstraction to get the right feel, regardless of how you get there. It's often the better call, to get the right poetry instead of the exhaustively correct metric. But one benefit that you do get replicate the physical causative process to try to simulate the physical effects of water, wind, and time is that it comes with a built-in sense of history.
Simulation creates its own history. In looking at the terrains produced through this method, you can see the paths of historical rivers, the canyons carved out over millennia and eons. All the details that humans find hard to capture just because of the sheer amount of subtle detail that builds up in tiny ways.
Procedural Dungeon Generation
Alright~ After much work we have finally completed our dungeon generation algorithm. First, we generate the rooms, separate them using a separation steering algorithm.
Second, we generate a graph that represents connections between the various rooms
Third, we perform what is known as Delaunay Triangulation, in which we evaluate pairs of triangles and swap their shared edge if it fails a test boiled down to a simple matrix determinant evaluation Fourth, we construct a Graph of connectivity from the Delaunay triangulation
Fifth, we perform an A* pathfinding algorithm to connect points on the delauney triangulation through the neighborhood graph
Finally, if we didn't traverse through a room, we can remove it to simplify the dungeon into something a little less dense
There are some extra things we can do here and there, and bugs and edge cases to iron out here and there, but for now, we have a pretty neat little dungeon generator. The next step is to actually procedurally generate the rooms and then use the connectivity graphs to implement game logic and whatnot, but that we will save for another time.
Last week I started playing a bit with generating the asteroids shapes for Ship Miner with a bit of procgen and it is super fun and rewarding.
I was already doing procgen for the minerals spots but the asteroid shapes were predefined since I wanted to control that in order to find the core loop of the game. Now that I have some core loop defined, I can create the shapes considering that.
But one difference now is I wanted to have something visual, consistent (control the seed) and be able to do step by step, so if something goes wrong with the generation, I can adjust the logic and test again and see where it is failing, etc.
Next step is to try to integrate the minerals generation into the shape process and also visualize that better since not having visualization and replication makes procgen super harder.
"MY GOD, WHAT HAVE THEY DONE TO YOU?"
Should I write a big long post about my proof of Turing completeness for (1, 0)-L systems (and thereby all contextual L-systems)?
Yes
I don't know what that means at all, but yes
L-systems are for trees and fractals, but yes
No, that's frightening
I can't find much at all about these systems, just scant references to them in theses about plant development and such. Finding a proof of Turing completeness for 2L was difficult, I'm not sure if anyone's proven a strict 1L like (1, 0)-L Turing complete before me (I would like to be shown wrong though).
The smallest known universal machine has 168,022 replacement rules (compiled from a 19 rule machine).
FUMES has reached another big milestone on its road!
New update is available as free demo on Steam!
WISHLIST ME!
https://store.steampowered.com/app/1920430/FUMES/