Those days I’m on the move from my old and beloved XNA to Unity 3D. Since Microsoft killed XNA I’ve been looking for something similar, like libGDX , or some smaller frameworks like enchant.js or Haxeflixel (thanks to Sergio’s love letter to Haxeflixel), but when I realised that C# works for Unity scripting using MonoDevelop… well, if Sergio loves Haxe, I feel so comfortable with C# and lot’s of devs and studios switched already to Unity, so it seemed a great option to invest my time: a free version, lots of plugins and assets, multiplatform deployment and much more. I was so so much hyped.

Unity hype!
After some time spent on it is still a great option, easy to create something quickly, but it feels really hard to master and has some aspects that are driving me a bit crazy. Let’s have a look!
Good things first please
Unity is quite good. An affordable (or even free to start with) powerful engine full of possibilities. While playing around with it I’ve found some interesting points:
- Learning Unity could help getting a job in the video game industry. There are plenty of video game studios and indie projects using Unity, so giving it a chance should be a good point.
- Unity is able to change game object’s position and attributes while running a scene. I swear I love this feature. No more compiling before each test.
- Lots of premade tools and objects. Need a 3D camera right behind the main character? It’s already done; need an input for the main character? it’s done; How about a sprite manager and animator? guess what? done!… That’s a huge amount of time that can be invested in other parts of the game.
- Deploy easily at different platforms. Some days ago Nintendo announced Unity support for Wii U. It was quite surprising, and a new reason to learn Unity. Create once and then deploy for pc, android or even linux with some tweaks.

unity cross platform options
Sadly, nothing is perfect
Here we go with the bad news. I feel most of them like learning barriers more than software faults, but at some point I felt quite lost.
- A huge amount of tools mean more learning time. Each tool has their attributes, procedures and functions and mastering every Unity functionality seems to me like a pain. I’ll need more time than expected 🙁
Unity official raycasting tutorial…one day ill try something like this…
- Problems with version control software. When your game is almost composed by code and some assets, SVN or git works like a charm, but Unity creates some non plain text files. Unity free doesn’t support control version, and after setting an external version control over the project folder, every commit is like a trip to the house of horrors.
- Switching from classic coding to game objects and scripting. As a software engineer I’m always trying to draw diagrams and write lots of design documents before writting a single line of code, but I didn’t get the idea of game objects and code attached to them. Where I should attach a network script? to an empty object? Should I let the script on his own? i’ll need to tweak my diagrams a bit to fit the Unity way.

I miss my class diagrams so much
Next time more Unity adventures. A raycasting tutorial? 😛 who knows
If any of you have some free time you can check Sergios Ludum dare entry while waiting our next week! have fun! -> Universal Love
Hey! So I think Unity is a great engine (I use it myself), but I wanted to let you know in case you weren’t aware that there is an active open-source fork of XNA called MonoGame, which is continuing where Microsoft left off. Also, it’s actually pretty easy to set up Unity Free with git, the primary things to make sure you do are to force Unity to serialize assets as text instead of binary (in Project Settings->Editor), and to include a gitignore that leaves behind the Unity, Monodevelop, and OS generated files (you can also find several online that you can just copy/paste, easily found through a search). Nice post though, I also come from an XNA background 🙂
Hey Zak! Thank you so much for your comment, you are wllcome here.
I know about MonoGame, and I’m still missing XNA sometimes, but I feel like I need to move on and try thing like Unity.
About git, I’m getting more used to it now. I was using SVN for my latest project, but I think I’m going to go for git for the next one ;). Thanks for your tips, and keep doing good with your blog and your projects!