r/proceduralgeneration • u/Rasie1 • 14h ago
Fissures of infinite depth!
Enable HLS to view with audio, or disable this notification
Added really cool fissures to procgen world generator in my game (colossal citadels)
r/proceduralgeneration • u/Rasie1 • 14h ago
Enable HLS to view with audio, or disable this notification
Added really cool fissures to procgen world generator in my game (colossal citadels)
r/proceduralgeneration • u/Happy_Witness • 2h ago
Hello everyone,
I have tipped my toe into climate simulations and am now building a planet simulation that has climate as it's main target.
For that I use an icosahedron subdivided. Each vertex holds every parameter that is needed for the simulation. The amount of parameters has not been decided yet and will grow over time with the implementation. The amount of subdivision are aimed between 3-10 that I would like to have and between 6-8 as defaults. For the vertical I want to have multiple of these layers to represent higher and lower levels of altitude around the surface. The amount of levels should be around 10-15 as default and maybe around 50 as max.
The simulation will likely be calculated on the GPU. So the structure I thought of is the following:
Every parameter is one long vector f32. Every vertex in a layer is written in sequence of and every layer is also in the same sequence. Meaning that the Len(vec) would be layer * N_verticies and the specific vetted would be layer[i] * N_verticies + vertex.
To address the neighbours for derivative computation, one neighbour vec gets created as a look up table with the form vec[vec[6]] where every neighbours index gets written down for every vertex of the icosahedron. The base 12 verticies are the first 12 verticies in the neighbours vec as in the parameter vecs and the sixth input gets double marked as f32_max.
So in the end, I would have a list of every parameter that each holds one long vec with every vertex of every layer in them, and a relationship vec of neighbours that can also be used to look up neighbors of different layers by in-/decrementing the layer index inside the long vec. (Vec[ layer[I+/-1] * N_verticies + neighbours index] to get the neighbours in the neighbouring layer.)
Is that any good structure or is another structure better and if yes, why?
Thanks a lot for thinking though this one with me.
r/proceduralgeneration • u/hangryhangryhuman • 2h ago
I posted a couple weeks ago about a procedural fish generator I was working on. It's now turned into a playable "game", with random fish in random lakes. There's some light fishing mechanics for casting and reeling and it keeps track of your collection of fish and lakes visited. It's playable in browser on mobile or desktop.
There are still a lot of things I'd like to add and polishing/tuning that's needed, but it's pretty functional at this point. From a procedural generation standpoint I'd like to add more variety to the lakes (biomes, plants, etc.), add more behaviors and attributes to the fish, and probably some equipment (rods, boats) with different stats.
I'd be honored if people would give it a try and send me any feedback, thoughts, suggestions from either procedural generation or gameplay perspectives.
The game is uploaded to Itch as "Procedural Fishing".
r/proceduralgeneration • u/Certain-Extent458 • 1h ago
UNDRAWN is a ~50KB free browser endless-runner/platformer. You're a doodle on the last page of a notebook fleeing the B-2000 Eraser. When the floor runs out, you hold the mouse to draw bridges/ramps (time slows while drawing; ink is limited).
Play free in browser (no download, no signup): https://driftstudio.itch.io/undrawn
What's procedural:
- Infinite notebook page / chunk generator (torn holes, platforms, biomes) — not hand-authored levels
- All visuals are code-drawn (no sprite sheets / AI image models for art assets)
- All audio is WebAudio synthesis at runtime (no sample packs)
- Daily challenge seeds the same page for everyone that day
Disclosure: development was AI-assisted (code/graphics/sounds/text); also disclosed on the itch page. The runtime systems above are still procedural generators in the shipped build.
My role: part of the shipping team (release/community). Feedback questions for this sub:
1) Does the chunk/page generator read as "procedural" in the first 30 seconds, or just random obstacles?
2) Any obvious tells that the generation is too repetitive / too sparse?
3) Would you change how ink cost interacts with the generated gaps?
r/proceduralgeneration • u/VellumMuse • 9h ago
Enable HLS to view with audio, or disable this notification
Well, this took a leap and a half.
The engine I was working on is now a smart rendering engine. Long story short, the engine maps harmonic waves to target vectors and quite literally transforms into various shapes.
The genius part of it is that none of the shapes are hardcoded. Each shape is derived from an .obj file. Which means to say, I can place any object file in the same folder and when we run the engine...it automatically reads the list of .obj files and creates a 3D slideshow of it all, periodically moving through the various shapes.
To tell you how crazy this is... The original idea was to create a digital ditto who could transform from a ditto.obj into any pokemon.obj...which it can, but I don't have those files. lol
But I thought it might be able to become some sort of mind's eye for AI in the future. The same way we can hook a camera up to an AI and have it "see," we can point its mind to this abstract space and map words to object files that allow it to see what it's thinking about in real time.
I had a lot of fun with this one. Back to work.
P.S. Every single sphere/node you see is a bit, so that's why it's a smart rendering engine. It can actually compute anything while rendering shapes.
r/proceduralgeneration • u/smontesi • 1d ago
Enable HLS to view with audio, or disable this notification
r/proceduralgeneration • u/lewster32 • 13h ago
A flight through the mist and clouds of my almost completely procedural world (all geometry and materials, and almost all sounds). Powered by Rust on the back-end, and three.js running in a browser.
This is the rapidly evolving landscape that forms the base of a game I've been working on for most of the year. It's been pretty much an obsession, with most nights and weekends spent adding more detail and interest, while trying to balance the performance with my (perhaps a bit over-ambitious?) choice of runtime.
There's a lot more that I haven't yet shown, especially with regards to gameplay and story, but most of my effort has gone towards making the world itself an enjoyable place to be.
Lots of inspiration has come from captivating, yet somewhat mundane, moments in games I've played in the past, where I've found myself wandering through the rain as the sun rises in Dark Age of Camelot, approaching a mist-shrouded village in Morrowind, or even wandering around the stunning (yet empty) locations in the leaked World of Warcraft beta back in 2004.
r/proceduralgeneration • u/SlothDC • 11h ago
Everyone else is doing it, why not share the toy World Generator I've been working on?

*Very* early stages so far, feel free to play around with it, tell me what you think it needs.
https://parchmentworlds.theanaloggamingsociety.org/
Hit the World Forge button to get into the world creator. Buried in "Import Project" there's a baseline Sol system for reference.
r/proceduralgeneration • u/Sceat • 23h ago
Enable HLS to view with audio, or disable this notification
Game is made with threejs and fully open source github.com/aresrpg/aresrpg
r/proceduralgeneration • u/Poly3Blend • 1d ago
I'm still working on this. But I think it's good enough for a tutorial. I'll work on making better gas giants later.
r/proceduralgeneration • u/Borgware • 1d ago
I spent a couple of weeeks building a procedural voxel planet, think minecraft meets no man sky.
It started when i stumbled over the Goldberg Polyhedron that you could create a minecraft-isch planet with hexagons ( padded with a couple of pentagons ).
So I thought "what if..."
The goal was to use a browser and webGPU to accomplish this and everything should be procedural.
I realised I dont really play minecraft and I dont wanna do a minecraft game, so now its a good time to hit the pause button.
I need figure out what this is before devoting more time to this techdemo looking for a game.
Anyway, I decided to make it open source, perhaps it could inspire somone:
Its all done in local browser, so no account required, test it here
You gonna need a decent cpu / graphics card and a modern desktop browser with webGPU support.
Give the machine time to load the lod steps and to settle the landscape.
F - fly mode.
E - landing
Space - up / jump
Shift - down
ESC - escape mouse look
LMB - dig
RMB - place



Left click on the map top right to teleport on the planet.
r/proceduralgeneration • u/KeyNormal8330 • 17h ago
Hey guys. I'm reposting right now as my initial post was a bit dry, not good imo. Quite bad tbh. I decided to explain and write a bit more this time around.
So here it goes...
Lusto is an experimental, deterministic diffusion engine with an unusual property: the control parameters are dynamically derived from two co-evolving channels. There is division of responsibility in data processing between two mechanisms. I like to call these - a worker and an orchestrator. It's basically a single pass engine, not a layered, repeating static pipeline. My design philosophy was to build something different. Something that behaves more like a sysytem that "flows", for the lack of a better word. I belive it's due to my backgroud. I'm not a programmer by education, I'm a chemist. A bit of an obessive hermit by nature and thought to approach the problem of data diffusion from a different angle. I called the the primary mechanism - Evolving Representation Dynamics. It's basically a control unit that can derive different classes of control parameters. In case of Lustro V1 it's rotation values.
ERD has a specific method of linking the data channels. Evolution is emerging from within the system. The data basically controls itself. Sort of like a chemical reaction, that's how I like to think about it ;-)
I'd really appreciate you opinions on my take on the subject as I'm still in the process of learning. Thanks in advance!
Ps. I'm Polish and in my native language Lustro means "mirror". It is a project of deep personal meaning for me. If anyone is interested I'm including a link here, inside this post.
r/proceduralgeneration • u/sbartinspace2 • 1d ago
Enable HLS to view with audio, or disable this notification
In Fractal Landscapes Art Project my creative journey start from slow motion ambient meditation mood. And after that it branches out into VJ effects and video loops of different lengths and speeds.
3D in Mandelbulber software. Not AI falsification. Never!
#quantumart #fractalart #abstraction #VJloop #noai
r/proceduralgeneration • u/deepak365days • 2d ago
Enable HLS to view with audio, or disable this notification
r/proceduralgeneration • u/Mannerheim_Line • 2d ago
Enable HLS to view with audio, or disable this notification
Cause the structure of a tree is simple and well defined I came up with a way to draw them without vertex and index buffers. Cause the number of the branches are known and the trunk and branches have a known number of segments and radial segments you can define vertex positions with the vertex id. The same is true for leaves. I have two levels of branches that are defined by a bezier curve, which is presented by four points. The idea is also to randomly move these points for each branch to make branches and trunks unique though I have not tested it yet. Then they are blended with the sprites and you sort of get the whole forest without any model. It is for filling big areas with trees.
r/proceduralgeneration • u/MadHellequin • 1d ago
My previous post describing the terrain generation is here: https://www.reddit.com/r/proceduralgeneration/comments/1w1mfox/my_planet_generation_for_a_game_perhaps/
The coastline still isn't perfect, but it's getting close to how I want it to look.
Without any noise applied it comes out completely flat and smooth, sampled per cell from the HeightMap. Bumping up the resolution is inefficient, also it hurts the performance of the planet's physical simulation. And if you apply uniform noise, you get an equally uniform ripple, which looks ugly and creates a "spray" effect - you can see something like that along the coast of Norway, but most coastlines don't look that way.
Here's what I did: first I built a HeightGradientMap - a mask at the same resolution as the HeightMap (512x256). The idea is that each cell stores the largest height difference between that cell's height and the heights of its 4 nearest neighbors. The result is a slope map, where the values are ~0 on plateaus and reach high values in mountainous regions.
The overall formula in the material (for now):
distorted_height = height + fine_noise * (slope * amplitude + flatFloor)
I tried adding flatFloor to introduce a slight wobble even at the macro scale, and it partly works. Screenshot 2 is the line without flatFloor, screenshot 3 is with it (you can see the little bay that appeared, for example). It's the macro scale that matters here, since the goal is to distort the main coastline that's based on the coarse grid.
The fine noise is built from stock UE textures: T_Perlin_Noise and T_MacroVariation. The first texture is the noise itself, and the second is the noise amplitude, which makes it non-uniform - so in one spot you get "spray" and in another an almost straight line. The result is in screenshot 1.
I'm thinking about how to improve this mechanism. I don't like that the little bay got eaten by the noise - all that's left of it is a few tiny dots of water. What I definitely want is to make some stretches of coast jagged with fjords, like Norway. I also have very few islands and archipelagos, and I'd like to rework that somehow.
r/proceduralgeneration • u/wizzard_rick • 2d ago
I’m building Salt & Soil, a generational strategy game set between 1609 and 1900. After the feedback on my previous terrain posts, I rebuilt the map again—this time using the real geography as a reference.
This is the third entry in an accidental terrain-generation diary.
In the first post, I generated every terrain tile and mountain sprite procedurally. One version had the atmosphere I wanted, but roads, settlements, and strategic geography disappeared into the detail.
Several comments pointed out a deeper problem: the mountains could never become convincing ranges while every tile had to return to ground level at its border.
That led to the second post. I stopped asking each mountain cell to produce an isolated peak and began building one continuous elevation surface across connected terrain.
The new images show the latest result in three regions:
The upper panel is an aligned real-world terrain reference. The middle panel is the previous tile-based map. The lower panel is the current terrain renderer. Each comparison uses the same region and scale.
The broad geography is now guided by elevation data, but the rendering itself is generated. The pipeline turns that data into a continuous surface, combines large landforms with smaller ridge-and-valley structures, calculates the surface direction, and applies consistent lighting across the terrain.
The result is then reduced into the game’s limited grass, soil, rock, and snow palettes. Trees, settlements, roads, and other objects remain separate layers, so the landscape can gain depth without swallowing everything the player needs to read.
The logical map has not changed. Rivers, settlements, roads, historical borders, and gameplay still use the same cells. The elevation surface is a visual interpretation of that data rather than a replacement for the grid underneath it.
The biggest lesson was that flat-looking mountains are not necessarily lacking height. My old mountains had plenty of vertical contrast, but their shapes and lighting restarted in every cell. Making the peaks taller or adding more noise only made the repetition louder. A continuous surface and one lighting model did far more to make the terrain read as a landform.
I am still deliberately cheating. Real elevation contains much more information than is useful at this zoom. Some valleys are widened, minor features disappear, coastlines receive cleaner silhouettes, and the palette is compressed so roads and settlements remain visible. The goal is recognizable strategic geography, not a geographical renderer.
And yes—the beaches are back. They are no longer entire beach tiles, though. The coastline is generated across cell boundaries, allowing narrow beaches, rocky sections, and direct grass-to-water transitions without turning 25 miles of coastline into one enormous strip of sand.
This is the latest checkpoint rather than the final version. I still want to recover some of the rocky character of the earlier mountain sprites without bringing back their visual noise.
r/proceduralgeneration • u/Nevertek • 2d ago
Enable HLS to view with audio, or disable this notification
Hey guys! I posted about my app, Cymata, a few months ago and had some great feedback here. I'm stoked to say I just got over 1000 downloads and people seem to be enjoying it.
Its a music visualizer designed for touchscreens and lets you paint into it as the CA rules all "dance" to the music. there are various presets, brushes and other paintable shaders to mess around with and blend together.
There is a native Apple Music and Soundcloud player in the app and you can enjoy this display on iPad, iPhone and AppleTV. The app runs independently on appleTV and will connect to your iOS device so you can paint into it with your iphone.
Trying to find the right price balance and onboarding to satisfy everyone has been... an interesting learning experience. 😂 I would do things very differently if I were to do it again.
Im back again to announce there is now a lifetime (one off purchase) tier available with family sharing and all future updates. For those that prefer the subscription there is a FREE trial for a week.
Lots more examples here.
Or app store link.
I hope you like it!
r/proceduralgeneration • u/podalusu • 2d ago
r/proceduralgeneration • u/That-Media9522 • 1d ago
Enable HLS to view with audio, or disable this notification
Hey everyone, I created a Procedural Nature Generator in a game engine.
What do you think of the results?
r/proceduralgeneration • u/datta_sid • 2d ago
Live demo: https://dattasid.github.io/jellyfish/
r/proceduralgeneration • u/HabitableZone_ • 2d ago
Enable HLS to view with audio, or disable this notification
Hi everyone! Here’s another update on my procedural plate tectonics simulation.
The top is the previous version, and the bottom is the new one, both running along the same timeline.
In the new version, island arcs can now mature and accrete into continental crust, a few cleanup rules help reduce tiny isolated crustal fragments, and there’s now a basic craton mechanic as well.
Which version looks better to you?
r/proceduralgeneration • u/SpectralHorse • 2d ago
[TLDR]: I released a free C++ library and free GUI application (Studio) for procedurally generating animated pixel-art spaceships, with a wide range of configurable parameters!
Hello everyone!
While working on my video game, Rogues in Space, I, a kind of pretty bad pixel artist, started developing a procedural spaceship generator, the purpose of which was to just generate a very basic ship that I could manually "clean up" and animate.
Aaand well, I just kept adding generators for more and more things - hulls, engines, wings, weapons... In the end I even added animations and spritesheets!
At some point, when it was clear that this (now) library and GUI application were getting larger than the video game itself, it made more sense to cut it off as its own project instead of having it permanently embedded in the game codebase.
So, after doing all the new work that I've never originally intended, today I've released SpectralShipGen and SpectralShipGen Studio as open-source projects!
SpectralShipGen is the C++17 generation library itself, while SpectralShipGen Studio is a standalone GUI application for visually playing around with the generator and exporting ship images and animation spritesheets without needing to integrate the library into anything.
On the technical side, ships are generated deterministically from seeds, and how they look (and from which components/color palettes and what intensity), can be controlled through structural profiles, faction profiles, mentioned color palettes and plenty of other generation settings. Majority of the aspects of an existing ship (so engines, details, accessories, weapons, etc.) can be rerolled individually instead of regenerating everything, keeping the general construction of the ship mostly the same, except for the specific parts that you wish to change.
Saving and loading the recipes for said construction is also supported, as well as adding the ships to favorites/bookmarks, and browsing them later.
All ships are also generated with Idle animation and with (currently experimental) left/right/up/down movement and firing animations.
I've tried to keep the different visual identities fairly broad rather than making them into simple predefined ships. So, the same structural style or faction can still produce quite different results based on the seed and configuration.
The library itself is independent, while the Studio application does rely on SFML (and the library, of course) for the graphical rendering, button interactions, and everything else GUI related.
Interestingly, an unexpected amount of work towards this release ended up being in the boring-but-important category - regression/performance/robustness testing, establishing CI, writing (everyone's favorite) documentation, thinking about how licensing works, etc., so that these two can actually function as an independent library and a standalone application.
I've attached several examples of generated animations that I thought were interesting to show what the output can be, although they only cover just a tiny amount of what can be generated. I've also attached a couple of screenshots from the Studio application as well.
In case anyone likes what they're seeing and is wondering about using the generated output - anything you generate with it is yours to use however you want, including commercially. There's no attribution requirement and the source code licenses don't apply to the generated images or spritesheets.
Lastly, I'd also like to mention a couple of important topics.
I definitely don't see this ever replacing actual pixel artists - someone who's at least decent with pixel art can likely make a much better spaceship by hand. Something like this is, I think, much more useful if you're on a very tight art budget, if you need/want a bunch of ships generated during runtime (as you don't really need to save the generated spritesheet to disk in order to use it), if you're at a game jam and just need urgent assets.. Or if you just wanna generate a few hundred ships to see what odd things appear, because that can also be pretty entertaining (I may or may not have spent too much time doing just that).
Something that I also want to be fully transparent about, because I do think it will definitely be asked - the development/code writing on this project has been AI-assisted. However, that is the extent of it. There is no generative AI image creation anywhere in SpectralShipGen, reference images are NOT used, and there aren't any premade spritesheets or images "hidden" behind the library being chopped up and re-combined.
The ships are generated by the C++ code itself through procedural geometry, pixel masks, components (hull, engines, details, weapons, etc.) placing rules, seeded random decisions, and so on.
The nice thing about doing it with deterministic seeding way is that the same seed and the same configuration always give the same ship.
The amount of AI assistance during development was also one of the reasons I personally felt more comfortable making the project open source instead of keeping it completely proprietary. That's also not supposed to be some statement about how AI-assisted software should be licensed or what anyone else should do with their own work (that's a completely separate discussion) - it just felt like the right choice for me and this particular project.
As mentioned, the generated output is deliberately unrestricted as well - if you generate a ship image or spritesheet with SpectralShipGen (or Studio), you can do whatever you want with it. Use it in a commercial video game, redistribute it, paint over it, use it as a placeholder - attribution isn't required.
Links:
Library: https://github.com/SpectralHorse/SpectralShipGen
Studio: https://github.com/SpectralHorse/SpectralShipGen-Studio
Studio Download (from GitHub): https://github.com/SpectralHorse/SpectralShipGen-Studio/releases/tag/v1.0.0
I'd be very interested to hear about your thoughts - both about the generator itself and if the different ships actually feel like they have enough variety while still looking like they are thematically and systematically similar.
And, of course, if you end up generating something ridiculous with it - I'd love to see it! :)
r/proceduralgeneration • u/Redditwhydouexists • 2d ago
Essentially i have many maps like the one you see above where there are color bands representing ranges of elevation as well as notable rivers and other bodies of water. I would like to create a program that can use the information presented into these maps as constraints that then erosion would be applied to to convert it into an highly detailed, grayscale, realistic, elevation map. My thought is to draw "ridge line" divides across the map that divides which way water would flow, and have it naturally flow away from those ridge lines and towards the pre drawn bodies of water, eroding and depositing soil at rates determined by the slope of each band. i also thought of including a geology map layer that could further effect rates of erosion and deposition, as well as uplift to counteract erosion in some places.
Is this the best way to simulate natural terrain formation to turn a hand drawn map like this into a realistic, high detail height map or is there a better way?