Migrating an open-world from Unity to UE
I know about UE since the older UDK version. Things got started to look interesting for me since the massive improvements for open-world scenes that were presented with the ‘Kite’ demo.
At the moment I am working on an open-world game in Unity engine. However it seems that if you are aiming for PBR and open-world, Unity is not the perfect engine. One of the disadvantages is that it’s not very well optimized. That being just one in the dozens of disadvantages, I will not name the others, the list is too long.
So, in Unity I have managed to radically improve the existing FPS by implementing my own foliage/grass solution. And i’ve done a lot of stress testing with my whole game. My performance scene contains the whole terrain (a 2x2km island) full of speedtree trees and grass, very sparse big ground detail like cliffs and big rocks, volumetric clouds, a water system, realtime lighting + the posprocs, and that’s about it. In the most dense places it runs at around 40FPS on a GTX 970 and at around 20FPS on a GTX750TI. The average is 50FPS on GTX970 and 30FPS on GTX750TI.
Below are two images to better illustrate what I’ve been testing around in Unity:
The problem is that it doesn’t look incredible and the performance is not incredible either. I can’t have water reflections, can’t have more than 20m of grass and those are limitations that are kind of bad. I also optimized everything quite drastically (violent lods, low-poly trees, 2 texture materials), so I don’t really know what more optimizations I can do in Unity. I don’t have access to the source code either, to get deeper into the problems. + I also need interiors/exteriors, animals roaming around and a lot of detail props. It is clear that if I add those the FPS will drop under our minimum 30FPS on a GTX750TI.
Having that said, I have 2 options:
- Continue in unity and drastically reduce visual quality even more, which is not desirable at all
- Start exploring alternatives, like UE4
As a reference I take ‘Ethan Carter’ that works at high details on a GTX750TI with a lot of vegetation, trees and everything else the game contains, running in UE4. During the game’s development I know that UE did not had a decent vegetation solution, but it has it now. Thinking at that we also require our game to look at least as good as ‘Ethan’ and run at 30FPS on an GTX750TI and on PS4. I’ve notived that the last versions of UE4 (4.15) work kinda bad on the pc’s I’ve tested on. 4.13 worked a lot better.
So my questions are:
- Would you recommend me to move to UE4 with my open-world game?
- Can I obtain what I have in Unity (the screenshots) with the stock UE4 version (without any code enhancements) at better performance?
- Can I build an open-world game in UE4 with the stock version? Could you give me any released examples of games doing that? Fully open-world, big map (at least 2x2km which is not big at all) with buildings with interiors, (without a loading screen) lots of vegetation, debris? Personally I know ARK but there’s a huge 100 men team there so I think it doesn’t count for me
- If I can’t (question 2, 3), would 1 year and 1 good programmer be enough to get everything working at my quality requirements?
- Do I have a good working solution for realtime GI (like LPV’s) in UE? I had Enlighten in Unity. I can’t use Lightmass with baked light since we need day/night cycle.
- Are code plugins easy to write for UE? I can’t port the volumetric clouds from Unity with the Unreal’s visual material editor.
- Can my artist jump right in to creating content if we move here? Or will he throw around paper planes while I attempt to get the FPS running at a decent level?
Answering any of my questions can help :). Even though I’ve started experimenting in UE for some time (which I find quite easy to use) I thought to also ask the opinion of more experienced users. From my shallow experiments UE4 worked quite well, but now with 4.15 it seems that performance dropped quite drastically. I don’t really know how to tackle that. Was it broken or I should just wait for another version (like 4.16 or 4.17)? Since good performance is a must if we are to target consoles or video cards like GTX750TI. I know that Epic is not actively developing any open world games and that there aren’t many open-worlders built in UE at the current time. It’s more designed with level-based FPS games it would seem, so that’s why I’ve came here asking for advice
Just if anyone has questions about my skills they are at:
- Advanced c++ knowledge.
- Advanced opengl/dx/shader knowledge. I could implement my own ‘merge instancing’ or some other solution if required.