Download

Is there anyway to fast track building a city from scratch?

I am in the process of creating the map for my game concept. I have a map based on Houston, TX and it is similar sized. Real world sized and chopped up with the World Partition tool. I have essentially imported the OSM data and created a height map, I then properly scaled it in unreal to create a landscape terrain the size of Houston. The ground and everything else is fine. I then downloaded OSM data and made FBX files of all the railroads, roads, sidewalks, walking paths etc in the entire region of Houston(the part that I imported anyway). My question is, is there any possible way to convert the FBX?
files to a spline or have them form to the landscape to be useable as is? This is literally a city worth of landscape so it will take a super long time to create the splines manually. I am certainly not above doing this(already started), I just want to know if I can ease the pain on myself. I have uploaded a photo to illustrate what I am trying to portray.

The green represents what I have manually splined so far. The orange is just the railroads only, as importing all the FBX paths at once will crash UE5 guaranteed. I hope to find a method and then I would create the roads, railroads, sidewalks etc all separately layered. It takes a while to pan the entire map even on 8 camera speed with the 100x modifier. Any help would be greatly appreciated. Please advise.

No. And if you scaled the data in unreal chances are the geo data is not going to match the real data from the railroad tracks.

Unfortunately, Unless you are able to get 1m lidar DTMs you will always have that particular issue.

What you should do is produce a DTM from the data, with the railroad tracks and everything else.

Also, scaling up in a GIS program helps reduce the bad stretching that occur when you take a data sample that’s 20 or 30m to be 1m.
Since it’s mostly the purpose of the program, the scaling is done differently with a special effort to preserve slope values - which is not true for adjusting things either at the PNG level or within unreal.

(Not to mention you should never change the X and Y scale of a landscape unless you know what you are doing. So you saying the size was adjusted within unreal is an immediate red flag).

Once you have the map and the roads to scale, in gis, you just export the streets/railroad as CSV.

You then create a bluetility importer in unreal, load the CSV and generate the spline.

This is done one street at a time.
Unless you know c++ and can modify the existing code, the ability of blueprint to loop or update the csv data you read in is inexistent.

At the same time, you definitely want each street to be a separate spline, so your actors can follow the splines as you code them to.

Depending on the type of game you may even need each road to be a conglomerate of splines.

If that’s the case I would highly suggest spending a couple of days on the spline generation tool, so you can give yourself some configurable options and generate a package of some sort which you can just configure and get to auto run.

The best approach to that is to use OOP in C++. Create a Road class, generate instances of Road by reading data in on construction.
Create a “Road generator” that parses the content of a directory of .csv to generate the Road system the game will use.

Once you are there you can actually make something similar for the buildings exterior.
For most US cities you are usually able to find somewhat detailed building shapes.

Generating non instanced meshes will likely kill performance - you have to be really careful as to what and how you do (because unreal is â– â– â– â–  at performance, if you were using a different engine you may not have to over think this apsect).

There’s no fast track to any of this.

Keep this in mind too:

The splines can be used to deform the tiles.

The splines have to be inside persistent with no mesh. If you need to add meshes they need be to cut up to fit inside specific tiles.

For performance you shouldn’t be using splines to make roads with meshes. Since splines don’t use instancing.

Good luck.
Houston is not a bad entry point to learn all of this.

However I would suggest you practice on something much smaller so that you can get stuff to work right.

Pick a desolate lonely place that offers 1m lidar terrain scans to start so you don’t have to waste time figuring out how to get GIS to stretch terrain maps and how to get street map data onto it accurately.

Ps:
I didn’t mention it, but obviously you will need to convert from GIS data x/y/z to unreal data.

PPS: you better make sure you are using the correct format for geospacial distortion.
Remember: unreal is always a flat earth while the actual earth is round.
This causes measurements to be vastly different exponentially unless you correctly deform the heightmaps generating the somewhat correct falloff that the earth radius provides.

This leads to another issue too: All your coordinate systems Z will always be wrong, since the terrain is adjusted for accurate representation based on a specific geographical location.
To get the real altitude in engine you would have to develop or adopt an approximate formula based on the value of the geographical representation used by the heigtmaps (you can probably search what formulae to use. The map adjustments make use of the same formula.)

As with everything, it all depends on what your end goal is. Maybe none of this stuff actually matters to you and you can just create the spline system based on flat/equispacial representations.

Thank you immensely for your detailed reply. I am pretty new to unreal so I will read your comment several dozen times and then carefully devise a new plan to create my map. Thank you for letting me know about the scaling issues, I tried to skirt this with the novice technique of making a landscape in unreal and also creating a true sized landscape in blender from the OSM data. I then made that blender file into an FBX and scaled my unreal landscape to the exact size of that one after I imported it into unreal. This caused some crashes so I new I must not using the most efficient method. I wasn’t to worried about perfection as it will be loosely based on Houston but exact placement of buildings etc isn’t a must. I will do a bit more research and recon to avoid getting into some situation that will require restarting later on or if I bring in a team. It is really, really difficult to find specific info on workflows etc so thanks again!

Ultimate end-goal? You can’t really progress without being clear on that.
How do you plan to populate the world or fill it all with interesting things…
Creating a city using the builtin UE tools is usually lots of work, example:
5km x 5km urban = 10km x 10km urban / rural = 1000km x 1000km sparse.

As for creating super-realistic city environments… See projects like this.
As regards fun highly-playable but less-realistic worlds, see here & here.

Also, Epic released the intriguing video below but then hid it (not helpful).
Comments from @Amanda.Schade claim its to update it. But who knows?

Learn How to Work With Geospatial Data in Unreal Engine | Webinar

It’s probably full of BS? lol

I don’t think that whoever was in charge of making the landscape system ever even knew the basics of geospacial geometry.

It’s one of those near impossible things, like wanting the sun to shine through LOD0 foliage up on a cliff that’s 500m away.
The engine just doesn’t do it or even remotely allow for it by design (unless you are taking a screenshot, then .0000001 fps is OK I suppose).

What the engine should do by default is implement a voxel system for the landscape.
Except seeing how horrible they are at performance over at Epic, I would suggest going with a 3rd party solution to it.
Anything epic has made in the past year or 2 is pure trash for performance…
Serious. Name one thing that isn’t (and that is actually out of beta AND FINISHED, not left there to rot…)

1 Like

The ultimate end goals is to create one huge city and use it as a sandbox for a level of my RPG game. I want it to be fully traversable in a JSRF style(where you can grind or do parkour style movements) and full of buildings and NPCs in the dense areas and just lots of diverse foliage and wild creatures in the rural areas. Essentially mimicking a real city. I hope to learn the limits of the engine and the World Partition system to get a rough estimate on the maximum amount of things I can get into one cell before another loads. After that I plan to spend ridiculous time crafting the buildings, cars, clothes, characters, and other assets. I then want to create a blueprint that will make the NPCs all stick to a schedule, IE going home, eating, staying home until the world clock hits a certain time, driving to work, going to stores, parks, interacting and reacting to the character when near, etc. I essentially want to sim the real world in a stylistic way and use this as a world to tell stories, develop characters, etc. This would be single player only. I am pretty proficient in most of the game dev software(Marvelous Designer, Maya, Character Creator, Substance painter, Blender, Cinema 4D) so I am open to any direction on if there is a workflow superior to what I am doing. I will visit the links that you posted and soak in all that I can. Thank you for your time.

No worries. The key thing is to set your own expectations early on before getting too deep (like how realistic does this city need to be to make the gameplay worthwhile :wink:). There’s some nice city samples if you follow the photogrammetry YT link. If you could buy / license that for Houston or another city, it’d save you heaps of time. Good luck with the project. :+1:

1 Like

I looked at your links and they are spot on. The post from Coqui Games is probably 99% of what I am looking to do. It led me to the procedural city generator already on the marketplace. I will support this dev and my apologies for not digging to find this myself before resorting to forum posting. Many, many thanks.

1 Like