When comparing Unity vs CryEngine, the Slant community recommends Unity for most people. In the question“What are the best 3D game engines?” Unity is ranked 3rd while CryEngine is ranked 7th. The most important reason people chose Unity 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 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 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 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 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 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 Works with 3rd party IDEs
You can use any C# IDE for it, but the ones I tested which have Unity integration are:
- Microsoft Visual Studio
- MonoDevelop (comes with Unity)
- Visual Studio Code (much faster than VS, but a bit harder to set up for Unity development)
Pro Over 20 platforms
Unity offers over 20 platforms for publishing including mobile, console, web, VR, and more.
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.
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 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 OUYA support
Pro Can create custom forms and tools
Pro Flexibility is provided by a strong component programming model
Pro Has awesome plugins
Pro Free for mobile development
Unity allows free mobile development. There are some limitations.
Pro DX12, Vulkan support
CryEngine 5.4 now supports DX12 and Vulkan
Pro Dynamic water rendering
Cry Engine has realistic water effects that even simulate ocean physics. Features such as waves that respond to global wind, and dynamic water volume tessellation allow for some of the most realistic water effects available to a game developer. The engine also takes into account LOD (level of detail) on water geometry to allow it to stay performant for water at a distance.
Pro C# integration
CryEngine has some C#template and also C# based system to write your function/ideas in to your game.
Pro Advanced volumetric cloud system
Cryengine has an optimized volumetric cloud system for Virtual Reality to give clouds full 3D spatial rendering. This ensures a high rendering quality with a minimal performance hit.
Pro Realistic rendering of vegetation and landscapes
Where Cry Engine really shines is with rendering scenes of nature. The Crysis games feature incredibly detailed vegetation and weather effects and it's the Cry Engine that enables that. The engine has many features to create a cohesive realistic looking world. Dynamic water effects allow users to have beautiful oceans, fog and cloud effects allow for realistic weather, and a plethora of lighting effects optimized for natural looking scenes make Cry Engine one of the best engines for creating vast beautiful landscapes.
By having all these features built together from the ground up, Cry Engine is capable of doing more complex effects more efficiently, than other engines that didn't have these effects planned from their inception.
Pro Features allowing for realistic weather effects
Cry Engine has volumetric fog rendering which allows for realistic cloud shadows that actually render shadows onto the fog itself. Combined with their time of day system, it's possible to create incredibly realistic weather effects. On top of this, color grading allows user to post process pallets allowing them to change the color tone for different type weather, such as using a deep dark blue for rain.
Pro All platforms, including next-gen consoles, are supported
Supports miltiple platforms including: Xbox One, Xbox 360, PS3, PS4, Wii U, PC, iOS, and Android.
Pro Disallows bad practices in asset creation
Simply by looking at the RC log when exporting can greatly improve your work. Cryengine doesn't handhold you constantly and helps greatly with avoiding bad practices in asset creation.
Pro Online marketplace available
The Cryengine marketplace is an online marketplace which enables developers to access and use individual assets from thousands of materials, sounds and 3D objects created by the community. Even Crytek's own library assets are available there.
Pro VR support
Cryengine (starting on Cryengine V) has Virtual Reality support. Developers can create games with VR support for multiple platforms: PlayStation VR, Oculus Rift and HTC Vive.
Pro There is already a built-in AI
It can shoot, walk on patrol points, can see the player and so on.
Pro Versatile flow diagram script model
Flow graphs 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.
Pro Dedicated channel for Q&A
Crytek has launched a dedicated Q&A forum for everything Cryengine related. It's called Cryengine Answers and it's a community dedicated to sharing and answering any question related to Cryengine.
Con Very bad terrain
Native terrain creates a lot of draw calls which is bad for 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 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 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 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 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 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 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 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 Mobile builds (Android, iOS) take about 18MB at least
Even a Blank Project, Needs 18MB for the APK file (on Android).
Con Moderators on forums are sometimes arrogant
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 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 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 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 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 Bad input
Con Bad model importing
Con Bad raycasts
Con Steep learning curve
Except for basic FPS games getting anything done will require solid knowledge of C++, Flash, ActionScript and Lua.
Con No Mac OS X support
Con Hard to develop games other than FPS
Cryengine is a great engine to be used for developing an FPS (and it's relatively easy to do so). But if you want to develop another type of game, it requires at least advanced knowledge of C++ and Visual Studio.
Con Restrictive license
Cryengine is not restrictive anymore just more personalized. The model is Pay what you want and if you want more you get a membership with them. Or private support, help and lessons directly from the CryEngine team.