Game Development

Early impressions of Unity

Unity  5.4.1 initial pros and cons, from someone learning it

Pros (in order of importance):
1. The documentation is pretty good, but the forums are awesome. With so many users, nearly any question you have someone else already had. The forum users are active and helpful, and will often paste the code answer directly.
2. Because the basics are easy, it’s easy to debug basic errors. For example, drawing rays so you can view the normals on a mesh, rendering to a texture, or throwing debug buttons in the editor.
3. The price is amazingly cheap for a game engine of the quality. Back in the old days game engines with a complete toolset were hundreds of thousands to millions of dollars. You don’t get source at the cheaper levels, but so far I haven’t felt the need for it.
4. The asset store is great, which a wide range of tools, and extremely cheapl. It’s programmer time for free to (usually) under $100.
5. Many major companies have official add-ins for Unity, so you aren’t too limited in major 3rd party support.
6. Unity is relatively friendly to beginners. For example, if you delete all lights from the scene you aren’t just left with a black screen. You are helped through common mistakes such as using material instead of sharedMaterial.
7. Direct support of native file formats for major artist tools is great. I think in practice you will want to export for faster speeds, but during prototyping it’s very convenient.
8. Despite the price, it is possible to make high-end graphics for high-end games.
9. Supports a huge number of platforms.

Cons (in order of importance):
1. GameObject is the basis of everything in your scene, but GameObjects are slow. Because all subcomponents are part of GameObject, this leads to conflicting requirements. For example, if you want to render a lot of terrain it’s better to break things up for rendering but for Physics it’s better to use fewer large colliders.
2. The standard shader is conditionally compiled such that it is optimized for the target platform (which is great) but you can’t extend it without losing that, especially important for mobile.
3. Not sure if Unity is still using RakNet, but many superior features of RakNet were left out. For example: automatic peer to peer host migration (no handshaking necessary), UPNP (which removes the need to pay Unity or limit concurrent players), and hosting your own servers without a source license.
4. The Visual Studio integration is buggy.
5. Unity uses a left handed coordinate system, which doesn’t match Max or Maya

Except for the GameObject performance, the cons are minor compared to the pros. Overall Unity is a good choice for game development.