Categories
dev-process programming

Playing with Unity3D 3.5.x … some thoughts on starting from scratch

I haven’t shipped anything with Unity; last time I used it was early in 2.x, and it was painful enough that I never used it in a live project. I’ve re-eval’d every 6 months or so.

Now I’m onto Unity 3.5, and using it in several real projects that are due to ship this year … positive experience so far. I haven’t run anything on an iPad3 yet (that’s the next thing to try), but it’s treating me a lot better than Unity 2 did.

A few surprises along the way…

There’s still no decent “official” tutorials

There’s some video (yuck), and the first tutorial on the official tutorials page says (in slightly more words) “this is not a tutorial” in the opening paragraphs. Great! WTF?

I did find some basic ones (great for getting you into using of 3D objects *and* scripting together, at the same time) here: http://catlikecoding.com/unity/tutorials/

…and friends and colleagues provided a long list of recommended video-tutorials which I’ve been working through. Some sites have some great “beginner” tutorials, but they peter out in quality as they get more complex. Typically, the videos get more and more long-winded, boring, and a huge waste of time (many sites seem to have a hard-on for 2-hr videos, often for stuff that – if it had been a real tutorial – would have taken 30 minutes to digest. I guess they sell more advertising this way?).

The editor is very clear, self-consistent, and stable

Compared to early Unity 2.x (last time I used it), and compared to most 3D editors, Unity’s editor is very logical, consistent, and simple once you’ve had a 3-minute intro (good luck finding one; best to find a human and ask them to show you).

Overall … compared to most game tools I’ve used over the years … a delight to use. Although I’ve not hit it with any huge scenes yet (that’s where the real test will come; how often will it crash? how badly?)

Also: hasn’t crashed on me at all. Although there’s some occasional glaring bugs even in simple scenes (which is worrying) – e.g. one time, the scene playback engine corrupted itself and started “leaking” settings, which is allegedly impossible – on the whole, it’s decent quality.

(transparent) PNGs aren’t supported

2012, and Unity still can’t (fully) read PNG files. Wow.

(using PNG’s saved from Photoshop – but Unity’s crappy PNG importer screws-up the alpha. Depressing. Back in 2005 I thought we’d seen the last of the world’s “apps with only partially working PNG loaders”. Apparently not)

Javascript and C# sit very happily side by side

This is important for one project I’m working on, where we’ve got a mix of coders with diferrent backgrounds. All of them know ONE OF the Unity languages (C#, Javascript primarily … some other more odd ones too), but there’s no single language that EVERYONE knows. So far, Unity’s had zero complaints about us mixing and matching the script languages.

10 replies on “Playing with Unity3D 3.5.x … some thoughts on starting from scratch”

How are the transparent pngs not working? I’ve never had a problem – just make sure you’re using the right shaders. Transparent->Alpha Blended might be what you’re looking for. Don’t use the default diffuse shaders. Unlit->Alpha shaders are also worth taking a look at.

Aha! Thanks – I hadn’t found the 2nd-level of options (slightly confusing: half the settings are on the texture, but the rest are on the material object, hidden behind a massive multi-level dropdown). The “Transparent” options don’t include an Alpha Blended for me, but I found a separate “Unlit > Transparent” which did the trick.

Unity has come on leaps and bounds. There are still some pain points, though.

Number #1 is their WWW class. We do a lot of web stuff and it’s caused us no end of problems. In short, it’s an abomination. There’s lots of problems with setting headers and it doesn’t even detect errors properly (e.g. an HTTP 500 occurs, check http://www.isError — it’s false; have fun writing your own extension methods to correctly parse it…). I wouldn’t recommend using their resource bundle format either.

Once you start doing more exotic things, it can get quite crashy, too. Stability has definitely improved, though. I used to crash at least 15 times a day, now it’s more like 2 or 3.

There’s also problems where their version of mono doesn’t fully support certain c# language features that should be available. Also, if you ever decide to use the .NET threadpool, exceptions don’t propagate to the main thread or the editor — unity just swallows them. Hell awaits if you’re not aware of this.

Despite the shortcomings and quirks I would happily recommend it. The editor is nice and our artists love it, too. Money well spent.

Also I agree about the tutorial shortcomings. There are some decent “getting started” tutorials on the website, but it always takes me ages to find them.

The main issue with Unity that I have found is the poor information for working with UI. Maybe I just haven’t passed a barrier in understanding or something but I manage to make a total mess of the UI code.

So far as I can tell … Unity doesn’t really have a GUI system.

There’s a placeholder UI system – but it’s so poor you’re better-off building what you need from scratch inside 3D mode (everyone I’ve spoken to says “I don’t use the GUI system, it’s so bad”).

And, of course, if you’re doing iOS … Unity is light years behind the built-in GUI systems from Apple. You just have to post-edit your Unity project in Xcode, and add the native UI on top (native UI can be heavily skinned, so you can easily make it look as required). Seems to be a lot of people doing this, and using callbacks to have Apple UIKit buttons etc control Unity 3D scenes…

I have been trying to see if the flash export will allow me to use flash for GUI instead of Unity. No luck yet but I do have a working GUI in flash. The game just doesn’t connect to it yet. I’ve been keeping an eye on the forums just in case someone else figures it out.

Edit on last post. Just did some googling and a quick search of the forums, it’s been a bit since I have looked, and there are some posts about that functionality. I need to read them first but It looks like someone has done it.

The flash exporter was pretty lacking last time we tried it (lots of functionality unsupported, slow and buggy). I admire their chutzpah for trying it, but it wasn’t really close to being serviceable.

The GUI stuff is non-existent (and quite weird, to boot). If you want to do non-trivial UI stuff, you’re in for a buy-a-solution-or-roll-your-own dilemma.

Comments are closed.