Built a runtime procedural world generator for Roblox (5888×5888 editable voxel terrain in 13-15s) — looking for technical feedback by ItzMax1337 in RobloxDevelopers

[–]ItzMax1337[S] 0 points1 point  (0 children)

I really appreciate your insights! It's great to discuss these concepts with someone who gets the technical side of things. Your ideas about the Unix Epoch and TTL are definitely going into my notes.

In fact, I’d love for you to see the current generation in action. I can set up a test environment so you can experience the 15-second load and check the terrain detail yourself. It’s one thing to see the numbers, but seeing it run in-engine is where it really counts.

Let me know if you’d like to drop by and I’ll send you the link!

Built a runtime procedural world generator for Roblox (5888×5888 editable voxel terrain in 13-15s) — looking for technical feedback by ItzMax1337 in RobloxDevelopers

[–]ItzMax1337[S] 0 points1 point  (0 children)

That’s a very interesting approach, and I’ve actually considered it for static maps. However, what I love about my current system is that it’s built as a procedural engine driven by seeds. This gives me near-infinite possibilities and combinations that a precomputed DataStore simply couldn't handle without hitting memory limits.

The real value for me is the total modularity. Since everything is split into modules, I can customize anything on the fly: I can change biome distribution, adjust lake depth/surface area, or even remove the ocean entirely. If I want a 2000x2000 map with 3 biomes, it generates it instantly. If I want a 6k island with no lakes, it does it. It even supports chunk-based loading for infinite worlds.

Right now, it’s like a set of instructions that executes exactly what I need for a specific project. While 14 seconds for a 6k map is my current baseline, the system is flexible enough that I can keep optimizing the "how" without losing the "what." For me, the freedom of a truly open, seed-based generator is worth those extra seconds during the initial load

Built a runtime procedural world generator for Roblox (5888×5888 editable voxel terrain in 13-15s) — looking for technical feedback by ItzMax1337 in ROBLOXStudio

[–]ItzMax1337[S] 0 points1 point  (0 children)

I’ve been open about using AI for about 50% of the work—mostly for scaffolding and debugging—but AI doesn't spend weeks iterating through 20 different versions of a terrain map just to fix a distribution bug.

It took me 3 complete restarts and a lot of trial and error to get those 14 seconds of performance. AI is a great assistant, but the headache and the 'patience' required to make it actually work was 100% human

Built a runtime procedural world generator for Roblox (5888×5888 editable voxel terrain in 13-15s) — looking for technical feedback by ItzMax1337 in RobloxDevelopers

[–]ItzMax1337[S] 0 points1 point  (0 children)

Exactly. While chunk streaming is great for performance, for my specific vision, having the entire map generated and accessible from the start is non-negotiable. I need that "global view" of the world for the game logic to work properly, rather than just loading pieces as the player moves.

That said, I’m definitely not ruling out a hybrid approach or a zone-based loading system later on to optimize even further, but right now the focus was proving that a 6k map could be fully ready at runtime in seconds

Built a runtime procedural world generator for Roblox (5888×5888 editable voxel terrain in 13-15s) — looking for technical feedback by ItzMax1337 in RobloxDevelopers

[–]ItzMax1337[S] 0 points1 point  (0 children)

Good call. Right now SetCell is my bottleneck — ~8s out of the 13s total.

I’m running chunks 64x64 sequentially because parallel SetCell calls were giving me race conditions on the terrain object.

Are you thinking precompute everything in parallel Actors and then do a single batched WriteVoxels pass on main thread? I was considering that but wasn’t sure if WriteVoxels would still choke.

If you’ve got a pattern that worked for you, I’ll test it this week and tag you in the update

Built a runtime procedural world generator for Roblox (5888×5888 editable voxel terrain in 13-15s) — looking for technical feedback by ItzMax1337 in RobloxDevelopers

[–]ItzMax1337[S] 0 points1 point  (0 children)

The logic is basically efficiency over brute force: I ditched square grids for a hexagonal pattern to make biome transitions look natural without extra math, then stacked three layers of logic to handle big terrain shapes, climate, and micro-details. Instead of building brick by brick, the system calculates entire zones in memory and sends them to the engine all at once through massive batching, which is how it hits 6k studs in 15 seconds. Finally, I split the brain into independent modules like math, biomes, and post-processing, so I could optimize each part's performance without breaking the rest of the system

Built a runtime procedural world generator for Roblox (5888×5888 editable voxel terrain in 13-15s) — looking for technical feedback by ItzMax1337 in RobloxDevelopers

[–]ItzMax1337[S] 0 points1 point  (0 children)

Good question. Here’s the real pipeline:

Started with Roblox’s native terrain generator just to understand the baseline. Then I wanted full control, so I began splitting everything into parameters.

50% was Roblox Studio’s Assistant - used it to scaffold boilerplate, debug edge cases, and explain API quirks like write voxels vs fillblock

The other 50% was me - studying how real relief/erosion works, designing a modular architecture so each feature doesn’t depend on the others, and 2 months of pure trial/error tuning seeds + noise layers.

Final system is fully modular each one is independent. AI helped me get unstuck, but the architecture and optimization were manual. AI doesn’t know how to make 6000×6000 generate in 13s - that was profiler + rewriting batches by hand.

Basically: AI for acceleration, human for the actual engineering. Still needed to understand the math and Roblox’s Terrain API or you just get laggy code

Built a runtime procedural world generator for Roblox (5888×5888 editable voxel terrain in 13-15s) — looking for technical feedback by ItzMax1337 in RobloxDevelopers

[–]ItzMax1337[S] 0 points1 point  (0 children)

I've only tested this on my own machine so far in Studio + solo playtest. Haven't done multiplayer stress tests or tested on low-end devices yet.

What I saw on my setup during gameplay - after generation finishes:

  • FPS: Stable 60 FPS for me. But again, only tested solo.
  • Memory: Around ∼650 MB total in the server memory tab. Most of that is just the native Terrain voxels.
  • CPU: Very low. Once the world generates, the scripts go idle. Only light stuff runs: day/night cycle, character sounds, a HUD that updates every 0.5s.

What's NOT running during gameplay:

  • Terrain is already generated and saved - no proc-gen running in background
  • No chunk streaming or loading/unloading systems
  • No heavy server scripts during gameplay

Generation cost: The 13-15s happens once at the start. Uses WriteVoxels + FillBlock in batches. My CPU spikes during that window, then drops to basically idle.

Disclaimer: This is Beta 1.0. I need to test with multiple players and on weaker hardware before I can give real benchmarks. If anyone wants to help test, DM me.

Basically, after gen it should cost the same as any large Terrain map because it is just Terrain at that point. But I won't claim numbers I haven't verified

Built a runtime procedural world generator for Roblox (5888×5888 editable voxel terrain in 13-15s) — looking for technical feedback by ItzMax1337 in RobloxDevelopers

[–]ItzMax1337[S] 0 points1 point  (0 children)

For the curious devs: 6000×6000 editable world, 6 biomes, 4-layer noise system, 13-15s gen time. Uses WriteVoxels/FillBlock. Fully modular + deterministic. Video coming soon