December Development Milestone

Along with this blog I was intending on having a separate development blog that would detail my progress on the games I am developing. However I decided to keep both blogs in the same place, right here. In the development blog I would post up milestones for my projects. The milestones would take roughly a month of development, each component of the milestone would have to be completed or be very close to being completed.

Currently I’m not specifically working on any game in particular. Instead I’m working on bolstering up my code base in order to make development easier over the next year. My intention is to release a game that I started ages ago, Rotablock, once the code base is up to a much higher standard. I’m hoping that after two milestones from now which will be mid March, I’ll be ready to work on Rotablock. From there on I plan to work on an expansion to my first game jam game, Everything Shall Come to an End.

December Milestone

Started on December 10th
Finished on January 12th

  • Migrate Project to online version control system

    The first thing that I wanted to do was to move my code to a hosted online repository.

  • General Tidying up of the Code Base

    I’ve been using this code base for all of the Game Development Club Game Jams and it was becoming very messy so I wanted to clean it up.

  • Drawing Classes for Convex Polygons

    In order to make drawing different shapes easier I wanted to create classes that would handle this for me and generate display lists automatically.

  • Game Properties yaml file

    Common game settings such as resolution should be stored outside of the game binary. Since YAML is clean and easy to read, I wanted store these properties in YAML.

  • GUI System

    Create a GUI System that consists of buttons, drop down lists, radio button groups, check boxes, text fields and sliders. Items would need to skinnable.

  • Improved Sprite Classes

    The existing Sprite classes should extend upon the drawing classes for rectangles. There should be sprite classes for a standard Sprite, Multiframe/state Sprite, Animated Sprite, Sprite with sliding texture coordinates and a tiled sprite.

  • Stage Objects classes

    Create a Stage Objects class to simplify common operations such as rotation, translation and generating bounding boxes.

  • Math Vertex and Matrix Classes

    Create Classes for Vectors of 2, 3 and 4 dimensions and Matrices of 2×2 and 3×3.

  • Testing Framework

    Setup a testing framework using CMake

Milestone Progress

  • Migrate Project to online version control system – Completed!

  • General Tidying up of the Code Base – Mostly Completed!

  • Drawing Classes for Convex Polygons – Completed!

  • Game Properties yaml file – Completed!

  • GUI System – Completed!

  • Improved Sprite Classes – Completed!

  • Stage Objects classes – Completed!

  • Math Vertex and Matrix Classes – Completed!

  • Testing Framework – Completed!

As you can see, most of the milestones were completed. I’m happy with the progress I’ve made over the last month. The code base is much tidier than it was before but in a few errors it needs to be touched up. I’ve moved all of my code to a private repository on BitBucket which I’m finding along with Mercurial to be excellent replacements for subversion and my local repository. I unified all of the building scripts into one CMake file. I’m wanting to update the resource managers in the future to allow for reference counts on items so that resources can be shared between game states.

When porting Platform Chunk Clump I noticed that loading detailed YAML files was very slow on Windows. In the future I’m wanting to switch out using yaml-cpp to something much faster.

I’ve attached several screen shots to show my progress.

From left to right. Tiled Sprite, Animated Sprite, Scrolled Sprite, Sprite

Variety of GUI Components in OpenGL

Polygon objects and Text with axis aligned bounding box, center(blue dot) and rotational center(pink dot)

January Milestone

Started on January 10th
Expected completion February 5th

  • Tweening for Stage Objects

    Allow frame rate independent tweens to be placed on Stage Objects

  • Option State

    Setup an Option Game State that can be used to set resolution, full screen, sound and music volume, key bindings and antialiasing

  • XML/YAML Support

    Modify existing parsers with adapter pattern to support either YAML or XML. Research XML libraries

  • Stage Object Pruning

    Create a system that checks stage objects to see if they are offscreen(via bounding box) if so then create events to handle this

  • Particle effects

    Create a system that allows for the easy creation of particle effects

  • CMake Support for creating functional XCode and VC++ projects

    Would be very handy.

  • Refactor all Resource Managers

    Make use of managers with resource counts

You’ll hear more development progress in a month. Hopefully sooner.

Thoughts on Two Anthropomorphic Bubbles

Recently I was referred to a game called Two Anthropomorphic Bubbles from a friend on Facebook. I started to jot down my thoughts on the game which started to get rather long, so I’ve decided to post them here. Before you continue reading be sure to give the game a go.

From the games title screen you get the impression that this game is intended to be a metaphor. The title partially gives this away with the use of Anthropomorphic. According to Wikipedia:

Anthropomorphism is the attribution of human characteristics to non-human creatures and beings, phenomena, material states and objects or abstract concepts.

So therefore these bubbles are meant to take on human characteristics which is further suggested through names of the two characters of this game, Mr and Mrs Pink Bubble.

Upon playing the game you move through the world which is populated by grey bubbles. You control Mr Pink Bubble using the mouse to, as you move the mouse Mr Pink Bubble follows you. A grey circle expands and shrinks around you based upon how close you are to the most recently touched bubble. As the grey bubbles traverse to the left hand side of the screen, this bubble inevitably becomes bigger. The more grey bubbles you touch, the more your score increases, as your streak of touching grey bubbles increases so does your size. It’s hard to tell but if you don’t touch the grey bubbles frequently enough or over time you, Mr Pink Bubble, decrease in size. I noticed that if you didn’t touch any grey bubbles for a while and went to touch them again then you would actually lose score.

There are several metaphors conveyed here, each with different effect. When you touch the grey bubbles you become larger, this could be interpreted as a metaphor of, the more you share love and understanding, the more fulfilled you become. The shrinking may represent how we become bitter and less fulfilled when we are alone and don’t share our love. The fact that grey bubbles move off screen could represent how we have to eventually let go of some of the people we love. The dynamic in which you inevitably touch another grey circle could represent how we meet people in our lives unexpectedly and we share our love with them. The loosing of score could represent how it hurts to start to share love again.

The game consists of dialogue between Mr and Mrs Pink Bubble as well as a background that slowly scrolls to the grave of Mrs Pink Bubble. These only lightly serve as means to provide loose context. In a way they are redundant.

At this point you may be thinking that this game mirrors the strong metaphors in other experimental games like The Marriage. I strongly disagree with this because I feel that this game is missing a strong sense of conflict between the mechanics that could be used to enrich the metaphor. Despite relating to these metaphors I feel as though it misses stronger and much more interesting metaphors about love.

Love to me requires sacrifice. The sacrifice to open yourself up to something that could hurt you and something that will make you vulnerable. There are no mechanics in this game that play off against each other to represent sacrifice. As a result I feel that it only hits the surface of being a metaphor for love.

My Game Jam Games Released and Cross Platform

On Friday I released all of the games that I made for the Adelaide University Game Development Club Game Jams for Mac(Intel), Windows and Linux. I also updated the source code slightly in order to make the first game jam game run faster and to make it easier for me to compile my code on the different platforms.

Previously I only released the source code for Mac. I use Vim and Macports on Mac so this was hardly optimal for the average Mac developer.

The source for all of the games now comes with a CMake file, XCode Project File and Visual Studio Solution file. The XCode and Visual Studio Projects were created by hand instead of by CMake. I need to refine my CMake skills before I can get everything working perfectly and this gave me the opportunity to suss other the two Integrated Developer Environments(IDEs). Don’t worry I’m sticking with Vim for sure!

For Mac developers, I didn’t convert some of the libraries used into Frameworks. Instead I included the dynamic libraries into the App bundle. These dynamic libraries are taken from Macports. I couldn’t get XCode to update the references to the dynamic libraries inside my executable and other dynamic libraries. So instead I updated the references using a small python script that used otool and install_name_tool. I may publish it sometime.

This marks the completion of my portfolio website and game ludography. The two sites do overlap a little. The portfolio site is to accompany my resume and as I think it’s important to highlight a variety of the different work that I’ve done. The ludography exists in order to provide a nicer interface to my games.

Here are all of the games I made over the last year. Enjoy.

Everything Shall Come to an End

Leave your Path

Biggle

Platform Chunk Clump

Thoughts on Metal Gear

Recently I played through Metal Gear Solid(MGS) for the GameBoy Color(GBC), a surprisingly hard to find and often overlooked game in the popular Metal Gear series. As with other games in the series, especially the Playstation version of MGS, it doesn’t let the technical limitations of the hardware hold it back from delivering a surprisingly deep game with a detailed story. The game raises the standards of games on the GBC, not just technically but through it’s enquinety with control and sheer content.

Today I want to share my thoughts on the Metal Gear series, currently I’ve played Metal Gear 1/2, Metal Gear Solid 1/2/3 and Metal Gear Solid on the GBC.

I find that the series contains many aspects that sets it apart from other games, however these aspects make it such a polarising series. The story would have to be the most polarising aspect of the series. Relative to other video game stories, Metal gear presents a more complex, stylised story, be it through the use of modern history, the discussions of the technicalities of war or the layered relationships between major characters.

More complex entertainment demands more from its audience who are trained to accept the lowest common denominator of complexity in entertainment. Clearly anything that steps up the complexity is at risk of alienating a few. However I think the expense of alienating a few in order to raise the standard of entertainment is a perfectly okay sacrifice to make.

Parts of the story become very convoluted with plot twists that layer and intertwine and become so complicated to some that the story comes off as being incoherent. I can understand how people don’t like this. Personally I enjoy the plot twists and there are points where I am at a loss to describe what is going on. However because of my attachment to these games such twists and entanglements encourage me to pay closer attention to the details. This problem is evident in MGS2, while confusing I found the ideas that were presented to be incredibly compelling.

The stories of Metal Gear are layered on thick and arguably too thick with long cut scenes that drown out those who don’t take interest in it. The argument that there is this balance between interaction and no interaction in games confuses me. Video Games are just software, the classification of games can narrow our mindset to what we can do with such software. However thinking just in the steeped definition of games doesn’t do us any good when you have games that push that definition into interesting places.

The game play in Metal Gear focuses of setting up environments in which the player much use her arsenal of stealth items and sometimes lack of, to sneak through without being detected. This open ended style of play allows players to create their own narrative if they take to the games mechanical system. The game offers few in game rewards for experimentation and ultimately the player is self rewarded through the interesting scenarios that can play out. The process of the players rewarding themselves goes against some silly ideas the industry has of baiting players with rewards in order to keep them playing.

As you’ve probably noticed I’m really a fan of this series. I’ve just defended some of the major complaints people have with it. I can understand these views however they don’t bother me so much, sometimes they do quite the opposite. However there are things that bother me about the series and I want to talk about them too.

MGS borrows heavily, as do most games in the series from the well established Metal Gear 2 mechanics. MGS is practically Metal Gear 2 in 3D and MGS on the GBC is just more Metal Gear 2, with the only new mechanics being added were 8 way movement and colored box puzzles. MGS3 and probably MGS4, I’ll find out when I play it, add more to the base mechanics but it barely changes the fundamental mechanics at play. The fundamental mechanics of the Metal Gear games is ‘stealth’ which basically boils down to avoiding enemy viewing boxes. Not really all that interesting. The different scenarios that play out can be interesting but they don’t always remedy this core problem. The major mechanic of a game should be the most fun/interesting/whatever and avoiding hit boxes is not.

Repetitive story structures are another problem that plagues the Metal Gear games. Repetitive villainous groups are in every game, be it Fox Hound, GRU, Dead Cell, etc with each group containing around 5 members that you must destroy through the entirety of the game. This story choice greatly influences the games structure with boss battles set at regular intervals that can make for predictable pacing. This point is rather subjective but it does tire when in every introduction screen you hear about of a rebel group of 5 or so members.

What information is hidden and revealed and to whom great affect the mood of games. One frustration that I have with the Metal Gear games is that once you have alerted an enemy in the game, then all enemies appear to know where you currently are if you are within a certain range(physical distance, not necessarily the enemies viewing distance). There is nothing in the game to indicate that all enemies should know exactly where you are. The enemies use radios to communicate but that doesn’t explain why the realism presented in these games graphical system doesn’t match the realism present in the games mechanical system.

I think that’s about all I have to say on Metal Gear. It’s a great series that I recommend people try, even if it just to see if you’d enjoy it.

The Quest for the Dragon

Until yesterday the name Chris Crawford was a name that I had heard mentioned many times but didn’t really know much about. His book Chris Crawford on Game Design is often cited in books on video game design and appears to be the next classical text on games after Huizingas’ Homo Ludens. Crawford also started the Games Developer Conference and as such you would expect him to still be in the public eye from time to time. However he is not. Crawford left the industry in 1992 after charging out at the end his Dragon Speech. He left to pursue what he called ‘the dragon’, a metaphor for games as artistic expression.

Yesterday I watched these videos below and learnt a lot about what I feel to be a very interesting and progressive character, Chris Crawford. I encourage you to watch these two videos in order to get a better understanding of him and his vision.

Imagine Raising the Complexity of TV

Recently I’ve been reading Television and the Quality of Life by Robert Kubey and Mihaly Csikszentmihalyi. This book has gotten me thinking about television and the impact it has our lives. The book presents many points about how television is used as a means of escapism and relaxation. The complexity of the messages in most TV programs require very little concentration to comprehend and hence the experience of viewing television becomes very passive. Television producers are known to cater their programs to the lowest denominator in order to maximise potential viewers and as a result maximise profits and ‘success’. This leads to a lot of people consuming media of low complexity, with television being consumed at such high amounts, this is a very concerning issue.

The book notes several factors in people that tend to lead to heavy viewing:

  • Loneliness
  • Availability of Free time
  • Emotional Difficulties
  • Youth
  • Low Income
  • Lack of Education

Now let’s do a little thought experiment. Imagine if the intention of the television producers changed. Imagine if instead they aimed to improve the complexity of their shows just by one notch. If they slowly raised the bar of the complexity of what was being shown in order to bring up the lowest denominator. Think about the effect it would have on the people who fit into the heavy viewers of television which consists of many young people. It would likely result in less television being watched as it would require more concentration and people cannot concentrate at their peaks all of the time. This itself is actually not a bad thing as the book also mentions how lighter viewers tend to enjoy television more. The roll on effects to the lives of TV consumers would be great. They’d most likely lead fuller lives and happier lives as they tackle the world with higher complexity.

Back into Blogging

Hi folks. It’s been a little while but I’ve decided to get back into blogging a bit. I intend to write little snippets here when I can spare the time.

Over the last year I’ve gotten back into reading in a very big way. I’ve been reading through some really interesting books about games, psychology and programming. All of the wonderful benefits of reading have come back to me and it feels fantastic to be an active reader again.

I’m hoping that I can have a similar spark with writing. I haven’t done much writing in the past. I’m hoping that I can aspire to be as expressive in my writing as my wonderful girlfriend or my brother are.

Current Prototype – Rotablock

I just thought that I’d stop by and post a bit about something I’ve been working on in the background. Over the last few months I’ve been slowly working away at integrating SDL and OpenGL together in a basic game engine while on my train trips to and from University. After integrating the two together I put together a very simple puzzle game which I’ve called Rotablock.

The aim of the game is to find sequences of horizontally and/or vertically aligned gems. Once you have found these gems you can select the sequence and they shall be removed from the grid. New gems fall from the top of the grid and slide down to the bottom. You can rotate the grid 90 degrees left or right and all of the gems will move accordingly. You can also slide gems across.

Hopefully I can add some spiffy effects before completion.

Hopefully I can add some spiffy effects before completion. 🙂

This game is just a technical demo for the SDL and OpenGL integration and as you may have guessed from the actions performed in the game, I plan to port this over to iPhone/iPod touch at a later date. Hopefully I’ll have the code all ready to post up in coming month and a bit. I plan on adding OpenAL, Boost and FTGL support too.