My First Video Game: Shade

Shade Splash.PNG

I’ve been playing around with developing in Unity recently, and I’m having a blast. It’s a very powerful tool and I was able to go from barely any knowledge to a completely functional (if very basic) game in under a week.

So far it barely qualifies as having any actual game mechanics. You can die by falling in a pit and respawn, but that’s about it. I’m treating it mostly as a way for me to play around with animations in a new environment, and it seems to be working really well for that.

Some takeaways from my experience in Unity

Photoshop

I really like the photoshop integration. I only used pixel art, so it made a lot of sense to use photoshop anyway, but the integration is tight. Import your PSD directly into your project and changes to that PSD are immediately visible in Unity as soon as you hit save. The auto slicing tool is pretty good too, though one gripe I had was that I had to manually name the slices if I didn’t want “untitled_01” or the like. Not a big deal for this project but I could see it being frustrating with a larger game.

Animations

Animations were super fun, but a little janky at first. The timeline behaves pretty much how I expected from other keyframing timelines I’ve used or built, but I had a couple points of confusion.

  • There is a pane called “Animation” and a pane called “Animator” that do very different things. Not a huge deal but I was looking for things in the wrong one for a while.

  • There was a horizontal scrollbar in the Animation panes “Add Property” dropdown that hid the plus icons that actually let you add the individual properties.

Default view, plus icons hidden

Scrolled right, icons visible

I spent and embarrassing amount of time trying to double click on a property, clicking and hitting return, etc. Eventually I found the icon by trying to add a property that didn’t cause it to scroll. After I got that working, the actual animating work was relatively straightforward.

Lighting

This was a little harder to figure out than I expected, mostly because I’ve never use sprites in Unity before. I wasn’t able to get any of my art to respond to any kind of lighting rig at first. A little bit of research explained that just like 3D objects, 2D Sprites require Materials to respond to lighting. All I had to do was create a new Material with the Sprites/Diffuse shader and it worked like a charm.

Scripting

I’m not a professional developer, but I found scripting in Unity to be pretty accessible. I chose to write in C# because most of the community support seems to be biased toward C#, but honestly if you are more familiar with javascript it seems pretty easy either way. I had a few aha! moments that helped a ton here:

  • Switching from VS to VS Code fixed the problem I was having with syntax highlighting and debugging not working. I’ve also heard good things about MonoDevelop, but didn’t enjoy it personally.

  • Public variables are visible within the GUI itself, so you can make changes to these values without switching back to the script

  • Prefabs make everything better, except when they don’t. Abstractions are powerful, but if you want minor variations on a pattern I don’t know how to do that well in Unity yet. Remember to hit “Apply” after you make a change to a prefab instance that you want to propagate back up to the symbol.

Sorting Layers

I had a bug where some textures were displaying fine in Unity but after building were invisible. Turns out that if you have two objects on the same sorting layer with the same “Order in layer” value there is some unpredictability with which gets rendered first. Now I’m a lot more proactive about spacing these out.

Overall, I had a great time and feel much more confident in this environment. I think I will put together a series of character animations next since I’m loving the pixel art style. Don’t forget to try the game out yourself! Right now it’s windows only, but ping me if you want and I’ll do a Mac build.

If you like this art style, be sure to take a look at the Free Pixel Art Tree I made recently.