12 ms·
I don't know why people are still using unity instead of UE4 except for historical reasons where users of the engine are hesitant to switch and have to relearn
by dave_sullivan 8y ago
I don't know why people are still using unity instead of UE4 except for historical reasons where users of the engine are hesitant to switch and have to relearn some things.
Unity is not open source, it does not come with batteries included (so you end up buying a bunch of poorly maintained unity assets/plugins to do stuff that UE4 does out of the box), and I think they're struggling as a company more than people realize (having raised large investment rounds and now seeking ways to monetize to an extent that would justify such investment). The best thing Unity has going for it is its dedicated user base.
Meanwhile, UE4 is a really good deal and keeps getting better with every release. It's really just a better put together engine all around.
- brianwawok 8y agoDoesn't unity make it "easier" to be cross platform still?
- reificator 8y ago> Unity is not open source Important to note, neither is Unreal really. It's not a pedantic distinction here either, as it affects how far you can take a project that modifies the core engine. Not that I'm against Unreal in any way, it's just important to keep in mind.
- dave_sullivan 8y agoYes, UE4 is not FOSS as per GNU, it is open source in that you can see the code and there's a large community contributing fixes and additions with every new version. I think the distinction is pedantic for most users.
- skybrian 8y agoThe Open Source Definition doesn't come from the Free Software Foundation or "GNU". It's a separate organization.[1]. Also the whole point of this story is that license terms do matter, especially if you want to sell games commercially. [1] https://opensource.org/osd-annotated https://opensource.org/osd-annotated
- dave_sullivan 8y agoI think the distinction is pedantic for most users.
- thecatspaw 8y agoUnitys C# code is also visible source
- dave_sullivan 8y agoI missed that announcement, good for them, too little too late: https://blogs.unity3d.com/2018/03/26/releasing-the-unity-c-source-code/ https://blogs.unity3d.com/2018/03/26/releasing-the-unity-c-s...
- erik 8y agoNote that this is just the C# layer. The underlying C++ engine code is still only available under "call us" license terms.
- PhasmaFelis 8y ago"Source-available" seems to be the preferred term for what UE4 is. > I think the distinction is pedantic for most users. In a technical discussion, there's no reason not to use the proper terms for things.
- tapoxi 8y ago> I think the distinction is pedantic for most users. The distinction is that the code you write belongs to Epic. You become an unpaid contractor.
- Rychard 8y agoIsn't Unity similar in that regard? (well, as far as viewing the source-code, they don't accept patches to my understanding) https://blogs.unity3d.com/2018/03/26/releasing-the-unity-c-source-code/ https://blogs.unity3d.com/2018/03/26/releasing-the-unity-c-s...
- wolf550e 8y agoYou're wrong, users of software libraries care whether they're allowed to fork the library or not.
- Dylan16807 8y agoDefine fork. You can make your own custom version and share that code with anyone, and use it exactly as freely as the original version. The reason it's not open source is the royalty clause, not lack of ability to see/edit/modify/fork the code.
- Mikeb85 8y agoShared source isn't open source. You may have access to it, but you don't own it.
- wtracy 8y agoHow is UE on mid-range and low-end mobile devices? I have the impression that's in increasing important chunk of Unity's end user base.
- bluescrn 8y agoUnity is huge in mobile gaming. UE4 barely made a dent on mobile until the recent mobile release of Fortnite that is, which requires a fairly high-end device
- k__ 8y agoSomehow I always had the impression Unity was a heavy C# moloch and Unreal was a fast C++ racecar. Interesting.
- galacticpony2 8y agoIt's not about the language, C# is generally fine if you know how to work the GC (which admittedly many people don't). The kind of C++ that is used for game code in UE4 isn't exactly "zero-overhead" either and it also uses garbage collection. Plus, on mobile C# in Unity is translated to C++ anyway. My guess is that the difference is negligible in most cases. What really makes the difference is that Unity has light-weight rendering pipelines available, running on older GPUs. UE4 just ditches those devices.
- ccvannorman 8y agoCan you expand on "knowing how to work with the GC" in Unity? I'm a Unity dev and rarely touch GC other than keeping mindful of the work I'm giving it by size/quantity of objects in my scene/making sure objects are dereferenced/can be collected.
- galacticpony2 8y agoBasically, know what does and doesn't allocate heap memory, don't give the GC more work than it can handle and measure on the target hardware. Do it right at the start of development and consider things like object pooling and the new ECS, if necessary. Understand how your GC works: https://blogs.unity3d.com/2018/11/26/feature-preview-incremental-garbage-collection/ https://blogs.unity3d.com/2018/11/26/feature-preview-increme... It's not about performance in 99% of frames, it's about not dropping frames when the GC kicks in and needs more time than your budget accounts for.
- bluescrn 8y agoUE4 focuses on high-end console/PC. For rapid development of mobile games, Unity is basically the only choice.
- maxsilver 8y ago> For rapid development of mobile games, Unity is basically the only choice. Why? Unreal Engine has targeted iOS + Android phones for 5+ years now, successfully. (Fortnite, PUBG, Dungeon Defenders, Horn, etc). More mobile developers are experienced with Unity over Unreal today, but that's largely inertia more than anything else.
- bluescrn 8y agoUE4 has always pushed high-end rendering tech hard and not prioritised mobile. There’s little awareness of the current state of its mobile capabilities, with few big UE4 hits on the App Store (and hundreds of Unity success stories including Pokemon Go and Hearthstone) F2P mobile dev is also very UI heavy, and UI work with Unity/C# is easier than dealing with C++/Unreal. And Unity has a wealth of ready made plugins that can be quickly integrated into a project for things like IAPs, advertising, analytics, etc. Although maybe UE is catching up in that area by now?
- SolarNet 8y agoUnreal has a new UI system and designer that feels really really good to use. And has visual blueprint code support.
- galacticpony2 8y ago> Why? Unreal Engine has targeted iOS + Android phones for 5+ years now, successfully. (Fortnite, PUBG, Dungeon Defenders, Horn, etc). Dungeon Defenders and Horn are not UE4 titles, UE3 isn't available anymore. PUBG and Fortnite only work on higher-end phones. UE4 is going the "easy" route by not supporting older devices. With Unity, you could still target fixed-function hardware up until recently.
- 8y ago
- sandyhatches 8y agoFor a lot of us we started with it, and once you know it, if it meets your needs, switching doesn't make sense. Does now though [walks into corner growling] :/
- k__ 8y agoDid so many people use SpatialOS?
- imtringued 8y agoThe new terms are undesirable for any kind of multiplayer game, not just those using SpatialOS.
- galacticpony2 8y ago> I don't know why people are still using unity instead of UE4 How about not having to use the dumpster fire called C++ for game code? C# is far nicer to use. Also, in Unity code hot-reloads instantly and reliably. > Meanwhile, UE4 is a really good deal and keeps getting better with every release. So does Unity. I think people underestimate how much more development effort went into Unity in the last years. UE4 has more fanboys, less actual success. On the other hand, with the Fortnite windfall, maybe UE4 will pick up pace now. > It's really just a better put together engine all around. It's still a godawful pile of C++ that takes forever to compile. I'm sure the same is true for Unity's core, but they're moving to a subset of C# that can be compiled more efficiently.
- rlp 8y agoWell, I've used both extensively, and they are good at different things. Unreal is far better IF you fit cleanly into one of their templates (first person, third person, etc). Superior renderer with great built-in post effects, FAR better multiplayer support, better materials/shader editor. However, if you try to do something substantially different than they have imagined, it can get ugly very fast. The C++ used is strange, with all kinds of weird GC macros strewn about. As a programmer, I hate blueprints. I wish there was a scripting language alternative. And god help you if you actually want to modify the engine code substantially, it's a monster (not poorly done, just sprawling and extremely complex). Look at the nvidia gameworks integration, it's all these forks of the engine built by random people, it's a mess. Unity shines in its flexibility, easy scripting, and fast workflow. I can whip up a script in C# very quickly that does exactly what I want. With that scripting, I can have a lot of control how the engine and rendering and post effects work, much more than Unreal. Prefab workflow makes much more sense than anything in Unreal blueprints. Mecanim is not as fully featured in some ways as Unreal's animation system, but with the Humanoid skeleton, animations can be used easily on different models. With Unreal, you need to use retargeting, which is painful and can have serious problems if the models are even slightly different in size.
- wokwokwok 8y agoThe kind of sad thing to me is that I’ve talked to several people who hold UE4 up as a shining example of “modern C++ done right”. ...but it’s really quite a mess when you look closely. A successful project and “good code” aren’t necessarily the same thing.
- lasagnaphil 8y agoUE4 uses their own C++ containers (such as TArray and TMap), which is very far from modern C++ (which recommends using STL like a part of the language). And UE4's macro system has garbage collection support built in, which would upset the modern C++ folks using shared_ptr and unique_ptr. They don't even like macros, they prefer using template metaprogramming whenever possible...
- failrate 8y ago
- aphextron 8y ago>I don't know why people are still using unity instead of UE4 except for historical reasons where users of the engine are hesitant to switch and have to relearn some things. Unity had their brief shining moment in the sun from 2015-2017 when they were supporting the growing indie scene on Steam, their VR was lightyears ahead of UE4, and UE4 still hadn't gone free-to-use. But with all that Fortnite money now and their new business model, I've no doubt UE4 is going to be the best possible game engine moving forward.
- andybak 8y agoWith a choice between C++ or Blueprints I doubt I'll ever be using Unreal. I might take a look at Godot one day.
- Hydraulix989 8y agoUnity has a great asset store with a lot of reusable content (art, models, scripts, shaders, sounds) within their walled garden
- SomeHacker44 8y agoI just like developing in C# much better than C++. Especially C#7, and the support of the latest 7.3 in the most recent Unity. C# is my favorite of the common primarily OOP languages. I would take a LISP any day... See Arcadia.
- nearbuy 8y agoI'm not saying UE4 isn't good, but I have a pretty long list of complaints. First, their class reference documentation is very poor. The majority of classes and functions have either no description, or a description that basically repeats the function name in sentence form. For example, http://api.unrealengine.com/INT/API/Runtime/CoreUObject/UObject/FInterpCurvePointQuat/index.html http://api.unrealengine.com/INT/API/Runtime/CoreUObject/UObj.... UE4 is fairly opinionated about what kind of game you're making. A lot of its core classes, like AActor, AGameMode, etc. are designed with a multiplayer fps in mind. For example, the basic actor class is much heavier than Unity's GameObjects. Every actor gets things like a built-in PointDamage and RadialDamage event so they can be damaged by guns and grenades. There's a lot of minor issues with API/naming choices. ConvertTransformToRelative() has the Transform and ParentTransforms parameters backwards and instead gives you the ParentTransform relative to Transform. FBox.IsInside() should be named FBox.Contains(). As it stands, "if (MyActorBounds.IsInside(MyContainer)) { }" does the exact opposite of what you'd expect. The sin() and cos() nodes in materials don't take radians, nor degrees by default, but revolutions (so sin(0) == sin(1) == sin(2) == 0), even though the C++ FMath::Sin() function takes radians. More importantly, we encounter engine bugs and crashes pretty frequently. Just recently, I was unlucky enough to encounter 3 separate bugs with OnAudioPlaybackPercent (it returns wrong values in various circumstances). Atmospheric fog started whiting out the screen after updating engine versions (still investigating this one). We've had tons of issues with child actors either becoming corrupt or losing their default values. I think we encounter some engine issue every week. My favorite was when deleting a question mark from a comment in C++ caused everyone to be unable to compile. That had us scratching our heads. Any guesses why that would happen? (Hint: it's Unreal's fault.) "Delete binaries and intermediate folders and recompile" is practically our unofficial office motto due to how often it fixes issues. Which leads me to, compiling C++ is slow. The near instant compile times of Unity are like a breath of fresh air. Finally, the community and Asset Store for Unity seem much better. I wish we had something like FinalIK for Unreal. The Asset Store has 10x more content than the UE4 Marketplace. We usually look on the Asset Store for stuff like sounds or meshes, but it can be inconvenient, especially if they come with custom materials or code.