Hello, I'm an amateur dev and I've been working in UE4 for a while, but after finding out about Unity's DOTS I've really considered switching. I'm just wondering if anyone has experience going from Unreal to Unity and could share some of the major differences? I know the programming is done in C#, which is no big deal for me since I'm used to C++ and C# would be easier if anything.
Hi, unreal docs actually have good info (although its meant for unity to ue, but still) https://docs.unrealengine.com/en-US/GettingStarted/FromUnity/index.html
I think it should be easier, but there isn't a lot of those AAA features you get with unreal out of the box with unity. So be prepared for some tinkering and setup. I mean I only used unreal once then closed it down because my computer at the time couldn't handle it so. . .
Thanks, this looks like a good place to start. Although much of it is to do with the GameObject system, which I assume isn't used with the DOTS much or at all. So Unity is more customizable? I'd much prefer that over all the AAA features that Unreal has, which are mostly oriented towards artists.
I would say unity is the go to for rapid prototyping. I think a lot of indies soon wake up to the fact that they're never gonna make a AAA game with such limited resourses so unity despite its flaws is the clear winner. I've got to be honest, I have a leaning towards 3D and high end graphics so I'm always drawn towards tech like unreal and lumberyard and raytracing etc but ultimately I know it is just a pipedream. If I was to ship a real game it would be a 2d platformer where unity shines.
Oh and once you start scripting in unity you'll wonder why you spent so much time in blueprints or writing verbose c++ classes (most ppl don't even get that far)
you don't need to create a graphically high end game to use the tools unreal provides. They use a lot of those tools on the cartoony graphics of fortnite.
I think that really comes down to where you have practice. I've seen people do really quick stuff with lots of tools. As long as your tools are good - and there are loads of great tools - then the bottleneck is more often the developer than the software.
yeah. (although apparently that is the easy way currently, since there is some converter system in between.. or thats what i remember reading in some thread - personally haven't really even started on dots yet) check out youtube also, lots of interesting stuff https://www.youtube.com/user/Unity3D/search?query=dots https://www.youtube.com/user/Unity3D/search?query=burst
When it comes to converting PBR from UE to Unity my thread might come in handy https://forum.unity.com/threads/rma-texture-to-unity-pbr.749507/
Honestly doing DOTs right now if your new probably isnt the way to go given its constantly changing still. Until its out of development, you will have a harder time learning it + learning unity instead of just learning unity. They also had to rewrite massive parts of the engine + shader system to handle fortnite. Unreal is made to make a handful of game types, and anything outside of that requires literally rewriting parts of the engine itself. Trying to get it to make say an RTS is mindboggingly difficult compared to the way you would do it in say unity. Dont even get me started on the fact that you cant make a game without using the blueprint system for a ton of stuff.
My humble advice would be don't chase engines for performance features, chase the one that makes you get stuff done quicker and scope down your game to meet performance targets. If you're far along the way in UE and think you could complete your project there, I'd suggest doing that. If you wouldn't abandon much work in switching to Unity, I think the switch may very well make you more productive, but I would recommend not trying to push for any kind of content that is super challenging on performance. Not because it can't be done (it can) but because if you do that, you won't realistically have the capacity left to focus on making your game fun - and that's where your big time investments should go imho. Speaking from painful experience here...
I like Unreal. I started with UDK but U4 introduced high perfomance cost when working with editor. I can work in it but it lags when compiling, switching windows if you don't have very expensive PC. Build size and editor size is abundantly high.
Have you tried the HDRP? Our other programmer works primarily on Apple hardware, and he had to switch to his backup Windows system because his Apple hardware couldn't drive the new render pipeline without having to buy an expensive eGPU.
Yes, I'm using HDRP. It could be better for sure. My computer can't run Unreal with smooth experience when you need to open new tabs, compile, build light, and it takes too much of space. In HDRP shader graph takes some time to save. Progressive lightmapper is also time consuming so I adjust time on the end of the day for such tasks. Unreal is great tech but you need to invest in serious computing power to get the most of it.
One guy I know switched from Unity to Unreal and never look back, because he said animating (especially humanoid) in Unity sucks and the event on animation system is equally hard to use and not maintainable. (So rigging is coming and non- backward compatible DOTS animation is coming, that says something that the current solution is not up to industry's need) When he goes to Unreal (he said) all custom editors and coding he had to make in Unity are already there waiting, that the switching cost ended up miniscule compared to having all the tools he wanted to use appearing automatically and not having to keep patching them up anymore. I explained the DOTS revolution, but he said he got work done and don't need DOTS even though it is interesting. UE Blueprint is a codegen, that's no data-oriented but it's efficient and make it more difficult to make performance mistake because you didn't write that section of code (e.g. it properly uses preallocated object pooling, in a way you can look at that allocated memory of class instances as "data oriented" though it may not be as linearized granularly as DOTS components). Blueprint is still performance if you are interested in DOTS because of performance advantage. I followed DOTS not just because of performance but also that it is refreshing. Conversely I also know one other UE guy that says making UI in Unreal was awkward, and Blueprint is not the right representation for this work. I think the same previously with Unity but 2018.3 nested prefab changes that (so.. a button is actually the same button with different text). With playables director and signal emitters in 2019.1, working with UI in Unity is now enjoyable. (but we don't talk about performance, until runtime UIElements arrives at least) Not that I know anything about what UE offer in animation area and I have never made any games with humanoid character, but just to say that maybe it is just a certain one feature that ended up prominent in your game that makes the engine choice. If I want to make 2D side scroller with lighting and saw the latest Unite Copenhagen about URP and its 2D shader/graph authoring support, I would definitely leaning towards Unity instead of UE for example.
I'm pretty much a Unity-fan for multiple reasons, but I wouldn't say I don't look at other stuff as well. Never looking back is a mistake in my opinion, because we have a very strong phrase in developer circles: choose the best tool for your goals. If it means employing Unity, then be it, if it's UE, then download UE4 and go to work. It is simple as that. It's never either/or. It's whichever helps you realize your concrete project and if the next one demands the other, just switch to it without any hesitation (I mean if you're sure that that's the best move).
When connceting with people in games, then knowing more than one engine can get you hired if you want certain job. I think it's necessary to learn and get to known more than one engine, if you want to get hired.
I am surprised you quoted at this particular word place because this defines his attitude right now. He is now a very biased UE fan instead of a tech people. In the sense that Unity "hurted/betrayed him" and wastes his time so no matter how Unity improved he is determined to not touch it ever again. Distrust of uncertainty that he would have to face next, though could be prevented by carefully evaluate everything and lock version when you start it is just not possible to avoid all surprises. For example I decided to base my UI on playable directors and evaluated usecase somewhat in 2018.3 before going all-in, but I failed to expect that it couldn't run events unless programmatically added a callback, which is needed in a place like wait for UI to animate out first then unlock the touch in lower layer. I was very lucky that 2019.1 has signals added immediately or I would be really annoyed. This is not counting bugs like signal evaluating twice at frame 0 or evaluation is late if frame number an even number, but bugs are not as scary as missing feature because they will be fixed at some point as long as you can pin them down in a repro. To OP : You will want to evaluate everything related to your game as much as you can. One example in Unreal you may used to make a material with graph and it of course works. Shader graph is a code gen for the actual shader file that you now don't have to write. The shader file have to respect rendering pipeline when to do what. UE just works because the pipeline is fixed unless you edit the source, in which case the built-in shader graph may no longer produce compatible output. But Unity added this just a while ago. Unity added scriptable pipeline (SRP) which is nice but also made 2 premade pipeline called URP and HDRP. Then, Unity can make a shader graph tool that output result compatible to this URP and HDRP. So a little surprise is that shader graph do not work with built-in pipeline and you must use either URP or HDRP. Small surprises, but doesn't mean there is no more. Something little but unexpected like cannot display enum argument in `UnityEvent` where elsewhere it showed up properly, may impact your workflow or not.
Needless to say this is not the first time I met with such behavior. Oh man, if I would not touch every tool I felt was lacking something I couldn't work anymore. After the honeymoon with the fresh and shiny new engine he will realize that it is a software as well and all software contain bugs. So, whatever. Sooner or later he needs to realize that these are tools and the people behind them are profit-hungry companies. End of story.
One UnReal to Unity trick is colliders: 1) Unity doesn't have specific damage or trigger zones like UnReal. Instead, you create a collider and check the isTrigger box. Now it's not a collider anymore -- it's a non-obstructing trigger. There's no place to enter damage or show it's a kill zone. You have to script that. The system just knows to run OnCollisionEnter or OnTriggerEnter depending on if isTrigger is checked. 2) Unity doesn't have a slider for collider detail, using the mesh as a guide. If you don't want a box, sphere or capsule shape, you need to hand-make it from several colliders. If you want a lower-poly version of the mesh as the collider, you'll need to make it yourself and create it. Anything with a hole or depression requires that you hand-make the edges out of several simple colliders.
Thank you all for the advice. I definitely understand that Unity lacks many of the features that Unreal has built-in, but as someone else said, Unreal also has many limits which tend to be very hard to overcome. For example, in my project I wanted to utilize run-time terrain modification, but I've found no foreseeable way to do so in Unreal. In Unity however, it seems to be not just doable but quite simple to do. And although Unreal's performance has definitely improved over the years, there are some things I want to do (lots of projectiles, foliage, destruction) which I'm afraid will be too strenuous. This is why I've interest in the DOTS, and also because I think it will allow for better code maintainability. Although it appears to still be in its infancy, so I'll probably wait until at least the next major update to try it out.
Full version is coming 2020.1. So likely that the next or at most next next beta release is the feature-wise complete one. I think you definitely want to wait until at least a new conversion workflow that was teased in Unite Copenhagen arrives in beta. It's a huge workflow upgrade. (Let you potentially based an entire game on this workflow, where previously we must try to craft up the entity programmatically and it was scary and stressful somewhat) You may want to watch this and see what else to wait for : About impossible things you mentioned, from UE I often have an impression that everything AAA-looking is possible, because the big games are showing Unreal Engine at splash screen. For example I am playing Monster Hunter World and I see Unreal logo. Then I think massive foilage and destructible environment must be possible somehow. (Inversely in Unity most of the time low budget studio puts a logo because they cannot afford, and it didn't show Unity's potential so sometimes I think maybe that UE-look is not possible) (Also I keep a rough diary of sorts trying to compare UE and Unity but writing is currently all over the place, maybe if you got massive free time you can read them.)
I really like your diary, by the way, 5argon. I find it one of the most interesting and reasonable comparisons of the two engines, and you inject a lot of humility into your weighing of pros and cons.
I watched this. @5argon, is UE4 volumetric lightmap the same as Unity's light probe groups? If you see UE4 volumetric lightmap are the same probes for indirect light calculation like LPG in Unity.
I really enjoyed reading your blog, definitely one of the best comparisons out there without the obvious biases.
great write-up @5argon as a user of both I agree with most of your points. I think that if SRP, DOTs and new multiplayer + physics wasnt coming to unity I would have fully switched to unreal for my latest project. But with all these things coming, I feel like we are about to break into new territory where quality and performance is considered the same for both engines!