In the last few days I worked a bit more on Bomberman. Time for another status update, but first a little demo:

Bomberman Demo (1)

What Is Finished?

Last few days made some progress with Bomberman. As it stands I’ve added basic support for controllers. I still need to clean-up the code and fine-tune the controls, but I won’t focus on this right now.

The asset loading system is improved a lot. I’ve made sure most content (images, config files, etc…) is loaded from the ZIP file now, previously a lot of the images were still loaded from the application bundle.

I’ve added an extra state for player characters: Cheer. The characters will cheer when they finish a level. Not a big addition, but it’s these minor additions that can make a game more enjoyable.

I’ve also added support for pausing the game, which was very easy with SpriteKit. Basically one can set a boolean value ‘paused’ on the root node of a scene and all it’s children will be paused auto-magically. I’ve bound this pause functionality to the controllers and to ‘escape’ on Mac OS X. The pause functionality will be great for making screenshots.

Work In Progress

Now I want to focus on testing this game on my AppleTV.

When playing on the AppleTV I want to see if the framerate is acceptable. On my MacBook Pro I get a good 60 FPS most of the time, I hope performance on the AppleTV will be similar.

I will also focus on adding audio support in the coming days.

Finally, I should add support for the Apple Remote and make sure my SteelSeries controller connects as well.

Planned Work

The following work remains to be done:

Features:

  • Add level transitions.
  • Add power-ups.
  • Add sounds.
  • Add music.
  • Improve points handling when monster and walls are destroyed. The score textures should not be part of the assets ZIP file, but generated based on a score value in a config file.
  • Create a main menu.
  • Create a settings menu.
  • Create a proper HUD for display of lives, power-ups, etc…
  • Create more interesting monsters by adding more states, e.g. a Chase state so monsters can chase the player.
  • Create custom graphics, sounds & music.
  • Create a marketing website.

Performance:

  • Cache data like images and audio. Currently every time an entity is created, files are read from the filesystem.
  • Pre-load audio. Currently the first time a sound is played, there’s some visual lag.