Created by @r_channels
C++ libraries for terrain generation
Hello,
I'm looking into generating heightmaps for game worlds to be rendered in an engine like Unreal.
I can find plenty of noise libraries but I'm looking for something abit more complex that can produce realistic terrain heightmap features. For example a realistic looking mountain.
Basically a lighter version of Gaea but source/library-only.
Any suggestions?
https://redd.it/1m1qhy9
@proceduralgeneration
Wrapped Splash Map
https://redd.it/1m1bvse
@proceduralgeneration
Looking for good sources to learn about PCG for my bachelor's thesis
Hello everyone, I am doing my bachelor's in CS and it's thesis time. I am a noob to PCG, I chose a topic on it because I didn't like that all my profesors hoped on the AI hype when handling topics. So I came up with something random I thought I might do someday...
After procrastinating for 2 semesters and wasting my money and time....I decided to run a prototype procedurally generated terrain based on simplex noise octaves and holy fuck, I am in love with this topic already and wanna learn stuff, but I know nothing. Prototype was succesful but I tweaked things "randomly" for 10h
Please recomend me good articles, papers etc if you have read any, they are the most important as I can do my literature review from them. I am mostly intereted in terrain development, perlin noise etc for survival games but other reads that could be helpful would be nice too. Maybe cellular automata too if it can be somehow applicable, my professors love cellular automata :P
https://redd.it/1m0h4bs
@proceduralgeneration
What's your biggest problem with procedural generation in game design / development?
Want to invest some time in procedural generation skills, and feels like huge part of it is knowing weaknesses.
https://redd.it/1m0abtj
@proceduralgeneration
Proc Gen Resource List
So a little backstory: last year I created a game development community and last month I turned it into a non-profit organization aimed at providing more resources to game developers. Based in the Montreal area, we've grown to just below 500 people on the server in a year. One of our regular events attendees shared this gold mine of a procedural generation resource into our resources channel:
A massive link library to all kinds of papers and talks about procedural generation. I'm sure the info was shared somewhere in this subreddit, but if not then consider this my gift to the community:
https://procgen.space/resources
https://redd.it/1lzlaz2
@proceduralgeneration
Flying over surface of Mandelbulb fractal (raymaching + particle visualization)
https://redd.it/1lzftpw
@proceduralgeneration
ideal method to place rocks/trees etc. on a map with procedural generation?
I currently have a map with diff areas designated for various biomes, problem is when I try to use WFC to place landscape elements like trees/rocks around the map my laptop simply struggles. I even made the mistake of trying to generate individual tiles with WFC in biomes(you can guess how that went). I'm probably going to use noise for the ground layer(is this optimal?) of terrain but I still am unsure about how to generate landscape elements organically. I could of course multi thread it, assuming Godot has that feature - I'm new to this.
bit rough, still in development
https://redd.it/1lylp02
@proceduralgeneration
What do you say to people who claim procedural generation is lazy, not your work, or disrespectful to creatives?
Or to people who mix it up with the nebulous category of AI (power-intensive NN models trained on scraped data)?
One classmate tried to tell me that procedural generation was an insult to his time!
https://redd.it/1lxw627
@proceduralgeneration
Any nTop users in here? I just made a tutorial on procedural staircases 😁
https://redd.it/1lwtmm2
@proceduralgeneration
Face in the place, London
https://redd.it/1lwmrjl
@proceduralgeneration
House/Room Layout Generation Paper
I've become borderline obsessed with house exterior and interior runtime generation, but I've struggled to find resources that don't rely on AI to make it happen.
I also run a game developer nonprofit in Montreal, and one of our discord members and event regulars shared this paper with me on generating building interiors.
Once I'm finished work for the day, I plan on trying to implement it in Unity (since that's where most of my proc gen work goes to die), but I wanted to share it with everyone here as an interesting take on interior generation based on parameters like building areas.
I would love to be able to one day generate a city, all the way down to explorable buildings, and this paper does seem promising for a good start at least.
If anyone has other resources or better processes, consider this post as an open invitation to be a resource dump :)
https://onlinelibrary.wiley.com/doi/10.1155/2010/624817
https://redd.it/1lwali8
@proceduralgeneration
OpenGL - procedural trees - episode 2 - adding leaves
https://www.youtube.com/watch?v=z0habtc4qN4
https://redd.it/1lvt1lq
@proceduralgeneration
Nova Patria - A Roman Steampunk Colony Sim - now has a Steam page!
https://redd.it/1lvmd4f
@proceduralgeneration
A Country with 27 similar States
https://redd.it/1lvkjfr
@proceduralgeneration
I'm now creating webapp to share seeds (balatro and other procedure generation based games), and I can't stop thinking about this domain. I mean, it's 30$, but I really can't stop thinking about it
https://redd.it/1lv1tdo
@proceduralgeneration
Looking for ProcGen Developer
Looking for Developer: Side Project Building a Procedural Dungeon Generator
Hey everyone! I run a TTRPG-focused site (WorldSmith.io) and I’m looking for a dev who’s passionate about procedural generation to help bring a dungeon generator to life as a fun side project.
The goal: Build a browser-based top-down dungeon generator that outputs simple, clean, randomized dungeon maps for fantasy RPGs. We want something visually similar to popular online dungeon tools (watabou, donjon, etc.).
This isn’t a rush job or a big contract. I’m looking for someone who loves procedural generation and might want a meaningful side project. We want to branch into procgen a lot more in the future, so if we vibe well, I'd love to turn it into a long-term thing!
https://redd.it/1m1mcq5
@proceduralgeneration
Nova Patria is a Roman Steampunk Colony Sim
https://redd.it/1m0o5db
@proceduralgeneration
Squarified Tree Maps for Layout Generation
Hey hey all, I shared some resources yesterday about procedural generation, and one of them talked about squarified treemaps for floor plan generation. The paper provided a detailed description, but I didn't see any proper algorithms in the paper; just theory.
I was, however, able to track down the paper that was referencing the "Squarified Treemap" algorithm, and in keeping with my theme for sharing more and more resources for the proc gen community, here is the link to that paper! https://vanwijk.win.tue.nl/stm.pdf
https://redd.it/1m0fl7a
@proceduralgeneration
Biomorphic Headphone Stands! Fun to make, but a little weird 🤣🎧🤣
https://redd.it/1lzm00y
@proceduralgeneration
0120
https://redd.it/1lzjx7s
@proceduralgeneration
Central | python + gimp
https://redd.it/1lyy8co
@proceduralgeneration
Dissertation Showcase - Exploring a Large NPC Ecosystem in a Procedurally Generated Voxel Environment in UE5
https://reddit.com/link/1ly4sue/video/ep1yrmpq1hcf1/player
This subreddit really motivated me for the past year to complete my dissertation and have my own procedural generation focused project. I'm happy with how it turned out and wanted to share it with the community.
The project was done solely in C++ using Unreal Engine 5, and besides the purchased 3D assets for the NPCs, everything is generated at runtime.
https://preview.redd.it/a7ncjqltzgcf1.png?width=3439&format=png&auto=webp&s=1b45521e7012d6f76d78b831ecf5b1c3856ce868
https://preview.redd.it/c300mwkuzgcf1.png?width=3439&format=png&auto=webp&s=166c50473f809a9cbccfdb3167ff598ecfb97bd0
# Some performance metrics
Computation Averages for 150 NPCs Over 60 Seconds
Pathfinding Tasks: 1,705
Actions Requested: 1,501
Notifications Sent: 1,086
Vision Sphere Updates: 30,759
https://preview.redd.it/afl9gc1jzgcf1.png?width=2000&format=png&auto=webp&s=f5ba8a463c9264fb1d44d589e6b8459e7da5b133
https://redd.it/1ly4sue
@proceduralgeneration
FB reminded me of my first attempt at procgen in Godot last year
https://redd.it/1lx5kzq
@proceduralgeneration
Mystery Elevator!
https://www.youtube.com/watch?v=AnIH3BJlrO8
https://redd.it/1lwpkqi
@proceduralgeneration
Lambournian Grid Shifting explainer: Part 2 (generating npc movement and routines)
https://www.patreon.com/posts/133322960#id=-Part%202-:~:text=of%20the%20guide.-,%2DPart%202%2D,-A%20naive%20solution
https://redd.it/1lwb9yj
@proceduralgeneration
Looking for advice on how to classify terrain based on a height map
To be brief I am trying to make an island generator that sets tiles based on height; however, I was wondering if there was a more efficient way to loop through different tiles and assign based on height rather than just a bunch of if statements. Additionally I am using a random function bounded by ranges that i feel are reasonable(they might not be I'm new to this) to give a more varied result. here is the code in GD script (\~ python) if my explanation was unsatisfactory extends TileMapLayer
#constants
var map_size := 300
var gradient:=.45 # must be 0<x<.5 effects how far out the island can go with a max value of .5
# __innit__
var fnl := FastNoiseLite.new()
var random := RandomNumberGenerator.new()
#Fast_Noise_Light -----------------------------------------------------
# General
var frequency := Vector2(0.01, 0.1) # Scale, larger = smoother, smaller = more detial
# Fractal
var f_octaves := Vector2(3, 8) # layers of noise
var f_lacuranity := Vector2(1.5, 3.0) # essentially applies zoom to an octave
var F_gain := Vector2(0.3, 0.7) # Strength of each subsequent octave
var f_weighted_strength := Vector2(0.0, 1.0) #str of subsequent octaves blending
var f_ping_pong_strength := Vector2(0.0, .5) # cuases more repetitive terrain, well keep this low
# Domain Warp
var dm_amplitude := Vector2(5.0, 30.0) # Warp strength
var dm_frequency := Vector2(0.01, 0.1) # Frequency for warp, same general concept
# Domain Warp Fractal
var dwf_octaves := Vector2(2, 5) #^ but for warp
var dwf_lacuranity := Vector2(2.0, 6.0) #^ but for warp
var dwf_gain := Vector2(0.3, 0.7) #^ but for warp
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
fnl.seed = randi()
fnl.noise_type = FastNoiseLite.TYPE_SIMPLEX_SMOOTH
fnl.frequency = random.randf_range(frequency.x, frequency.y)
fnl.fractal_octaves = random.randi_range(f_octaves.x, f_octaves.y)
fnl.fractal_lacunarity = random.randf_range(f_lacuranity.x, f_lacuranity.y)
fnl.fractal_gain = random.randf_range(F_gain.x, F_gain.y)
fnl.fractal_weighted_strength = random.randf_range(f_weighted_strength.x, f_weighted_strength.y)
fnl.fractal_ping_pong_strength = random.randf_range(f_ping_pong_strength.x, f_ping_pong_strength.y)
fnl.domain_warp_amplitude = random.randf_range(dm_amplitude.x, dm_amplitude.y)
fnl.domain_warp_frequency = random.randf_range(dm_frequency.x, dm_frequency.y)
fnl.domain_warp_fractal_octaves = random.randi_range(dwf_octaves.x, dwf_octaves.y)
fnl.domain_warp_fractal_lacunarity = random.randf_range(dwf_lacuranity.x, dwf_lacuranity.y)
fnl.domain_warp_fractal_gain = random.randf_range(dwf_gain.x, dwf_gain.y)
generate_map()
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
generate_map()
func border(noise_topo,x:int,y:int):
var center = Vector2(map_size/2,map_size/2)
var new_noise = fnl.get_noise_2d(x*.01,y*.01)
var current_pos = Vector2(x, y)
var euclid = (current_pos - center).length()
var max = euclid*gradient
var adjusted_val = max*noise_topo*30
noise_topo = adjusted_val+noise_topo
return noise_topo
pass
func generate_map():
for x in map_size:
for y in map_size:
var noise_topo:= fnl.get_noise_2d(x,y)
var noise_topo_2 = border(noise_topo,x,y)
if noise_topo_2 < -0.2:
set_cell(Vector2i(x, y), 0, Vector2i(2, 4)) # Water
elif noise_topo_2 < 0.4:
set_cell(Vector2i(x, y), 0, Vector2i(0, 4)) # Grass
else:
set_cell(Vector2i(x, y), 0, Vector2i(4, 4)) # Stone
https://redd.it/1lvwpks
@proceduralgeneration
Working on a Procedural Village Generator – I Would Love Some Feed Back. What Visuals or Features Would Make It Really Pop?
https://redd.it/1lvt9ex
@proceduralgeneration
Convert pixel-art-style images from GPT-4o into true pixel resolution assets
GPT-4o has a fantastic image generator and can turn images into a pixel-art-like style. However, the raw output is generally unusable as an asset due to
High noise
High resolution
Inconsistent grid spacing
Random artifacts
Due to these issues, regular down-sampling techniques do not work, and the only options are to either use a down-sampling method that does not produce a result that is faithful to the original image, or manually recreate the art pixel by pixel.
Additionally, these issues make raw outputs very difficult to edit and fine-tune. I created an algorithm that post-processes pixel-art-style images generated by GPT-4o, and outputs the true resolution image as a usable asset. It also works on images of pixel art from screenshots and fixes art corrupted by compression.
The tool is available to use with an explanation of the algorithm on my GitHub here!
P.S. if you are trying to use this and not getting the results you would like feel free to reach out!
https://redd.it/1lvk9wp
@proceduralgeneration
Flow Field -7
https://redd.it/1lvcefq
@proceduralgeneration
I've been cooking also pretty sure this is the first universe sim of its kind ever to fully simulate universal age based on the most popular and real theory of heat death it still needs some baking and i need to add black dwarfs
https://redd.it/1luvg46
@proceduralgeneration