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.
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.
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.
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