My 2015

My year in a nutshell:

  • Quit my IT job.
  • Started and finished a post-grad course in management.
  • Started a games studio/company with fellow graduates.
  • Almost released our first product to the world.

The post-grad course I graduated from was run by AIE. It was called Incubator. We were in a semi-formal office, with other groups and companies that were making their own products. In our time there we did a Vocation Graduate Diploma of Management (Learning). It took us through researching market/industry trends, prototyping, pitching, production, business automation – a whole lot of very useful stuff. All the while, we were producing our very own product. A huge bonus being in the Incubator was grant money, given by the college. We used this to pay for an accountant to set up our company and for traveling to PAX, in Melbourne (where we showed our game). We also used it for renting our Google cloud server.

It was a great year, nothing really seemed to go bad for me now that I’m looking back on it. I met so many awesome people and made loads of business contacts in Melbourne, attending GCAP and PAX. A representative from a publisher showed great interest in the game, if we have a good soft launch we may be working out a deal with them to really push it in the market.

I haven’t posted here for a while, not about the game or even the company, so expect to see more posts very soon about that. According to the stat tracker, I had over 700 views for the year… that’s a lot more than I expected. Now I’m definitely going to post more often this year!

So, here’s to an even better year!

Agile Software Development

A quick snap of our 2nd Agile Sprint - and organised desk space

A quick snap of our 2nd Agile Sprint

Our mentor has been teaching us how to use Agile to its fullest so we can make the most of our time in the office.
We’ve been using the poker cards to number each ‘story’ (the descriptions on the white cards) and break up the stories into smaller tasks.
When we complete all of the sub-tasks of a story, in the next mornings meeting we can move it to the finished section and reflect this update on the ‘burndown’ chart.
Right now we have an impediment with Unity and Perforce (the Version Control software that we are using). There is a plugin that we used to use with Unity 4, it would allow us to make updates/commits within Unity and have no issues merging scenes. The plugin only recently became available for Unity 5, but it’s buggy. We’re in the middle of working through this with their support so we’re using their visual client for the time being, which is great but less time efficient than the plugin.
Back to Agile – it’s great. When you have those days of being unfocused, all you need to do is take a look at the wall to see where you’re up to and keep going. No one wants to reach the end of a sprint with nothing to show!

Game Jam – November 2014

Start of the level

Start of the level

My college, AIE, was holding a game jam event for the weekend of Halloween. The theme was ‘I think I’ve been here before’. Jess and I had to decided to team up. We had been discussing designs to try and she wanted to try and recreate Icy Tower. After playing it I thought it would be achievable to do in the 48 hours we would be given.
When I say I thought it was achievable, I mean to say that the base design and features would be possible.

Those features are:

  • Randomly placed and sized platforms.
  • Level is constrained by 2 walls.
  • Moving the player sideways and bouncing/jumping off the walls, making you jump higher depending on the speed you’ve built up.
  • Score system.
  • Life System.
  • Ghost System – When you die/fail, you leave a ghost behind. If you can get back to the area you failed at, you can touch the ghost to reclaim your lost points. Similar to Dark Souls! We did this to correlate with the theme of being there before.

Icy towers features many different platforms such as platforms that drop when you jump on them and platforms are invisible. It also features a moving camera that the player has to keep up with, or they will fail when they go off screen. Our game has the one platform type: the branches. They are limited to being attached to the bases of the trees. We wanted to include clouds as the player got higher but time did not allow it. Our camera also only has one function, which is to follow the player, unless they fall down.
We also wanted to build it to our phones but we just left it with a PC build. I’m going to port it to the phones another time. I’ve since created a web build which you can play right here.

We were pretty happy with the resulting game, it had animations, sound and a never ending level. We finished comfortably with about an hour to go before the submission time, so no stress!

Procedurally Generated Terrain

This project was the assessment for our Complex Game Systems subject. We had a choice between AI, Procedural and UI (the procedural option included a little bit of UI as well).

I opted for the procedural option, which required texture layering, procedural terrain generation and 10 assets (models in this case) that were required to be randomly placed in the scene. I duplicated the models to make 2000 individual ones across the scene.

4 texture layers on one mesh, with mixing between them (mixing should not be confused with blending)

4 texture layers on the one mesh, with mixing between them (mixing should not be confused with blending)

Another requirement was that a user of the program needs to be able to change 4 settings in the scene. As you can see in the UI, I have included 4 inputs that manipulate the terrain.

Default settings

Default settings

As the Displace Height variable is running through the vertex shader, changing it instantly shows a result on the screen in realtime. The other 3 inputs are only seen when the Generate button is pressed.

Amplitude: Low Complexity: Low Size: Small Height Displacement: Low - Medium

Amplitude: Low
Complexity: Low
Size: Small
Height Displacement: Low – Medium

For the terrain to be changed so easily by the user, I had to create a height map out of code and not use one that was made by an artist. To do this, I used a noise algorithm known as Perlin Noise. The Amplitude, Complexity and Size inputs are used within the noise function. To achieve procedurally generated terrain, I put all of the values created in the Perlin Noise into a one dimensional array and extracted that information to create a texture. The texture stores the values in its RGB’s red channel, so all I had to do in my shader was assign one of the 4 textures (from my texture layering) to be at the point. That’s the simplest way I can explain it without diving into it.

Settings: Amplitude: Max Complexity: Max Size: Max Height Displacement: Low

Amplitude: Max
Complexity: Max
Size: Max
Height Displacement: Low

The vegetation and rocks are randomly given a point on the terrain and they adjust their height to match the height of the terrain. They are only allowed to be placed in certain areas, as you can see: the rocks are only placed in the water or on the sand, the vegetation is only placed on the sand, grass or soft snow. Nothing is allowed on the thick snow.

I’m very satisfied with the program I’ve put together. It fulfilled the requirements but it also looks nice and works well, with only a few minor bugs at the end. I’m going to continue looking into procedural generation, I’ve already got my eye on maze generation.

3D Physics

In class we are setting up our own physics project without the use of 3rd party software such as PhysX and Havok.

We’ve set up a pool table to test our physics implementation. We can aim the white ball and change how much force we are applying when we hit it. If I set the force high enough the ball may bounce and even go straight through the table’s wall!

Pre break

Pre break

Post break

Post break