Unity, Unigine or Unreal Engine - What to choose?
The investigation into the three Un-Engines has concluded. Funny, that they all start with "Un"^^
Let me briefly share my experience with the game engines and explain why I am switching from Unity to Unreal Engine.
Where to start?
Maybe you read this because you also want to start a project and are wondering, what game engine should you use? Obviously it depends on the use case, but since you might not know exactly beforehand what your projects needs or where it will be going, I would recommend an engine that can do pretty much everything, even though it might no be easy to do and that is Unreal Engine (UE).
However, it also depends on how big your project is going to be. For a small prototype maybe Unity could be better, especially in the beginning. At least I found it easier to get started with Unity. Sure, the graph based programming with blueprints in UE might seem more appealing, but at some point you will have to do at least some C++ programming in UE and C++ sucks compared to C# in Unity/Unigine for doing game logic stuff as long as you don't need extreme performance critical stuff. This might also just be my experience since I worked with Unity and C# before for several years. Part of it could also just be that Visual Studio sucks compared to VSCode. But again, could just be personal preference. Yes, you don't necessarily need to use Visual Studio and probably could use VSCode instead in UE, but I didn't bother setting it up yet as I didn't have to do that much C++ stuff yet, luckily.
UE's blue print programming exemplified on my crane controller:
You can do actual spaghetti code quite fast here, if you don't take care arranging everything nicely, like I have tried to do in this example, mostly. It can be slightly annoying, but I guess it helps with comprehensibility later on compared to having only text.
In any case, whatever you start with, prepare to watch a lot of Youtube tutorials, especially for UE as they have pretty poor documentation. This is one point where Unigine is shining. At least I had the best experience there with documentation, but it is also necessary since there are only few videos about this engine. However, some of Unigine's own videos are really good and you should check out their channel, if you use Unigine. In contrast, the Unity and Unreal Youtube channels are hit and miss. They have some good videos, but most of it is not very useful and there is a lot of marketing stuff in between. You are better off just using the general search function.
Whatever you do, the most important point is that you just start doing something. Start small and make small steps. Learn as you go. You'll also learn what you really need and what not. In the worst case, you can still switch engine later on. Just don't wait too long ;)
If you want to do something similar like StarbaseSim you probably need an engine with large world support (64 bit) which means Unity is out of question. That's also the main reason why I switched.
What's the problem with Unity?
I knew from the start that I would get into problems with Unity when you want to go for large scale scenes, but I was expecting it to start at like Earth size, not already at the small distance of 3.5 km from launch site to build site at Boca Chica. It was mostly the delicate physics stuff like slowly moving the SPMT that was starting to get a bit glitchy on the build site, while it was working fine on the launch site where the origin of the world was. Not too horrible, yet, but since I want to do a lot of physics stuff, a big problem down the road.
There are several ways to deal with this problem. This video explains it a bit and shows the Kerbal way of handling it.
I don't like their solution very much though. It's quite limiting and can be problematic for certain setups. On the other hand there is a seemingly much better solution available, which is going to 64 bit support. Seemingly, because I have yet to see how everything works out in the end, but I know already that it fixed the issues with the SPMT for sure. Normally, planet sized operations should be possible as well now, like doing full orbits and such. Unfortunately Unity doesn't seem to be adding 64 bit support anytime soon. I guess, it's fine if your focus is on small scale mobile games and tech demos.
Why (not) Unigine?
Pure chance. I just randomly saw someone mentioning it on the KSP2 modding discord. It has now native 64 bit support in the free community version. They also had a very impressive Mars rover demo with some actual terrain from Mars.
Overall it looked very promising and it has some really good stuff like the terrain system.
By far the best terrain system of all three engines. It's super easy to set up for large worlds. You can easily import tiled terrains. The water and clouds look great without any modifications needed. Everything is made for a real world simulation. Because that's the main selling point of Unigine. It's used for custom flight and train simulators. Seems like a great fit for StarbaseSim!? Yes and no - while it's great for making these kind of simulators, it doesn't have a lot to offer for everything else, like a game where you can walk around with a character and interact with stuff, let alone multiplayer. Sure, you could realize it all with some programming, but it would be a gigantic amount of work. Plus, there are some things which are absolutely not possible, like Mac support. Also, some of the physics stuff like ropes and colliders in general are pretty annoying to set up and I would need to set up quite a few of colliders. So, after getting to know the annoying side of Unigine, I looked into UE.
Why Unreal Engine?
Because they also just recently added large world support with UE 5 and some more advanced terrain futures and their own physics engine. First I was a bit reluctant to look into UE as it was to be expected to have problems when they have just added this. Big new features are usually not that fleshed out, have bugs and poor documentation - ok, the latter is a given with UE anyway^^.
However, these made the least problems so far that I had with UE 5. The main issue at the beginning was, that the fundamentals are quite different with everything being centered around actors and pawns instead of a game object hierarchy. In this regard Unity and Unigine are quite similar. So when you know one of them, it is quite easy to pick up the other. With UE, not so much. You really have to start at the basic workings of the engine again.
Then there is some really odd stuff, like there is no way to just disable an object in your world. If you quickly want to test something, you have to delete it and then re-add it. That seems pretty stupid and I haven't found a good reason yet for why it's not possible to just have a toggle like in pretty much every other 3d software that I used so far. Sure, toggling something off can also lead to problems. But I'd rather have those problems than doing it the Unreal way.
So it took quite a while to get used to everything. This was made even worse when I started to use the so called "Lyra Starter Game"
Yes, it's good for starting an actual game, but not if you are an UE beginner at the same time. It has lots of modular systems for setting up multiplayer games with different game modes, characters, weapons, abilities, a nice menu with a key bind system. Sure, you don't need ALL of these systems, but you will still need a lot and need to understand how they are working together. That's a lot to untangle for a beginner and if you are an absolute beginner with game engines and programming, I don't recommend to use it. Sure, you can have a look, but if you don't want to make the exact same game, it will be very difficult. You will need to look into the C++ part as well, even though not much actual coding is required there. But a few small modifications here and there will still be necessary. Thankfully, there are people like Xist who have done a great job of untangling it themselves and creating tutorials.
After one month of learning to use the Lyra project and UE at the same time, I can slowly reap the benefits of it. I have already a somewhat working mobile version for Android on Patreon for testing alongside the Windows version. Other platforms should be no issue as well. It's mostly limited by my testing capabilities.
Now I am looking into Multiplayer as well. It shouldn't be too hard with Lyra. I just have to see how much time it takes to maintain it. Same for mobile. The optimizations needed might take too much time away from adding content, so I might have to focus on just one of these bigger features. But we'll see how it goes.
Overall Lyra is a great base for making a shooter style of game. Other types of games are also possible, but you don't have much to start with. Since I focus on first person perspective walking around Starbase, I am not too far off from the shooter style. So I can use quite a lot of Lyra or at least I can potentially in the future.
Besides all this, UE also has other cool features like Chaos destruction which is very important to blow up the launch pad! :D
Even though it took a bit longer to have a similar test version as in Unigine, with UE I have just much more options going ahead, especially in regards to multiplayer and multi platform support, which would be very hard to pull off with Unigine or outright impossible.
So the current plan is to dabble a little bit with multiplayer and frequently push updates to the Patreon test version. When this is in a better state and has at least a big chunk of the content of the current Unity version, I'll replace this and continue as before with early access for Patrons and then later free for all. Maybe I'll include another type of early access for Steam or the Epic store later on. But let's focus first on getting the basic game done.
Do I miss Unity?
Not really, at least not yet^^
The only thing that was quite useful and no other engine has, is the scene view, where you can look at things from the editor perspective while playing in the other window. Not only can it help with debugging and prototyping, it's also quite convenient if you want to do a quick video for someone...
What about graphics?
I don't care that much about graphics as long as the lighting is realistic, including reflections. Every engine can do that more or less. I guess, UE has a slight edge there, but you can see from the pictures with the high bay that the differences are not that big. It mostly depends on the material and lighting setup, which is pretty different in the scenes, which makes the comparison a bit unfair anyway here.
I'd say, it depends mostly on the amount of time that you spent on materials and models that make a game look great instead of good. An AAA game will look like an AAA game on either engine. An indie game will look like an indie game on either engine. There is no magical switch, that can make your game look ten times better just like this. Maybe with AI some day. But for now it keeps being a lot of hard work to make something good looking and good running.
Get Starbase Simulator
Leave a comment
Log in with itch.io to leave a comment.