Bear Chuck learns Unity

Hey guys!

So Bear Chuck had been quite silent for a while, I’ve been learning Unity with the goal of ultimately porting Bear Chuck over to it because it seemed more robust, especially from the web build as well as cross-platform porting point of view.

If you prefer a TL;DR: Bear Chuck Unity web build! <—– click to play

My Unity learning experience started with me making Jack King to learn the ins and outs of how Unity works, and sure enough, it wasn’t simple. The C# syntax was certainly an entirely different beast from Gamemaker’s scripting. But the interface! What a pleasure to work in! It makes GMS’s interface look like movie hacker stuff – Impractical and blinding.

And then I worked with Loet on Rocket Blocks which became Rocketto, Loet offered to help me with porting Bear Chuck to Unity, so I suggested that we tried a smaller project to see how we worked together. Also it was supposed to be for MakegamesSA’s Comp E, but we didn’t have enough time to hit that deadline. Since then Loet’s gotten busy with other stuff (such is life!) and we’ve decided to put that on hold for the time being.

But that didn’t mean the end of my Unity learning! I took what I’ve learned from Jack King and Rocketto so far and started dissecting Bear Chuck to put it into Unity, also with an idea of a new control scheme (ultimately the controls seemed the most needing-to-be-solved part of the Bear Chuck experience).

What I’ve learned of Unity-fu while doing this:

  • Go with Unity instead of against it. In GMS I built my own simplistic Physics engine to make sure things conformed to a pixel-perfect system. When I tried that in Unity it was HELL. Unity’s systems are super intricate and Frankensteining my own system meant I ran into all kinds of problems one after the other (just look at the Unity General Questions thread and you’ll see).
  • The Unity 2D system isn’t quite complete yet. Unfortunately essential functions like IgnoreCollision() aren’t in yet, and that makes things rather dicey. There are workarounds but they’re complex and cause other problems, unfortunately.
  • Though it is already a ton better than trying to do 2D with Unity before the upgrade!
  • You can’t reference SpriteRenderer directly without GetComponent. Something to remember.

I had to do a few things to get it to work more like I needed it to – I cranked Friction way up, I adjusted the colliders to be smaller than the blocks were visually, I made the blocks round off to perfect positions at every opportunity possible, etc, and I ended up with something pretty close to the clean physics a block matching game needed. I like the bounciness of it, and I would never have been able to do that with my own engine.

May I present, Bear Chuck Unity web build! <—– click to play

Right now it’s more of a toy for the control scheme. The bear is a ninja. He can telejump anywhere he pleases (click), to pickup and throw blocks as he pleases (click and drag)

I hoped that this control scheme suits the game and mechanic much better and gives it a legitimate home on a tablet. Though I’m not sure if that’s entirely a good thing, to completely aim for touch devices only. I’ve ideas of making this work on a controller, but… one step at a time!