Sean Harkin

Blog 08 - Indy Dev Profile - Mike Bithell, Bithell Games

We were asked for this class to create a short presentation on an Indy Developer. This is my presentation on Mike Bithell of Bithell Games and Thomas Was Alone fame.

Bithell started his career at Blitz Games in 2007 as a designer. In 2010, he created the first build of a game he had made in 24 hours called Thomas Was Alone. He released it online for free and the game racked up almost 100,000 downloads in the first week alone.  In early 2011, Bithell left Blitz Games for Bossa Studios to develop his game. The full game was released in 2012 for PC and Mac. As of 2014, the game was available on 10 platforms and had sold over a million copies.


Thomas Was Alone is one of my favorite games I’ve ever played. The mechanics are simple, the game play is intuitive, the levels are well designed and the difficult curve is challenging while always feeling fair - but most of all the narrative is incredible.

(Video by Mike Bithell)

From the video, you might start to get an idea of how the audio story telling impacts the players experience. The blocks are no longer just tools, they are characters with personalities, with motivations and flaws and imperfections. The VO work was supplied by British writer and comedian Danny Wallace who in fact won a BAFTA award for his performance. The writing and narration worked so well together that it inspired many fans to create anthropomorphized versions of the characters (a quick google search will show you some of the amazing artwork)


Bithell left his role at Bossa Studios in 2013 to focus on indie development and has subsequently released 2 more narrative focused games.


Volume is a 3rd person stealth game heavily inspired by the Metal Gear franchise. The narrative is based on a re-imagining of the Robin Hood story, set in a dystopic England which is run by an unscrupulous corporation. You play as Robin, who has hacked one of the corporations AI to help him conduct virtual heists which he broadcasts - the inspiration being a sort of ‘Let’s Play’ robbery.  Again, Bithell produced a mechanically solid game - I’m very bad a stealth games, but I very much enjoyed playing Volume. The stealth mechanics feel more like puzzles to be solved rather than a focus on quick reactions. This is on-top of another very engaging narrative. Subsurface Circular is a game I have not had a chance to play yet, however the text-based adventure see’s Bithell focusing his development on shorter narrative based projects. I’m very much a fan of his work and I’m very interested to see what kind of stories he can tell focusing on small projects.





Blog 07 - Sean Harkin: Code Breaker

Now that I’ve reached the end of this class (although not the end of the project, as I intend to return to develop the work I’ve started) I wanted to take some time to reflect on the biggest road-block I found in my first foray into game design - I am a code breaker. Not in the way you might consider Turing to be a code-breaker but I have a incredible talent at destroying code. I broke my game in ways I never even thought possible. Although I don’t have many screenshots or videos to show the simply mind-blowing ways in which I broke the game due to panic and attempts to fix my mistakes, I wanted to document some of the more notable ways in which I overcame the curse of breaking everything I touch.


Lights Out

To avoid the UI narative elements repeating after the scene reloaded upon the players death, I created a second scene that was an exact copy of the first with different UI elements. I tested the new system, and half of the lights in the scene turned off when Scene 02 loaded.

I checked the lights, but could not see the problem. I decided this was a bug which could be solved later in development. I did not figure this issue out - however the lights stay on in the exe. build, despite the fact they remain broken in Unity after death.


The Dying Player

In order for the player to know when their avatar was taking damage, I wanted to create a UI element which would flash white anytime their currentHP decreased. I had some fairly simple code, which worked (I tested it with a Debug. print which called for the UI Image in flash) - however somewhere in the code I had created an error which I could not find to fix. I spent 4 hours trying to find the problem, taking all the new code and elements out of the build, for it still to be broken. This resulted in me having to reload an earlier version of the build to work from. I did learn it is extremely helpful to save separate builds in case you break the current one beyond repair. I did not figure out how I managed to do this in the first place.


The Floating Bear

When I first brought my bear model in from Maya to Unity to replace the place-holder, it seemed to be working quite well. I double checked that I copied all of the required components, moved a number of assets around to account for the increased size of the model; everything seemed to be working well. When I pushed the Play button however, the asset jumped in the Y axis. Just straight up in the air. Floating. 

I rebaked the nav mesh, triple checked the components - could not figure out why this was happening. Thankfully, after reading some advice on the Unity Forums, I was able to write 2 simple lines of code which would keep the thing grounded. I did not figure out why this problem was occurring.


The Invisible Bear

This happened almost immediately after the floating bear. I realized that the Bear would randomly not appear on Play. At first, I thought this must be an error with the model I’d brought in from Unity. I tried to re-import the model, tried to smoothing the mesh, tried to clean up the model - to no avail. I realized the issue had to be coming from Unity. After speaking to some of my colleagues, no one understood why it would disappear intermittently.  One of my friends asked me to screenshot or record what was happening to try and help, and this was how I finally figured out what was going on.

As you can see from the video - I knew the game object was still there since the Player could not move into that space; so I concluded that I was somehow turning off the mesh renderer. Around the 0:35 mark you can see the exact moment I figured out the problem.

The game objects which act as triggers for the Bear to move to the next location are child objects of the Bear. The code to randomize which of these are active at any point also turns all of the other child objects of the Bear to be inactive. When I transferred the components and child game objects onto the Bear model, I did not account for this code which would randomly turn them off on Awake. The solution was simple - I copied the Skinned Character Mesh component onto the parent game object, then changed the code to ignore the skeleton rig for the animator when randomizing which child object was active. This solution took 5 minutes to implement and wasted around 3 hours trying to figure out the problem.


Everything said, I’m very happy with what I was able to create in 12 weeks. I’m excited to continue working on this project in my spare time, and hopefully by the end of summer I will have more to show.



Blog 06 - Animation in Maya and Unity

Having close to zero experience animation, I wanted to explore both Maya and Unity animator tools and decide which would be the easiest and quickest to build some simple yet functional animations for my bear model. I began with the ‘attack’ animation, since I knew exactly how I wanted this to look, as well as knowing that the head and neck rig were functioning well. 

 

I was happy with the results, and wanted to see how the animation would look in the Unity game engine. However, when I exported the model, the animation was not present. I tried exporting straight to Unity, exporting as a fbx, rebaking the animation - Nothing would work. The animation was playing fine in Maya but I was not able to access it in Unity. This ultimately made the decision for me to use the animator tools in Unity itself.

I began by recreating the same animation in the Unity engine. I found this was also very easy to use - due largely to the rig I had made in Maya. I was also able to make a simple idle animation to give life to the npc.


Unfortunately, this was the point that I realised that the rear half of the rig was not as functional as the front half. That resulted in a strange (read: bad) walking animation shown below.


So I had 2.5 working animations at this point. I wanted to apply them to the model to ensure they worked well with the script. And yet again I ran into some issues. Namely that the animations were overruling the scripts; which of course is problematic.

Below show 2 of the issues I encountered:

- The first was a loop where the bear would play the idle animation once, then play the attack animation (without being called for), then loop.

- The second happened when I tried to fix the first, where the bear just shook his head around.

Obviously these are less than ideal,  as the game becomes unplayable without the interaction with the Bear. Unfortunately I was unable to fix these bugs before the deadline for the game sketch, but I hope to return to these at a later date.



Overall, I was disappointed that I could not implement the animations in the submitted game build - however I feel as though I learned a lot about the animation process. I understand that Maya has better tools for animation, however I did enjoy the simplicity of Unity’s animation toolkit.

Using Format