Open world games, some questions

Trying to nail down a few things hoping to get some more info. I have quite a bit invested in Unity but it’s starting to give me fits for the type of game I want to make. I’ve spent quite a bit of time making developer tools for the Unity community and decided to go back to actually making games. I’m working on a large open world game and the things giving me fits are #1 the lighting. #2 the terrain system.

Lighting I know the least about. I want something where I don’t have to hire top notch technical artists to make it look good. Not looking for AAA, but I don’t want Rust either. Maybe a notch above Rust, which is actually quite challenging in Unity from everything I’ve seen. I can do a Rust on my own, but that’s about my limits. Along with this I’m curious how does Unreal terrain shading compare to say Unity with RTP? Does RTP put them anywhere near on par with each other? I’ve had good luck with RTP but the ongoing issue is that since it’s not made by Unity, there are always these little gotchas. Like it messes with tree shaders, or certain things don’t work with certain lighting configurations.

So to the terrain, I have a complete runtime building/terraforming/cave building system in Unity. The first issue I have is that the terrain api sucks for runtime manipulation. It’s just slow and no way to fix it. It’s impossible to update terrain without around 100ms freezes. I’m also curious as to what approach is used in Unreal for cutting holes in terrain. I have a whole underground building system that’s kind of a voxel hybrid. I use depth masks to cut holes in the terrain, build out structures under the terrain using cubes, and deform the meshes where they meet the terrain. I’m doing runtime mesh combining to make it all performant, with spatial grids to manage it in chunks. The underground stuff also limits me to forward rendering.

Last area is that I’ve just continued to hit strange bugs in unity with large open world stuff. Admittedly I’m pushing things, but still a lot of what I keep running into is just facepalm stuff. Like a while back I had an issue with lots of trees. Tracked it down to unity enabling/disabling tree colliders en masse using the same logic they do for occluding. They were literally just switching 10k colliders on and off as you pan around, on every tree not in billboarding distance. Their character controller is horrible, unusable with more then 50 or so characters as it does something funky that creates all sorts of garbage to collect. Their new physics system is my current bane, they just don’t test this stuff at any scale. It’s like hey it works in this small scene it must be fine ship it! So I’m sitting here with 100ms+ pauses waiting for them to fix it.

Now all of that said, I’ve got a huge amount of work invested in Unity. Realistically Unreal would have to solve a few of these issues for me (depending on which ones). Just really curious to hear from anyone who has some experience pushing Unreal at scale. What works wel what breaks. I don’t expect any engine to do exceptional in this area, most people aren’t making that kind of game. But I am getting tired of the facepalm stuff in Unity.

One of the main driving factors for UE4 is that its Open Source, if i have a problem or a misunderstanding of a feature, i can dive directly into the source code and see exactly what is happening and plan my way through it. Again being open source allows you to build the engine to suit your needs, unlike Unity where what you are given is all you have got.

Epic recently released the Open World demo, i strongly suggest you take a look at it as it might answer some of your questions or concerns. It deals with massive terrain as well as demonstrates intelligent ways to texture and populate the world with different assets efficiently.

Im sure there are others here with greater experience than I in open world game development, but in my experience UE4 is more equipped to provide a better development experience and ultimately consumer experience than Unity3D.

I’m no expert on terrain in UE, but I can assure you that you’ll find no love in Unreal for runtime terrain manipulation. In fact, the prevailing attitude is “Don’t do it”. The api for creating terrains is part of the editor code, not the engine, and we’re not allowed to distribute editor code. You can certainly look at editor code, then come up with your own version of the same functionality, but there is nothing out of the box. And all of the pieces that the editor uses to accomplish its stuff? Zero documentation. :frowning: