Procedural Generation

Okay - so this might be under the wrong section - if it is please, let me know…

So right now I have a script that generates solar systems (sun, planets, moons, beginning to work on asteroids) and stores then in a database, for my game’s proof of concept, I will be using the ID# of each entity to procedurally generate the surface (pseudorandomly generate might be a more appropriate term) - later I plan on having more “seed” values for each entity to further help define them.

Since I am planning this project to be online, I will need a server, a custom server solution… Which brings me to my question:
If I make a custom solution for the server and I need to generate the terrain on both the client (visual) and server (verification of legitimacy of movement and interaction) - well what can I use?

I know about CashGen (however it is not working for me period, already posted in the appropriate forum).
There is SimplexNoise and UnrealFastNoise(used with CashGen) but these are for use with UE4.

Then there is LibNoise - however, from my searching can only be used with UE4 IF it is dynamically linked? How to do that?

Is there potentially another possible solution(s) out there?
If I have too, I guess I can reinvent the wheel (but I would rather not - adds extra development time).
If I do need to make my own solution, can someone point me to a “good” source? I can wrap my head around most coding topics - except this one (for some reason)…

Anyways,
Thank you for reading my long post…

The Host/Client relationship that UE4s architecture affords means you can do most of what you’re after in a “headless” server, rather than needing anything external.

If your pseudo random numbers will generate the same terrain, then as long as the host dictates what planet/surface/terrain to load, then your clients can generate the visuals and it be consistent. The challenge is going to be rigid body dynamics (read: physics) as your host will be in charge, but the clients can still process their own - and this is one approach to ensuring you’ll see good performance.
(Plus, for some items, there’s little point processing them on the server anyway, like debris from an explosion that will disappear anyway)

The first thing I would do is get the Host generating the planets, start simple initially. Get your clients connecting to the host. Configure appropriate network replication - seeing the clients move, see the orbits of your planets etc.

Then build up from there with the terrains etc.

Thank you for your reply.

I guess I should go a bit more in-depth explanation of what I am looking for/at.
The goal is to go from Galaxy to Surface (think Star Citizen).
I already a demo level for each: Galaxy, System and Planet - now I am trying to figure the last scale which is surface.Hence if I can get CashGen working - it would solve the host side.

Surface scale would be one that you could control a character.
I am still trying to get the mechanics down - but at the moment I am looking at a tick-based game - so real time connection not needed.
I understand that UE4 uses floats internally and to fit a planet in would need to use doubles - or a custom coordinate system - which I do have, not tested in UE4, but tested in a custom built project.

For demoing/proof-of-concept, today I am going to try getting VaRest into 4.19 to communicate with a webpage to retrieve the Galaxy, System, etc…

So with this being said - this would need a lot of headless servers to check for validation of moves, building etc… I have not tried making a headless server - I like the idea, since I don’t need to rewrite everything, however how is it in efficiency? (no graphics obviously) - maybe I should go ask the guys at Offworld Industries (Squad) if that is how they do it.

There are various places where UE4 uses float/double, so you ought to be fine using doubles. Besides, it’s a C++ standard data type, so it should be fine, even with replication.

Each UE4 host can handle a pretty hefty number of connections (think 64+ players) relatively easily, so it would depend on how many players you wanted on each “host.”
You could take an EVE Online approach and have different servers for different planets, but then it’s likely that wouldn’t be seamless. So if this is something you’re after, SpatialOS might offer a proven and robust solution.

You can handle a bunch of the connections, comms, login/join/quit etc in a UE4 host, then ONLY allow this host (call it the Lobby instance) to formally connect to your Database. So your players perform some initial connection to a Lobby, you show some UMG for the login data, that is then passed to the Lobby Host, which does the comms to the d’base and returns back to the player… does the next step of login, transfers to the planet server and so forth.
(I suggest the above rather than allowing clients direct access to the database for a potential layer of security; it means all your comms between the client/host go through UE4 connections so you simplify where and how you do network traffic/replication etc)