Cashgen - (kinda) Infinite Procedural World Generator

Few changes just gone in :

  • Threads are cleaned up properly, no more crash on stopping PIE
  • Material Config changed
    If you specify a standard Material, and enable LOD dithering, and have more than one LOD, the material will be dynamically instanced and LOD transitions will be dithered (same as before)
    Otherwise if a Material is specified, it will be just be used as a standard material
    You can alternatively specify a static material instance, which will be used if no standard material is specified
  • If LOD transitions are not being used, then Tile ticking is disabled

And another :

  • Added option to make a dynamic instance of the material instance supplied
  • Added GetMaterialInstanceDynamic method to CGTile

These options are yet not implemented for CGWorld, right?

Just pushed a commit adding them to CGWorld.

You are a hero!

A quick question.

The configuration option in CGWorldConfig.h that says CollisionEnabled. Will that affect the CookCollisionNow in CGWorldFace.cpp since the CreateMesSection in UpdateMesh reads the CollisionEnabled from the CGWorldConfig?
Or will it be overrided anyway?

EDIT:
Glad I was on the right path by adding if (aWorldConfig.CollisionEnabled) to the code.

Now, I have another question. But I’m not sure if it’s the right place to ask.
I’m getting these artifacts on the meshes:

Do anyone know how to solve this?

I still have this bug: https://img4.hostingpics.net/pics/934700bug.jpg
Any guess?

Erosion enabled? It will produce artifacts on tile edges with most settings.

Thanks! I’ve set the “droplet erosion multiplier” to zero and they disapeared.
I’ve seen that you “Added a delegate to broadcast when world drawing is complete” yesterday. How does it work please? Is there an event name I can use to start a function?

Could the I posted above come from the disabled normal/tangent ?

The hydraulic erosion is tough to get looking decent with tiles without edge artifacts. It can look alright though.

It is very slow as well, if you don’t need it then make sure you set DropletAmount to 0. It lliterally simulates each drop individually landing on the terrain and then travelling across the heightmap eroding/depositing as it goes. It is much, much slower than the mesh generation part.

As for events, I’ve just pushed a change.

CGTerrainManager fires a delegate whenever a tile is updated with new data from the worker thread. OnTileMeshUpdated.
It also calls OnInitialTileDrawComplete blueprintimplementable event the first time all the work queues are empty (so the first time the full terrain is generated).

CGWorld calls OnDrawComplete blueprintimplementable event when it’s completed drawing.

Very probably it’s to do with normals and tangents being screwy. I need to sit and design a refactor of the mesh generating code and cache the heightmap to start sorting that out.

Little fixes I can fit in easily, but larger chunks of work I can’t fit in much at the moment!

I see, well, I’m happy to see that there might be a tag to the. And I do understand that it’s not a small task to sort out an the with normals and tangents.
And it’s an we can live with for a while.
I have to ask tho. Is the normals and tangents going to be sorted out at some point? I mean, since it’s such a complex, it would be easier to remove the world part of the plugin.
Also, I asked earlier about what license you put this plugin under. I could not seen any info on that on github.

It’s MIT so do as you like basically.

I need to have a proper look at the rendering weirdness, haven’t even tried to fix yet. It’s probably related to the normal calculation but I’m not certain.

Can’t help on timeline I’m afraid, maybe this week, maybe next month. Got a lot on in August :slight_smile:

thank you mid_gen!

i really appreciate your help!

I’m more likely to spend some time looking at getting CGterrain working in multiplayer than the CGWorld stuff first tbh.

Just a heads up!

Well, that’s all I needed to know. That there are plans to fix it at some point.
The way we are working right now, we can’t really set anything in stone. To be honest, we are thumbling forward in the dusk, trying to figure things out as we go.
It’s not a recommended way to do it. But when working on the edge like this. It’s hard to do any planning at all.
Nothing like the plans and structured work on Ubisoft I bet. :stuck_out_tongue:

It’s really nice of you to put this under the MIT license. As an upcoming indie game studio, we don’t have any budget at all at this point.
First of all, being a full time student does not make anything easier. lol
And then there is this thing called Real Life that seems to live on our doorstep. :rolleyes:

Well, enough about that.
We are really excited to use this plugin in our game. :o
And sure, take your time. CGTerrain in multiplayer is also an awesome . :smiley:
This plugin has a lot of potential.

is there a way to completely disable LODs?
my map is really small and i need to render the complete terrain for my project
i tried to set the LODs range over 500000 - doesn’t work

For the CGWorld. Is there a way for me, with the plugins current state, to use Vertex Color like you do in the tutorial video?