Lately I’ve been filling my Twitter feed with complaints and questions about Unity3D. It’s a very different beast than any other coding environment I’ve been in, and a bunch of things really bug me about it. I’ve been poking away at it every few days, as a break – just trying to get a quick jam-style-game out.
Here’s some sample complaints I’ve made:
- The documentation mentions “Levels” but the IDE mentions “Scenes” and only experience will tell you they are the same thing
- The documentation for plane-snapping is flat out wrong (at least vertex snapping works…)
- There is no code editor; you must use an external application
- Their default on install is to give you a copy of Mono, whose autocomplete is atrocious to the point where I think I’m doing things wrong
- All the decent tutorials are videos and it’s hard to find a good written one
- My Unity license cost me US$4,500.
I’ve probably complained about a hundred or so of such little “gotchas” in the last week, but each time you learn to overcome them Unity becomes even more usable. I’m sure half my complaints are wrong, unfounded, or based in some “old school” thinking, but that’s what I have to work with and my experience is my own.
One of the most interesting things for me, though, is how quickly you can prototype a 3D game in Unity. Slapping together some primitive shapes, adding physics, putting a bit of keyboard control code in them… whammo, you have your very own racing game, first person shooter, 3rd person runner, or even an isometric RPG. In fact, with my week’s-worth-of-knowledge right now, I could prototype any one of those up faster than I was able to initially get “Hello World” on the screen.
And that’s where Unity really shines – is with the broad strokes and the silhouettes. The borders of your game you can sketch out incredibly quickly, and be playing something that feels really solid, rewarding, and fun really fast.
Where Unity falls short compared to my regular platform (the 2D world) is probably the details; when it comes time to ship a game and you have to put on all the polish. Beyond-game-jam stuff. Making everything gleam.
Texturing things properly might take you years just to learn the proper skills. Making your 3D models look right. Animating run cycles now is better suited to mocap than spritesheets. 3D just makes everything way harder.
But also smaller things, like making Unity’s physics engine do what you want instead of glitching. Making your car controls not sluggish. Getting the AI opponents in your FPS working decently. Making shadows work properly. Making the particle projector actually emit a prefab particle. Installing custom editor scripts so the game executes the correct initialization scene instead of your currently open scene. Tweaking a few variables in a late-game-mechanic. All that stuff is much more difficult in Unity; getting that fine-grained, low-level control is a stumbling block and doesn’t come naturally to Unity.
That’s not to say any of that can’t be done; it’s just abnormally, surprisingly more difficult than the other languages I am used to.
I swear that I can, however, make a greyboxed FPS in under an hour (probably 10 minutes?), and that is phenomenal. That is something to be proud of, and being a visual creature seeing 3D cubes flying around the screen with that kind of speed is very rewarding. There’s a reason why I’m sticking with Unity through all this pain, but damn they could really do with a complete tutorial re-write.
I just wonder if I’ll ever ship anything in this.
View full post on Flash Game Blogs