Hello Folks! Welcome to Our Blog.

Game jam 2 caught me by surprise. It came a week earlier than I anticipated and I was completely unprepared. Unlike the first jam where I was on the blocks and awaiting the starter’s pistol on the Wednesday, I was very late to the party and didn’t really start work until the Saturday. 25% of the available time passed without making any progress.

We had a secret joke when I was an apprentice: the sooner you fall behind, the more time you have to make it up. Time to get busy.

Project Brief

The brief was very different this time too. We were tasked with using the random article feature on Wikipedia to find a person, a place and an event then amalgamate these with the phrase “As long as we have each other we’ll never run out of problems.

This proved significantly harder than I anticipated and after a few hours of searching I had my three:

Place: Holway, Wisconsin

Person: Janet Treasure OBE

Event: Ghost Festival

I fed these through the creativity phase and came up with this…

Game Jam 2 Creativity Output
Fig 1. THORN, 2020 Game Jam 2 Creativity Output

The arrows were added after to highlight the linkage of ideas. The early creativity was covered in this post, Week 8: Game Jam 2 — The Reveal and Early Creativity, so I won’t repeat them here.

Outcome

What was my goal? Did I achieve it?

As with the first game jam, my goal was simple: to produce a prototype for a game that could be developed further and ultimately released. I also wanted to push myself harder this time with the content:

  • To learn about and experiment with shaders in Unity
  • To learn about and experiment with particle systems in Unity
  • To learn and experiment with character rigging and animation in Unity
  • To create and use my own assets rather than use those from 3rd parties
  • To create my own player and NPC scripts using good OO principles

That was a big list, especially as procrastination cost me 25% of my development time. Nevertheless I feel I delivered on these goals as each and every one featured in the beta version (Week 9: Game Jam 2 Beta Release). Some could be improved upon I’m happy to admit, especially with regard to the animation, but for a first attempt at an early concept demonstrator, I think it’ll pass muster.

What issues did I encounter? Did I overcome them?

Colliders were the biggest issue on this project, specifically, getting them to work properly. Ultimately it was down to misreading the Unity API spec. and completely missing the difference between the OnCollision…() and OnTrigger…() event handlers. A good trawl through the Unity manual and suddenly all became clear.

The only other issues were logical coding errors, probably as a result of my own haste and to get things done more than anything else.

What did I learn?

I’m particularly proud of the fog shader. This was the first time I’d looked at shaders in Unity and whilst the basic fog shader was created from a tutorial , the soft edges are of my own making. For this I created a loose shape in Photoshop with very soft edges and transparent background in much the same way as I’d add a vignette to a portrait. It was then a case of bringing this into Unity and modifying the final stage of the shader to apply it.

Fig 2. THORN, 2020 Fog Shader Soft-Edge Mask
Fig 3. THORN, 2020 Soft-Edge Fog Shader

Looking back now, it seems very logical and simple: add a texture block and multiply it with the output of the fog shader and voila. At the time, and with my limited experience, it was a bit of a guess combined with a healthy dose of luck and a sift through the available shader blocks.

Particle systems were far easier than I envisaged. I’d previously thought of these as a bit of dark art but creating the water jet from the syringe was very quick and easy. More advanced effects will undoubtedly take longer but this project provided a good foundation upon which to build my knowledge in the future.

Character rigging was more complex than I anticipated. It was not a case of add a few bones and the rest is easy. There is a definite workflow one must follow that starts with the character creation — splitting a 2D sprite into separate layers made everything much simpler as did saving the files as .psb rather than .psd or .png! Importing a 2D sprite for animation as a .psb file significantly simplified the task of rigging the characters.

My biggest error with rigging was to not properly understand the parent-child relationship. After the first attempt it was clear the arms were not parented to the correct torso bone which led to complications when animating. This was easy enough to fix despite the Unity UI not being intuitive when deleting a bone on a MacBook.

With the bones in place it was then just a case of applying weights to the mesh and using the weight-painting tool to fine tune everything before moving onto the animation.

The big takeaway with the animation was how important a good rig is! Any errors in bone placement and mesh weights will lead to weird distortions when it comes to animation. The beta version still suffers from this with the zombie NPC as the legs were created as a single layer rather than two layers, one for each limb, in the case of the nurse. There is still distortion around the groin on this sprite but I chose to let this go for the beta version as it’s barely visible in the animation. I know it’s there though, and as such I feel it needs correcting before publishing the game.

Workload management

For this game jam I used exactly the same process as the previous one. The game was broken down in to stories that were sized and prioritised before being loaded into sprints. It was then just a case of grinding through the stories to create the game. I also followed the exact master code line management strategy as I wrote about in this post for version control. It’s a process I’ve followed for years and, when used correctly (without going off piste!!!) significantly minimises the number of merge conflicts developers so frequently seem to encounter. If a merge conflict does occur it’s resolved on the feature branch and tested before being commited thereby significantly minimising the risk to the development and production branches.

Fig 4. THORN, 2020 Game Jam 2 Beta Version Burn-up

As the burn-up shows, I only managed to complete about 2/3 of the identified stories within the time available. The late start and flat spot in the second weekend are very much contributing factors in this. The additional 30 points worth of work would have been useful but the beta version does demonstrate the concept of the project and as such I’m declaring this a success.

The missing items were…

  • Zombie and infected human breath attack
  • NPC AI
  • Nurse’s companion
  • Sewer level
  • Level boss
  • Reflection shader
  • Animated background
  • Dynamic lighting
  • Time Lord diversifier: game mechanics change with player’s time of day
  • Easter egg

That is quite a lengthy list, and clearly too much to deliver within the timeframe. To control scope, my approach was to perform a MuSCoW analysis to define the MUST-have items for a minimum viable game. The rest were all SHOULD-have items to be included at the end, time permitting. I rarely, if ever, use COULD-have items and the WON’T-haves all went on the Ideas Carpark.

Scope was controlled and managed with MUSTs and supplemented with SHOULDs. MUSTs, being higher priority, were worked on ahead of SHOULDs.

In hindsight, should have only included my MUSTs in the beta version scope. This would have made the version burn-up look much better but shown scope churn towards the end of the period rather than front-loaded as indicated on the chart.

Conclusion

I wanted to push myself much harder for this game jam than the previous one. I felt last time that I ‘cheated’ by using pre-made assets. In making my own I felt much more in control of the end-to-end process this time.

I also found that shaders, particle effects and animation were must easier than I envisaged whereas rigging was much harder and not just a case of ‘slapping a few bones down, job done.’ I now hold a new-found respect for anyone who rigs a character for animation. Their skill and expertise can greatly simplify the work of the animators.

The concept I came up with failed to embrace the spirit of the phrase “When we have each other we’ll never run out of problems” — quite simply, I forgot about it until the demos — and so failed to fulfil the entire brief. Having got this far I plan to develop it further and add it to my portfolio. As a concept it will be very reliant on current affairs as it fits within the genre of ‘Newsgames’ , specifically Coronavirus, so may have a very limited life if it were published.

List of Images

Figure 1. THORN, 2020 Game Jam 2 Creativity Output

Figure 2. THORN, 2020 Fog Shader Soft-Edge Mask

Figure 3. THORN, 2020 Soft-Edge Fog Shader

Figure 4. THORN, 2020 Game Jam 2 Beta Version Burn-up

References

Share your thoughts...

text/x-generic footer.php ( PHP script text )
ScaryBlankPage®