Cashgen - (kinda) Infinite Procedural World Generator

I’ve been messing around with the ProceduralMeshComponent for a while, and after many revisions I’ve got a version that’s sort of ready for other people to see.

This is all built with community assets, thanks go out to :

@koderz for his RuntimeMeshComponent
The OceanPlugin guys and gals
@AaronWith2As for the grass BP
Me for my UnrealFastNoise plugin :slight_smile:

** branch is built on 4.15**

Contributions welcome, particularly materials :slight_smile:

The WorldManager actor spawns Zones around the designated Pawn as it moves, has basic LOD functionality.

Latest update! Demo scene now looks like this :

LOD demo:

Updated - Removed RuntimeMeshComponent from project plugins

**You will now need to install RuntimeMeshComponent to your engine version to run the project.
**

And then your level blueprint can do something like this (I’m setting a silly walk speed for debugging purposes) :

4 Likes

Awesome stuff. Thanks !

Looks cool! What about performance, compared to a landscape?

The quality of the landscape and materials is really down to how you configure it, I do plan on including some nice materials but I am a programmer :slight_smile: So if any artists want to contribute, I would be very happy to accept! This is with the patches turned up to 128x128 and the unit size down to 200 and some starter content materials. As you can see the mesh and collision update with that size patch is a problem.

I am regularly chatting with Simon () on Slack about our projects. Thanks on the link for the world origin stuff…I am not actually resetting origin at the moment, need to get around to doing that.

I’ve been talking with Koderz on slack about enhancements to the ProceduralMeshComponents, particularly as regards smarter threading on the collision updates which should enable these higher res meshes to load in nice and smoothly.

The performance bottleneck is currently the mesh and collision update, which I hope to be improved. Rendering of the landscape once it’s generated will depend how you go on the materials side of things.

Here’s a shot of 50x50 128x128 patches with some pretty unsympathetic LOD settings.

Pushed a small update to allow inversion of the noise algorithm. I was wondering why the RidgedMultiFractal looked so different from my old noise generator :cool: Now back looking much more natural. Updated the first video.

Untitled.png

Thanks, and great news, it means it can be a true landscape alternative. In case of my strategy game I want to have a cheap terrain material, with a few textures with slope and height based auto blending, and the whole level could be generated on game/level start… exploring your project is added to my to-do-list :slight_smile:

There’s a basic slope/height material in the project based on some tutorial code I found that you can try out. I use Dokyo’s low poly asset packs from the marketplace for materials/meshes on my private repo.

Back from my travels…haven’t slept in 32 hours but I thought of a couple of silly mistakes in the code while I was on holiday and just pushed a small update to resolve them (Normal and tangent calcs were being duplicated 4 times, oops).

This looks awesome.

Thanks :slight_smile:

Minor update this morning, changed terrain to spawn around the world origin.

Next up, materials.

Hello, your plugin look awesome, i downloaded the plugin from github, put the files on my plugin project folder. but i have an error when i try to open it. Can you tell me how to fix it please ?

The error tells you, it cannot find a blueprint referenced in the game mode. Therefor you either remove the reference or fill the reference up with a character

There are a few things that I reference in the demo level you’ll want to add.

In the editor, click ‘Add New’ and then ‘Add or Content Pack’, and add :

  1. Starter Content - The sample landscape material I use references a few textures from there
  2. One of the character features (Third Person/First Person). The WorldManager just needs a reference to any pawn, I’ve used the ThirdPerson one in the demo videos.
  3. My demo level uses [Community Project] WIP Weather & Water Shader - Game Development - Epic Developer Community Forums for the water. If you want to use that you’ll need to include their plugin in your project as well

Sorry guys if i seem to be a noob, but her is the message i have when i try to open the project

UnrealLibNoise Plugin missing

8c3c2d44c3de2a313ead549d7052b654e1c91e36.jpeg

Awesome stuff. Actually just what i was aiming at with my project as a base setup for my game… but quite more advanced than what I would be able to manage to achieve in any near future. With this I have no more excuses to start testing out my gameplay-concept.
For the material: Do you use vertex-colors? I was planning on using them to blend up to 5 different materials als biome-grounds - but the color structure is broken for blueprints as it seems… I can only use Linear Color from there, meaning I can’t really set up arrays of vertex colors to use with procedural mesh generation.
But I have a test-material blending on different heights, so far I set up a transition at water lever (or just above … similar to yours) and one near the mountain peaks for stone or glaciers.
Adding blending by slope is just another option I was going to integrate for my project. As all the blending (height, slope, vertex color) would be in one material: are there any concepts to actually put different materials onto the meshes and have a smooth transition?

I hope you keep up the good work … I can’t wait to try your code myself. Too bad it has to wait for next week.

This looks awesome! Great work man, wish I had discovered this sooner :slight_smile:

We had tried integrating a procedural terrain system back in 4.7 or so but ended up removing it for performance reasons as it generated a small amount pretty much every tick. This looks like a better solution, building world tiles is what I really wanted to do with the old one.

Going to download and try it out, it looks great. Knowing it plays nicely with the OceanPlugin is a big bonus, thanks!!

I am also having a hard time installing the plugin… even after adding the LibNoise Plugin and activating it, I get an error message “Missing or incompatible modules in CashGen plugin” at start of UE4.12 (also tried 4.11 and 4.10 with the same result). I put the plugins to the plugins folder of the engine, not the project, as I also recieved this and/or other error messages when the plugins where just in the project’s plugins folder.
Any advice on what to do?

Hmms, I must have left a reference to that in the project somewhere. It’s not used anymore so should work fine without the warning.

I’m going to update to 4.12 and try out Koderz’ realtime mesh stuff when I’m back from vacation, and make sure any of these niggles are cleaned up.

Err yeah derp on my part. Just checked the UPROJECT file on github and it still had the UnrealLibNoise dependency in it. I’ve committed the change via the web but I’m not in front of my UE setup at the moment to test, but that should sort it out.

hey awesome job looks like a great plugin.
sadly, i can’t open your uproject in 4.12.2 or 4.11.2

first i click on your project and i get this.
RebuildWithDiffEngine.PNG

so i rebuild and get this
couldNotBeCompiledBuildFromSource.PNG

then i try to generate visual studio files so i can compile but i get this

i know this is a WIP but just wanted to let you know.

can’t wait to mess around with this. looks dope.