in Game Development

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.

Write a Comment

Comment