Bees of a Different Shape

Well… it’s been longer than I hoped before getting back to blogging here.  I anticipated a hiatus, but HOPED it would not be a long one.

I suppose I should explain the answer to that question: “where the heck have you disappeared to for so long??”

I’ve been (and still am) teaching a Unity & VR course with Make School and Upload VR!  The course ends mid August, so, Imaginary Reader, expect my posts to be infrequent until then, BUT rest assured, I do plan to start posting again regularly after the course ends.

I also want to take a brief aside to say: teaching this course (as is always the case with teaching for me) has taught ME a lot about development.  In writing tutorials for the course, I started thinking not only about how to DO things in Unity, but how to explain them, and that question “Why” wrt “the heck would I do it way A vs way B.”  I found that often my go-to way felt like a better idea until I started trying to explain it in the context of a tutorial, and then I realized that, actually, way B, which is simpler anyway, is a much better way of doing things.

The best example I can think of of this is how I create Prefabs.

I USED to create Prefabs by loading them in via (GameObject)Resources.Load(“[PrefabName]”), which meant I had to have a folder structure like this:

Screen Shot 2016-07-17 at 10.23.36 AM

(I had to put Prefabs into a Resources folder, or a child thereof — Unity lets you have infinitely many Resources folders, by the way (a thing I didn’t know until I started asking myself questions about structure and started doing more research into the area!))

This felt really cool when I first started doing it because I was all like “Look at me never dragging and dropping stuff in the Editor to set up Prefabs, I have my OWN way to do it that’s BETTER” but… my old way involves passing parameters of type string†, which means I’m more likely to make typos than if I were to just drag and drop (the way I plan to do things from now on).  ALSO whenever I change names of Prefabs, because the arguments are strings in the old version, I had to go through and change.

†In general, I hate passing arguments of type string, not only because of the typo problem, but because I get runtime errors vs compile time errors, and I prefer compile time, because then the compiler will say “hey, do this thing” rather than the game crashing and me having to try to reproduce the problem.

I’m also starting to rethink the way I grab Components of Game Objects.  My goto way is via a Utility function I wrote that uses a callback to get the component if it exists, or add it if specified, to prevent that very common thing of:

Foo foo = fooObj.GetComponent<Foo>();

if (!foo) {

foo = fooObj.AddComponent<Foo>();

}

but… now I realize, I may as well just create “foo” in this case as a public variable of type Foo rather than “fooObj” as a public variable of type GameObject.  I do still like how my old way way lets my components be rather agnostic of whether or not the component exists, and I don’t even care that much that I have, like 100 calls to GetComponent, which is, like, O(N) or whatever, because N is small.  I just think the other way is simpler, and I’m gonna try to use it from now on.

But what of Floral Kombat??

I showed someone at Make School the game, and, as many people say, he said he found it rather confusing.  Something new he pointed out was that the bees don’t really look like bees… recall the old bees.  Let’s just use some old screenshot:

May 19, 2016 13:53

Okay fine, a gif.  Because I love those things too much.

Notice how the bees are, like, just basically yellow circles.  Yes, it’s not the final art, but this sort of stuff matters in terms of conveyance, and it REALLY matters when you’re all zoomed out, as the game is.  Like these bees might work okay zoomed in, but, far away?

Screen Shot 2016-05-09 at 7.48.55 AM

Hardly recognizable.

So… I went with his suggestion to change the shape.

Does it help?

Jul-17-2016 10-25-09

I think that now they at least read a little more like “insect.”  It’s unclear if they’re wasps or whatever, and I’ve gotta tweak that.  And MAYBE the whole game needs to be zoomed in more.  It could be tat it’s too far away right now and I need to get a hair closer.

In any case, I think this is a step in the right direction.

Most pressingly, though, I’ve got to get rid of that pesky confusion.

In taking time away from the game, I see the confusion now more than before.

Everything’s all moving and pulsing and shiny and animated and really I need to direct the players’ eyes better.

Because it’s on my mind, I’m gonna relate my problem to a Steven Spielberg quote mentioned by a VR speaker we’ve had at the Academy:

“I think we’re moving into a dangerous medium with virtual reality… The only reason I say it is dangerous is because it gives the viewer a lot of latitude not to take direction from the storytellers but make their own choices of where to look”

I wonder if authors had this fear when film first came out, that audiences could now had an ENTIRE PLANE to look at, rather than just lines at a time (isolated moments).  I think that the new challenge that faces 3d film makers is a lot the same challenge they face today — “how do I direct an audience?” — just with another dimension.  It’s a difficult problem in 3d, but it’s also challenging in 2d.

I don’t think film makers should fear the new medium, I think they should try new things and see what works.  Or maybe they’ll learn to tell stories that don’t rely so much on direction and control.

Anyway, for my next steps, I’d like to create a good flow that shows players how to play, without relying on text (because they haven’t been reading anyway), and instead relies on directing the eye to the important things at any given time.

Until next time,

~Zach

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s