When comparing Unity vs S2 engine HD, the Slant community recommends Unity for most people. In the question“What are the best 3D game engines?”Unity is ranked 3rd while S2 engine HD is ranked 32nd. 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.

Pros

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

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

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

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

Has awesome plugins

Pro

Over 20 platforms

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

Works with 3rd party IDEs

Pro

Versatile

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

Offers choice of scripting languages

Unity provides a selection of programming languages depending on preference or knowledge. C# (CSharp) is arguably the most powerful, while JavaScript has the widest selection of tutorials. It should be noted that it's probably best to avoid Boo (a flavor of Python).

Pro

OUYA support

Pro

Flexibility is provided by a strong component programming model

Pro

Built-in weather system

It is possible to edit weather conditions (rain, thunders,wind, clouds, night and day cycle) by simply moving some sliders.

Pro

Great rendering

S2ENGINE HD rendering power is comparable to more famous engines like Cryengine and UE4.

Pro

Easy to use

Pro

UI is intuitively laid out

Important functions can easily be seen and accessed, making the engine quite user friendly, even for beginners or those who are new to the engine.

Cons

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 bad terrain

Native terrain creates a lot of draw calls which is bad for 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

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

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

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

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

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

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

Mobile builds (Android, iOS) take about 18MB at least

Even a Blank Project, Needs 18MB for the APK file (on Android).

Con

Price is very high

Cost is based on Revenue:less than $100K = Freebetween $100K and 200K = $35 a month per seatgreater thank 200K = $125 a month per seat

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

Limited 3D modeling capabilities

While Unity itself lacks proper 3D modeling capabilities, tools such as ProBuilder or MXD are available in the asset store that add that functionality within Unity.

Con

Bad raycasts

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

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

Docs have inconsistent choice of scripting languages

Con

Comparatively high learning curve

Although C#, JS, and Boo have documentation available online, it can still be difficult to understand the library and Unity's component based system.