Media is too big
VIEW IN TELEGRAM
I solved a 145-second chunk loading problem. It took two completely unrelated fixes.
https://redd.it/1tvm67n
@proceduralgeneration
https://redd.it/1tvm67n
@proceduralgeneration
Help with mesh generation
https://preview.redd.it/425mcxxh6o7h1.png?width=806&format=png&auto=webp&s=2c37696415de0814c09747c64b478cd7dedfece4
I'm trying to make a procedural planet, but I can't seem to figure out how to get rid of this weird shading, You can see the individual quads and triangles. The quad diagonal is light and the sides of the quads are dark.
I'm doing this in Unity with a compute shader where I calculate normals with Finite Difference Sampling, but the issue prevails when I just use Unity's "RecalculateNormals" method.
https://redd.it/1u7i8y7
@proceduralgeneration
https://preview.redd.it/425mcxxh6o7h1.png?width=806&format=png&auto=webp&s=2c37696415de0814c09747c64b478cd7dedfece4
I'm trying to make a procedural planet, but I can't seem to figure out how to get rid of this weird shading, You can see the individual quads and triangles. The quad diagonal is light and the sides of the quads are dark.
I'm doing this in Unity with a compute shader where I calculate normals with Finite Difference Sampling, but the issue prevails when I just use Unity's "RecalculateNormals" method.
https://redd.it/1u7i8y7
@proceduralgeneration
Plate-tectonics simulation on a spherical grid world in Godot.
https://redd.it/1u7mhul
@proceduralgeneration
https://redd.it/1u7mhul
@proceduralgeneration
Reddit
From the proceduralgeneration community on Reddit: Plate-tectonics simulation on a spherical grid world in Godot.
Explore this post and more from the proceduralgeneration community
A learned, continuous control that erodes typed speech into wordless glossolalia, same voice the whole way
Not a DSP effect, it's lexical resynthesis from typed input: read a sentence you just invented and erode specific words into plausible others while holding syllable count, stress, and voice fixed across the slide. One dial, clean at 0, wordless tongues at 4, with a deterministic real-word-mishearing mode alongside. Type something, drag to 4, listen: https://huggingface.co/spaces/akshan-main/glossolalia .
https://redd.it/1u7o0f9
@proceduralgeneration
Not a DSP effect, it's lexical resynthesis from typed input: read a sentence you just invented and erode specific words into plausible others while holding syllable count, stress, and voice fixed across the slide. One dial, clean at 0, wordless tongues at 4, with a deterministic real-word-mishearing mode alongside. Type something, drag to 4, listen: https://huggingface.co/spaces/akshan-main/glossolalia .
https://redd.it/1u7o0f9
@proceduralgeneration
huggingface.co
Glossolalia Dial - a Hugging Face Space by akshan-main
Convert clear speech to glossolalia or mondegreen
The Orani Prism Update - Massive UI Overhaul and Codework
https://the-orani-group.itch.io/the-orani-prism-demo
Hello everyone,
Quick reminder as to what The Orani Prism is: it’s a deterministic non-llm settlement generator that starts with a group of settlers and simulates growth over time until desired population or time amount has reached. It provides NPC with full OGL stats complete with historical memory through events the NPC has been a part of, as well as Big 5 psychological biases. Quests, hooks, rumors, secrets, are all generated from the engagement of NPCs and events as time progresses. Used for quick throwaway locations when you need a location with people for whatever reason.
This week I’ve been doing a lot of spring cleaning with my code. Ensuring everything is tied up where it’s supposed to be, making sure results are appropriate. I’ve also done little add-ons here and there so be sure to read the devlogs for more detail.
But more than that, I’ve majorly overhauled the UI and the user experience to try and make it flow better. For those of you who have used the Prism before, how do you like the changes? If this is your first time, does it flow well for you?
As always, a question for the Actors and Bards:
Actors: What is the best way to convey sensory experience in a format like this? How best would want conveyed sights, sounds, smells, and so on? Would you like it more in a narrative style? Bullet point? The Actor’s Sides are your you, and I want to make the settlement feel alive the way you want.
Bards: I provide you with a gigantic mountain of information. What information is most important for you? What holds the highest priority of order/accessibility? What kinds of demographic or sorting information do you need insight on?
Thank you for your time, see you at the table.
\-The Orani Group
https://redd.it/1u7oxe5
@proceduralgeneration
https://the-orani-group.itch.io/the-orani-prism-demo
Hello everyone,
Quick reminder as to what The Orani Prism is: it’s a deterministic non-llm settlement generator that starts with a group of settlers and simulates growth over time until desired population or time amount has reached. It provides NPC with full OGL stats complete with historical memory through events the NPC has been a part of, as well as Big 5 psychological biases. Quests, hooks, rumors, secrets, are all generated from the engagement of NPCs and events as time progresses. Used for quick throwaway locations when you need a location with people for whatever reason.
This week I’ve been doing a lot of spring cleaning with my code. Ensuring everything is tied up where it’s supposed to be, making sure results are appropriate. I’ve also done little add-ons here and there so be sure to read the devlogs for more detail.
But more than that, I’ve majorly overhauled the UI and the user experience to try and make it flow better. For those of you who have used the Prism before, how do you like the changes? If this is your first time, does it flow well for you?
As always, a question for the Actors and Bards:
Actors: What is the best way to convey sensory experience in a format like this? How best would want conveyed sights, sounds, smells, and so on? Would you like it more in a narrative style? Bullet point? The Actor’s Sides are your you, and I want to make the settlement feel alive the way you want.
Bards: I provide you with a gigantic mountain of information. What information is most important for you? What holds the highest priority of order/accessibility? What kinds of demographic or sorting information do you need insight on?
Thank you for your time, see you at the table.
\-The Orani Group
https://redd.it/1u7oxe5
@proceduralgeneration
itch.io
The Orani Prism - Demo by The Orani Group
A first look into how the Actor’s Sides, Bard’s Screenplay, and Playwright’s Globe generators work. Play in your browser
This media is not supported in your browser
VIEW IN TELEGRAM
Procedural 3d car generator - Made in Blender 3d using geometry nodes. Trying some new method.
https://redd.it/1u7wq3z
@proceduralgeneration
https://redd.it/1u7wq3z
@proceduralgeneration
Better quest generation
https://preview.redd.it/b888tqxs9t7h1.png?width=1913&format=png&auto=webp&s=807f0f419907c86c8447b8d1ea2c7074684d976e
Hey everyone, I'm looking into a novel way to do procedural quest generation.
Hey everyone, I'm looking into a novel way to do procedural quest generation. The world that I'm in and that they have causal sense to them. For example if I recently go to a village and I sell 50,000 loaves of bread, I don't want to get a quest about getting more bread for the village as they should be already overloaded.
I know many people right now are trying to use other LLMs to do the generation but I wanted to try an alternative approach using graph grammars to support emergent properties.
In the screenshot that you see above me, I have my current world state expressed as a series of nodes, which are my facts, and then my edges, which connect them together. To generate a new Quest, I start by generating a new Quest node and that Quest node expands, similar to how an L-system works, by continuously rewriting it based on matching rules.
If there is a relic at the current quest location, then claim it and move on.
I have a few interesting properties that come out of this:
1. I can generate non-linear quests based on different pre-conditions. For example when I want the user to go to a castle and rescue a prisoner, based on the castle properties, say for example whether there's a secret tunnel. I can make branching possibilities such that the user could either do a stealthy infiltration or could assault the castle.
2. Because everything is modeled in a relationship, I can, for example, model how two NPCs might feel for each other. I can use this as a justification for generating a quest for one of them to get revenge.
There is probably an additional phase that I need to do for this, which is generating the necessary narrative constructs, so actual story, exposition, and dialogue to satisfy the planned quests that are there. This will probably be a relatively good use case for LLMs to fill it in by doing very short generation where I can keep them constrained, or I might just explore doing the actual generation through graph grammars as well, which might be interesting.
Anyways I'm looking for people who are also interested in procedural quest generation so that I can explore further pieces as well as make much larger examples of interesting procedural quests. Please hit me up :)
https://redd.it/1u85h6y
@proceduralgeneration
https://preview.redd.it/b888tqxs9t7h1.png?width=1913&format=png&auto=webp&s=807f0f419907c86c8447b8d1ea2c7074684d976e
Hey everyone, I'm looking into a novel way to do procedural quest generation.
Hey everyone, I'm looking into a novel way to do procedural quest generation. The world that I'm in and that they have causal sense to them. For example if I recently go to a village and I sell 50,000 loaves of bread, I don't want to get a quest about getting more bread for the village as they should be already overloaded.
I know many people right now are trying to use other LLMs to do the generation but I wanted to try an alternative approach using graph grammars to support emergent properties.
In the screenshot that you see above me, I have my current world state expressed as a series of nodes, which are my facts, and then my edges, which connect them together. To generate a new Quest, I start by generating a new Quest node and that Quest node expands, similar to how an L-system works, by continuously rewriting it based on matching rules.
If there is a relic at the current quest location, then claim it and move on.
I have a few interesting properties that come out of this:
1. I can generate non-linear quests based on different pre-conditions. For example when I want the user to go to a castle and rescue a prisoner, based on the castle properties, say for example whether there's a secret tunnel. I can make branching possibilities such that the user could either do a stealthy infiltration or could assault the castle.
2. Because everything is modeled in a relationship, I can, for example, model how two NPCs might feel for each other. I can use this as a justification for generating a quest for one of them to get revenge.
There is probably an additional phase that I need to do for this, which is generating the necessary narrative constructs, so actual story, exposition, and dialogue to satisfy the planned quests that are there. This will probably be a relatively good use case for LLMs to fill it in by doing very short generation where I can keep them constrained, or I might just explore doing the actual generation through graph grammars as well, which might be interesting.
Anyways I'm looking for people who are also interested in procedural quest generation so that I can explore further pieces as well as make much larger examples of interesting procedural quests. Please hit me up :)
https://redd.it/1u85h6y
@proceduralgeneration
A Penrose tiling generated through recursive substitution (Python/Manim)
https://www.youtube.com/shorts/_EXt9TYTwMo
https://redd.it/1u8mleq
@proceduralgeneration
https://www.youtube.com/shorts/_EXt9TYTwMo
https://redd.it/1u8mleq
@proceduralgeneration
YouTube
A pattern that never repeats 🧩 #maths
Two shapes. Infinite combinations. Zero repetition.The Penrose til...
Keeping short-seed world gen from getting repetitive
I'm building Altworld, a browser-based life sim where players describe a world in a sentence and the game builds a persistent setting from that. I keep hitting the same wall: short seeds produce very similar results. A one-line medieval prompt almost always gives a village with a tavern, a blacksmith, and a forest nearby.
I've tweaked the prompt to push for more variation, but the fix is brittle. It either breaks coherence or loops back to the same few templates. Has anyone solved the problem of keeping procgen diverse when the input is this sparse? I'm curious how others inject controlled randomness without losing the thread of the setting.
https://redd.it/1u8p9ma
@proceduralgeneration
I'm building Altworld, a browser-based life sim where players describe a world in a sentence and the game builds a persistent setting from that. I keep hitting the same wall: short seeds produce very similar results. A one-line medieval prompt almost always gives a village with a tavern, a blacksmith, and a forest nearby.
I've tweaked the prompt to push for more variation, but the fix is brittle. It either breaks coherence or loops back to the same few templates. Has anyone solved the problem of keeping procgen diverse when the input is this sparse? I'm curious how others inject controlled randomness without losing the thread of the setting.
https://redd.it/1u8p9ma
@proceduralgeneration
Reddit
From the proceduralgeneration community on Reddit
Explore this post and more from the proceduralgeneration community
This media is not supported in your browser
VIEW IN TELEGRAM
One equation generates every bird egg shape — interactive 3D version
https://redd.it/1u90yxy
@proceduralgeneration
https://redd.it/1u90yxy
@proceduralgeneration
Mandelbrot GUI: Visualizer with Perturbation Theory (with a 1e-308)
https://redd.it/1u924qj
@proceduralgeneration
https://redd.it/1u924qj
@proceduralgeneration
Reddit
From the proceduralgeneration community on Reddit: Mandelbrot GUI: Visualizer with Perturbation Theory (with a 1e-308)
Explore this post and more from the proceduralgeneration community
Procedural real-world cities in pure Python: Real footprints → grammar-generated buildings → drivable in Godot engine
https://redd.it/1u95069
@proceduralgeneration
https://redd.it/1u95069
@proceduralgeneration
VoxelCraft — free browser voxel sandbox with 7 dimensions, erupting volcanoes and cities
http://coolgames6x.com
https://redd.it/1u9avk1
@proceduralgeneration
http://coolgames6x.com
https://redd.it/1u9avk1
@proceduralgeneration
Coolgames6X
VoxelCraft — Free Voxel Sandbox Game
VoxelCraft is a free browser-based voxel sandbox game. Explore infinite worlds, mine ores, craft and build — no download required.
A funny story someone called procedural art "not original"
https://redd.it/1u9dcp2
@proceduralgeneration
https://redd.it/1u9dcp2
@proceduralgeneration
Reddit
From the proceduralgeneration community on Reddit: A funny story someone called procedural art "not original"
Explore this post and more from the proceduralgeneration community
This media is not supported in your browser
VIEW IN TELEGRAM
Every shape here is a procedural point cloud. The brain is ~800 particles, and harvesting a memory morphs the cloud into its sigil. No art assets, all SkiaSharp. (Memory Dealer)
https://redd.it/1u9g79y
@proceduralgeneration
https://redd.it/1u9g79y
@proceduralgeneration
From Procedural Dungeon Generator to Plausible World Simulation (writeup + sources)
Six months ago I've started a procedural dungeon generator that answered the question "what could be here". Quickly I got fixated on a different one, "why is this here?", and it quietly reorganized the whole project around itself.
I got a bit carried away. Here is a generated map of the whole continent that includes countless generated dungeons:
https://preview.redd.it/ck15zxpoj38h1.png?width=1768&format=png&auto=webp&s=cab32842e63adb82c0212d24a91e64a697dc68fd
This is a writeup of how that one constraint played out across five subsystems, with a sources section at the end for anyone building something similar.
But first things first.
# Rooms that need reasons
The dungeon is a NetworkX graph (rooms are nodes, doors are edges), but the interesting part isn't the graph, it's that every room has to justify its neighbours. Each room type declares what it provides and what it requires:
"forge": {
"provides": "smithing", "metalwork",
"requires": {
"watersource": {"maxdistance": 2, "required": true},
"orestorage": {"maxdistance": 3, "required": true}
}
}"forge": {
"provides": "smithing", "metalwork",
"requires": {
"watersource": {"maxdistance": 2, "required": true},
"orestorage": {"maxdistance": 3, "required": true}
}
}
Generation runs in two passes. First, pick rooms from the dungeon's archetype and the owning culture's needs. Then run constraint propagation: for every placed room, consult `max_distance` looking for something that satisfies each requirement, and auto-insert it if nothing does.
A forge that needs water within two rooms gets a well nearby. Cultures inherit room palettes and topology preferences (depth, branching, symmetry, secret-passage chance) from parent cultures, so a dwarven forge-clan stronghold and an elven sanctuary come out structurally different. Nothing is placed without a reason it could be defended in-world.
Procedurally but restraint defined dungeon map with plausible layout \(and incursions, i.e cave-ins, floodings..\)
That was meant to be the entire project. Then I wanted the dungeons to belong somewhere, and the somewhere needed a history. And language.
# Languages that remember
Each language has a phonotactic profile (which sounds exist, which clusters are legal, how syllables build) and that profile, not the vocabulary, is what makes elvish sound elvish (I am using high fantasy language placeholders for now).
On top sits a sound-shift engine modelled on real diachronic processes (lenition, vowel shifts, final devoicing, a Grimm's-Law-style rotation), so words mutate over centuries and every name keeps its etymology. Languages also drift apart by divergence against a Swadesh core list (words/concepts/ideas that every culture reasonably can name) at a rate set by remaining contact: civil-war splits diverge fast, trade-bonded neighbours stay intelligible and so on.
Over a long run you get dialect forks, the occasional trade pidgin, and low-prestige languages dying out. Honest caveat: these are placeholder *phonologies* tuned to real-world aesthetics, no grammar yet, what's really simulated is the evolution of name-generating rules, enough that a city's name tells you which century and dialect shaped it.
How the engine changes existing vocabularies
# Geography that causes history
The world used to be a hand-authored JSON map, which meant every playthrough ran on the same continent. Replacing it is a 14-stage pipeline, and the throughline is the same: start with physics, derive everything else.
A simplex-noise heightmap (multi-octave fBm, edge falloff for continent shape) was my choice. Climate falls out of it: a latitude
Six months ago I've started a procedural dungeon generator that answered the question "what could be here". Quickly I got fixated on a different one, "why is this here?", and it quietly reorganized the whole project around itself.
I got a bit carried away. Here is a generated map of the whole continent that includes countless generated dungeons:
https://preview.redd.it/ck15zxpoj38h1.png?width=1768&format=png&auto=webp&s=cab32842e63adb82c0212d24a91e64a697dc68fd
This is a writeup of how that one constraint played out across five subsystems, with a sources section at the end for anyone building something similar.
But first things first.
# Rooms that need reasons
The dungeon is a NetworkX graph (rooms are nodes, doors are edges), but the interesting part isn't the graph, it's that every room has to justify its neighbours. Each room type declares what it provides and what it requires:
"forge": {
"provides": "smithing", "metalwork",
"requires": {
"watersource": {"maxdistance": 2, "required": true},
"orestorage": {"maxdistance": 3, "required": true}
}
}"forge": {
"provides": "smithing", "metalwork",
"requires": {
"watersource": {"maxdistance": 2, "required": true},
"orestorage": {"maxdistance": 3, "required": true}
}
}
Generation runs in two passes. First, pick rooms from the dungeon's archetype and the owning culture's needs. Then run constraint propagation: for every placed room, consult `max_distance` looking for something that satisfies each requirement, and auto-insert it if nothing does.
A forge that needs water within two rooms gets a well nearby. Cultures inherit room palettes and topology preferences (depth, branching, symmetry, secret-passage chance) from parent cultures, so a dwarven forge-clan stronghold and an elven sanctuary come out structurally different. Nothing is placed without a reason it could be defended in-world.
Procedurally but restraint defined dungeon map with plausible layout \(and incursions, i.e cave-ins, floodings..\)
That was meant to be the entire project. Then I wanted the dungeons to belong somewhere, and the somewhere needed a history. And language.
# Languages that remember
Each language has a phonotactic profile (which sounds exist, which clusters are legal, how syllables build) and that profile, not the vocabulary, is what makes elvish sound elvish (I am using high fantasy language placeholders for now).
On top sits a sound-shift engine modelled on real diachronic processes (lenition, vowel shifts, final devoicing, a Grimm's-Law-style rotation), so words mutate over centuries and every name keeps its etymology. Languages also drift apart by divergence against a Swadesh core list (words/concepts/ideas that every culture reasonably can name) at a rate set by remaining contact: civil-war splits diverge fast, trade-bonded neighbours stay intelligible and so on.
Over a long run you get dialect forks, the occasional trade pidgin, and low-prestige languages dying out. Honest caveat: these are placeholder *phonologies* tuned to real-world aesthetics, no grammar yet, what's really simulated is the evolution of name-generating rules, enough that a city's name tells you which century and dialect shaped it.
How the engine changes existing vocabularies
# Geography that causes history
The world used to be a hand-authored JSON map, which meant every playthrough ran on the same continent. Replacing it is a 14-stage pipeline, and the throughline is the same: start with physics, derive everything else.
A simplex-noise heightmap (multi-octave fBm, edge falloff for continent shape) was my choice. Climate falls out of it: a latitude