When comparing Unity3D vs Unreal Engine 4, the Slant community recommends Unity3D for most people. In the question“What are the best 2D game engines?” Unity3D is ranked 9th while Unreal Engine 4 is ranked 18th. The most important reason people chose Unity3D is:
Unity3D provides an exhaustive documentation where everything is given a full description supplied by a number of examples as well as video and text tutorials and live training sessions to understand the ins and outs of the engine. In addition there's an ever-growing community that can offer advice to help resolve any situations that may arise. Along with the official Unity resources, there are [many high quality](http://www.slant.co/topics/346/~beginner-resources-to-learn-unity) (and often free) third party tutorials available.
Ranked in these QuestionsQuestion Ranking
Pro Lots of resources to learn from
Unity3D provides an exhaustive documentation where everything is given a full description supplied by a number of examples as well as video and text tutorials and live training sessions to understand the ins and outs of the engine. In addition there's an ever-growing community that can offer advice to help resolve any situations that may arise.
Along with the official Unity resources, there are many high quality (and often free) third party tutorials available.
Pro Lots of assets can be found in the Asset Store
For those developers who can't afford an artist, or aren't skilled enough to create their own art, Unity features an Asset Store full of a wide variety of free and paid assets that can be easily added to a game. The Asset Store has more than just music and art. It also has code and modules that can be added to games including unique lighting or GUI systems. It also has powerful asset management and attribute inspection.
Pro Easy learning curve
The way the editor is structured, by setting scripts on objects, and the use of a high-level language, C#, makes it easy to learn.
Pro Allows for rapid prototyping
Unity's modular system and usability allows for quickly developing a prototype of an idea. It has features like drag & drop editing, shaders, animation and other systems already in place to allow diving right into developing a game.
Pro Very popular
Unity is a proven game engine. It is used by a wide range of developers - from small indies to triple-A companies such as Microsoft, Paradox, Square Enix and Sega.
Pro Great editor
The editor GUI is very powerful and intuitive. It allows pausing gameplay and manipulating the scene at any time as well as progress gameplay frame by frame. It also has powerful asset management and attribute inspection.
Pro Can be used for free
As long as the development company makes $100k or less, it can use the free version of Unity to release games.
Pro Over 20 platforms
Unity offers over 20 platforms for publishing including mobile, console, web, VR, and more.
Pro Works with 3rd party IDEs
You can use any C# IDE for it, but the ones tested which have Unity integration are:
- Microsoft Visual Studio
- Visual Studio Code (much faster than VS, but a bit harder to set up for Unity development)
- JetBrains Rider (very fast, has lots of functionality and best Unity integration, but it is not free)
Not tailored for specific types of games (like Unreal...), so it won't get in your way if you want to make something unique.
Pro Has a great animation system
Unity provides a great state machine animation system called Mechanim allowing to separate animation from the model and assign the same animoations to different models.
Pro Very optimized
Unity runs very smoothly even on systems that are considered "weak" by today's standards.
Pro Powerful standard shaders
The built in standard shader in Unity 5 is incredibly optimized and supports PBS/PBR.
Pro Can create custom forms and tools
Pro OUYA support
Pro Flexibility is provided by a strong component programming model
Pro Well structured
Overall, a coherent engine with a rational approach. People who complain a lot about being forced to hack around it usually dont read the docs, like the one that describe orders of execution (https://docs.unity3d.com/Manual/ExecutionOrder.html), or specific functions hooks and such. Some like to say it lacks raw power where people who are used to standard optimizations have no problem. For exemple It is not uncomon to encounter users who complain about low FPS but forgot to activate occlusion, flag static elements, activate animations culling, and so on. As for complaints about C#, people who are transitioning from C++ were already bad at C++ before being bad at C#. They often come from the PC world where the sheer power of today's machines is very forgiving compared to the platforms we had to develop for in the 80s~90s. One of their errors is for exemple to never read this doc: https://docs.unity3d.com/Manual/BestPracticeGuides.html.
Pro Has awesome plugins
Pro Free for mobile development
Unity allows free mobile development. There are some limitations.
Pro Free development license, including source code
The engine, including full access to source code, is licensed to developers for 5% royalty on resulting revenue if it exceeds $3000 per quarter.
Pro Dynamic global illumination with voxel cone tracing decreases the computational power needed
Voxel cone tracing is a similar algorithm to ray tracing, but uses thick rays instead of pixel thin rays to be able vastly decrease the amount of computational power needed.
Pro A visual scripting system for non-coders enables quick prototyping
Blueprints are authoring tools designed for non programmers so designers and other team members can help tweak and prototype. UE4's Blueprint scripts resemble flowcharts where each box represents a function or value, with connections between them representing program flow. This provides a better at-a-glance indication of game logic than a simple list of events, and makes complex behaviors easier to accomplish and games a lot faster to prototype.
Pro Developers have full control of the engine and source code
UE4 gives full access to the C++ source code allowing editing and upgrading anything in the system.
Pro Lots of resources to learn from
Epic provides multiple official video tutorials, lots of free example projects and content, an extensive wiki and regular streams showing how to use latest features.
Pro Powerful material/shader system
Allows a texture/material artist or VFX artist to create amazing effects from the ground up.
Pro Spectacular lighting visuals
Pro Cross-platform editor and export
This engine exports for a big range of platforms including Linux. The editor can be run on Windows, MacOS, and Linux (Early Access).
Pro Active community
Forums have many active and friendly members that are quick to respond and help out. Even staff is very active on forums.
Pro Fast compilation for quick iteration
Recompiling an entire game to test a small change takes up a lot of time. UE4 quickly compiles in seconds instead of minutes improving iteration time by an order of magnitude.
Pro Quick release-cycle
New feature releases can be commonly expected about once a month.
Pro AAA Ready
This is ready to make the next AAA game.
Pro Professional feature set for all aspects of game development
Almost everything a game developer wants has a deep and sophisticated tool waiting for them in UE4. No external plugins are needed to make powerful materials, FX, terrain, cinematics, gameplay logic, AI, animation graphs, post process effects, lighting etc.
Pro Realistic graphics
Pro Proven track record
Pro No coding experience needed
Con Very bad terrain
Native terrain creates a lot of draw calls which is bad for performance.
Con Garbage collection can't be turned off
Given the use of C#, the memory control is out of the developers control, this can be good, but not controlling memory means that the garbage collector can trigger at any time and ruin performance.
Con Hard to maintain projects due to vendor lock
Unity3D is proprietary, closed source game engine. Unity asks money for features like basic version control support, etc. It is impossible to migrate a game from Unity3D in case performance does not satisfy growing requirements of a project.
Con Very self-centered engine
Unity3D uses very unique approach for doing things. Most of the knowledge acquired while using it, would be completely non transferable to other engines. Advanced Unity3D programming is really dealing with Unity3D bugs, and finding loopholes around engine issues - nothing to do with graphics, etc. Skills which would be valuable with other engines.
Con Weak memory management
.Net libraries are slowing it down, memory safety is compromised, classes have to be implemented to manage objects in memory, like object pooling.
Con Asset store is required to replace engine functionality
You will need to, for example, buy an input manager asset off their asset store in order to replace their own terrible inaccessible input manager.
Con Dark UI theme not available in the free version
Dark theme, which is a must for prolonged work without eye strain, is only available with one of the paid monthly plans.
Con Adds too many features without fixing earlier issues, rapidly increasing number of bugs that will never get fixed
Unity continues to add many new features without fixing earlier issues. Unity is either understaffed, overambitious, or both, resulting in a continual increase of problems and degraded experience across a number of platforms. Many bugs are reported daily and never get addressed, and there are many bugs from previous versions that are never looked at or fixed.
Con Moderators on forums are sometimes arrogant
Con Bad batching support
Draw Call Batching is done automatically and does not include Skinned Renderers (eg. characters). Also for dynamic batching, meshes need to have less than 900 vertices.
Con Increasing number of bugs
With each new version things may stop working ,for example with Android, some bugs are never getting fixed, like the freeze bug with adb.
Con Encourages bad coding practices
A lot of Unity code feels like a hacked blur of arguable coding practices. C# and .Net usage in Unity is questionable. A lot of the API is done in "C Style" (public static methods, available at all times), encouraging the use of public fields for everything, a lot of questionable implicit casting. The list goes on.
Con Mobile builds (Android, iOS) take about 18MB at least
Even a Blank Project, Needs 18MB for the APK file (on Android).
Con Asset bundles can be cumbersome
Asset bundles are a way to load external resources that are not packed with the game or application and offered as a separate, optional package. However, they may not be compatible between versions or even platforms (you have to create them separately).
Asset bundles need to be loaded and unloaded, avoid concurrent loads from web or cache or a naming collision can happen. You can find workarounds with static objects (load
obj files and textures by code), but for animated game objects you are pretty much stuck with this.
Con New il2cpp script backend is show stopper to some iOS projects
Il2cpp script backend is required to build arm64 app, but it's still very buggy and not production ready.
Con Price is very high
Cost is based on Revenue:
less than $100K = Free
between $100K and 200K = $35 a month per seat
greater thank 200K = $125 a month per seat
Con Docs have inconsistent choice of scripting languages
Con Bad UI tools
Way of creating UI is uncomfortable and inconvenient.
Con Comparatively high learning curve is putting it nicely. Expect to spend days upon days researching basic functionality.
Although C#, JS, and Boo have documentation available online, it can still be difficult to understand the library and Unity's component based system.
Con Waisted resources
Slow, buggy, expensive and 1000 other problems.
Con Bad model importing
Con Bad input
Their input manager cannot be accessed via code. If you want to update controls at runtime (which any PC game should be able to do), you'll have to roll your own. Except joysticks are also not available via code.
Con Bad raycasts
Con Very high build size
A blank project will build in to a minimum of 200 MB.
Compared to other engines, UE4 seems to perform various actions considerably slower. Actions like starting the engine, opening the editor, opening a project, rebuilding shaders, updating references, calculating lightmaps, saving projects, etc take long enough to get irritating and end up wasting precious development time.
Con Hard engine for beginners
This engine not easy for beginners
Con Extremely long build times
Making a full rebuild, including engine can take a good 30minutes. If you plan to use Unreal professionally, you better get some licenses for Incredibuild as well.
Con Steep learning curve
Especially when compared to its primary competitor, Unity.
Con C++ - oriented development cycle: slow turn-around times
The Unreal Editor is the main place to do stuff (of course), so if someone wants to do a lot of C++ stuff, the compilation and linking turn-around times can be painful. Still they probably are quite fast in comparison to the provided featureset.. Still ,they are far from optimal.
Con Royalty based
5% of profits will go to Unreal after $3000 earned in a quarter.
Con C# not natively supported
UE4 does not support C# natively, but this can be achieved through MonoUE, although it requires using the MonoUE fork instead of UE itself.
Con Tutorials do not go in-depth enough
The blueprint tutorial just teaches how to turn on a light when you press f.
Con No drawcall batching, performance is very bad on mobile
There's no dynamic batching support to minimize drawcalls. There's InstancedStaticmesh concept in UE4, but it's 3d only, functionally limited and requires hardware support which rules out most mobile devices.
Con Poor documentation
Most of the "documentation" for code is actually just automatically generated from the source. If you're interested in knowing how things are supposed to work, you must either go to their answers site or pay for UDN.
Often their examples won't even compile, since they were written for now outdated versions.
Con They spend more time adding features than fixing existing ones
Con Poor quality assurance on their releases
After each release they almost immediately release a hotfix. And another one. And another one.
Con Extremely poorly designed
The code is a mess.
Everything is connected, a single Actor is 1500 bytes, because it contains a million things that Epic once needed in a game.
Inheritance for AActor: AActor > UObject > UObjectBaseUtility > UObjectBase
Con Poor source control support
Merge tool is not working.
Con Difficult for mac users
If you're installing it on mac, you simply download epic games launcher and watch it download nothing endlessly.
Con No Terrain Editor included
Con Bad support
The epic games team only assists with billing and account issues, not bugs.
Con Terrible physics
Con Frequent crashes
Often the editor crashes interrupting your work.