Scott Purcival

Game Programmer

Game Dev

The Dark

By on 10 March, 2018

The Dark

A bit of a late post for me, so I will make it a postmortem, i suppose.

I started working on The Dark as my first assignment while studying at AIE. It was to be a text adventure showcasing all of the skills we had mastered over the 6 month duration of the subject, and it was to use our own custom string data type class.

The concept of the game is that you are stranded in a dark labyrinth, and must find your way out before you starve.
The labyrinth offers only the occasional morsel of food, rare torch batteries, and other throwable objects.
You may use your torch to see what is around you, or throw objects that you find in a direction you choose to listen for openings.

Looking back, I would admit that I programmed this game quite conservatively, using only the minimum required data types and facets of the C++ language.
I was still at this time in a frame of mind where I looked down upon using any code that was not my own, as if it were some form of ‘cheating’. I have of course come to realise that the STL is no more or less someone elses code, than the entire C language and compiler are. However, I am still wary of adopting outside code unless absolutely necessary, as I feel this opens the door to potential bugs and inefficiencies. (as you can see, I am using Unity heavily now. I see the benefits of that engine to my development time outweigh any shortcomings.)

The most difficult aspect was the random level generator by far. I ran multiple concepts of possible generation styles with pen and paper before settling on the idea of a single winding path with rooms leading out from it.
The general algorithm went as follows;

  1. Create a random winding path from room 0,0 until there are no more possible exits
  2. Scan through the map top to bottom, left to right and find an empty room
    1. Create a winding path until there are no more possible exits
    2. Break through to nearest room
  3. Repeat 2, until no empty rooms left
  4. Randomly place start room, and exit room

I then created a handful of random room descriptions and Items to place in the rooms, and the game begins!

I would like to invite you to give it a try, it’s a simple game but quite challenging.
Let me know what you think! ๐Ÿ˜€

Download Here (Windows)

Cheers,
Scott.

The Ballmer Peak (Part 2)

By on 20 January, 2018

The Ballmer Peak (pt. 2)

-LAST WEEK-

So I took a short break from working on Ballmer Peak for a couple of weeks, then I came back to it.
At this point it was early in the new year, and as I had made a promise to myself to release something to the app store, I thought it best that I get it over with, and launch it, if only in early access Alpha.

I cleaned up the game,ย and started to implement what began as Story Mode, but ended up being the first 4 tutorial levels. I added a sort of credits screen, and replaced any art that could be the subject of a copyright issue, and set about uploading it the the Google Play store.

There were a bunch of hurdles to overcome, and I still find the whole process rather counter-intuitive – but my game is Live! And to date it has had 18 installs :O (thats about 17 more than I expected…) I hope these 17 people appreciate the update to version 0.3 that I pushed today :).
Among the major learning points were;
– Learning how to create a certificate and sign an apk for the Play Store
– Everything about navigating the Play Developer portal. Everything.

-TODAY-

I left the game on the Play store for about a week before working on it again. One of the major points i wanted to work out was in game music – as i feel this really sets the mood for a game, and everything feels a little bland and unfinished without it.
I didn’t want to use any off the shelf music, so after working with my nephew for a couple of weeks on some tracks, and really listening to what other games had done with their BGM, I came up with an idea of what i thought good game music should sound like.

Starting with the idea that I wanted the music to sound digital and computer-y, I spent some hours making and revising a track in an Android app called Music Maker Jam.

I then connected the BGM track to the coding rate in the gameManager in game, so that the music will speed up and slow down with the coding rate of the player, as a sort of non-visual cue.
Finally I created a static reference to the audio source in engine to allow me to keep the music playing uninterrupted across scenes, and I added audio feedback to button presses in the UI.

After toiling away for most of the day, i had a really nice menu system, credits, a tutorial, a free play mode, but still no high score system – which was really a problem, since outside of the tutorial, the only other game mode, freeplay, really only had one goal – beat your own high score.
For now, I thought the best implementation would be a platform independent local storage method until I decide how I want to host the leaderboard online. After a quick search I found the native Unity PlayerPrefs interface, and was able to save and load High Scores locally.
I intend to later upload any local high scores to the online leaderboard once it is created.

I then set out to upload my updated app to the Play Store, which was another learning experience. But once again, my app is LIVE! ๐Ÿ˜€

Hopefully my next update will be an online leaderboard, and some of the first chapters of Story Mode ๐Ÿ™‚
In the meantime, feel free toย Play it HERE! (WebGL) or HERE (Android)

Cheers,
Scott.

The Ballmer Peak

By on 19 December, 2017

Game Screenshot

The Ballmer Peak

At the start of this year, I promised myself that I would release a game to the app store by the end of the year.

I started out working on ‘Tower’ – which was progressing really quite well, however, I hit a roadblock with art. I progressed as far as the free assets would allow me while retaining my creative vision for the game aesthetically. I did not have the spare money to spend on assets which I really only partially liked anyway, and with work and studies I found myself too time poor to learn 3D modelling, and so the game was shelved.

I then saw a new possibility in ‘Jeeves’ – the team project we are still currently working on for our Major Production, however the planned completion date is not until mid 2018, and I wanted the game that I put out there to be and example of my own work and so I decided that it would not fit the bill.

In a flash of inspiration an idea for a top down zombie survival RTS game struck me. It has unique game mechanics which bend the definition of the RTS genre, and I was receiving overwhelmingly positive feedback on the idea, but at this point, I would think it would have taken too long to make – and therefore was not an ideal candidate for publishing by the end of the year.

It was in a team meeting for ‘Jeeves’ that I was making a joke about how I avoid burnout through a finely balanced mix of energy drinks and bourbon, that the possibility of making a game mechanic from this struck me.
A quick brainstorm later, and I had a solid idea for a novel game using a traditional game mechanic, interwoven with a modern control scheme and a somewhat complex, but intuitive scoring and power-up system. The goal of which is to embody the essence of long coding sessions into the wee hours of the morning, and the hunt for the elusive Ballmer Peak.

At this point I am ~3 days into development. The art is all my own bar from the pixel font and falling pizza and V can assets (the both of which I will be replacing in short time). The font is free for commercial use and the author will be credited in the credits (when I make them).
I am really enjoying honing my pixel art skills, and quite enjoyed making the sound effects with wet sponges and real falling pizza.
As of writing this I am actually watching a video on Facebook integration. At this point the plan is to store and share high scores.

I personally think the game is at a fun to play state. I got this impression as I found myself cringing and yelling “OH NO!” at about the 1 day, 10 hour mark in a particularly good play session. XD

Anyway, let me know what you think about it below!
Play it HERE! (WebGL) or HERE (Android)

Cheers,
Scott.