Drop cesium, develop in something like Houdini
The process is entierly graphical, so you could even work in Blender.
The difference is that with Houdini you should be able to import levels and hierarchical instanced static meshes directly without having to extract and parse array of locations manually.
Yes, the idea is that it will not be entierly procedural anymore
(Its procedural in the DCC app, but then exported and re-created as a fixed thing).
That’s because the engine sucks at procedural anything (of late, it can barely support rendering so it shouldn’t exactly be surprising).
A possible alternative, if you wait about a year until they put the thing they made into a usuable state…
Epic created some sort of procedural AI system that takes a custom level you create and automatically generates and spreads randomized variations of it all around.
On paper and the highly doctored videos they release it absolutely great.
In reality, as i mentioned, unless it generates before runtime, its not going to work right on the current engine.
To make your own procedural based thing in engine, well, the best way is to make a Bluetility script that runs and generates stuff in the editor which you then save and use as a fixed result.
This can really be powered any way you prefer so long as you utilized either the Foliage system or an Hirerchical Instanced Static Mesh array to populate instance of different items all around based on whatever criteria you prefer.
If cesium is any good, it would likely provide building data which you can utilize as the locations of the instances…