39 Days to Mars
A Brief Victorian Adventure.

Steam Page & Menus

This month I worked on assets and descriptions for the Steam Coming Soon page, which is now live! This means you can now add 39 Days to Mars to your Steam Wishlist. I also crossed off a number of smaller tasks, and merged the main menu and pause menu into the same system.

Steam Store Page

The big news this month is that 39 Days to Mars now has a steam page. With the in-game artwork finished, I took some new high-resolution screenshots to replace the outdated ones from the prototype. I also spent time designing the store-front assets, and I'm excited to finally have the page up. You can click here to visit it (and add 39 Days to Mars to your Wishlist).



Finding, recording, and integrating sound into the game has been an ongoing task over the last two months, and I've finally finished the bulk of it. Except for the new menus, everything in the game now has sound and it really adds to the feeling and atmosphere when you're playing it.

One of the best resources I found for sourcing raw sounds is FreeSound.org. There are thousands of CC-0 and CC-BY sounds ranging from the useful ("60 seconds of a wooden table clock ticking") to the bizarre ("blindfolded octopus unwraps a cellophane-covered bathtub"). Editing and balancing the sounds before I integrated them into the game took much longer than I expected, but I'm happy with the result.

Main Menu

Recently, as I started implementing the save system, I realised that the start "menu" in the game wasn't going to be sufficient. I bit the bullet and took some time to implement what I should have done months ago - design a proper menu for the start and the pause screens. It's evolved quite a lot over the different iterations, so here's a brief look at why and how things changed:

Protoype : The very first prototype simply had two buttons that could be clicked by the mouse. Start, and Quit.

Inputs : When I decided to support both keyboard and controller input, there needed to be a way to choose how each character was controlled. The second iteration of the menu let you choose the input for each character separately.

Artwork : With a first pass over the artwork in the game, the menu stayed roughly the same, but took on the form of a sitting room with the characters waiting to begin their voyage. Prompts popped up to instruct you how to start the voyage.

Co-operative : With the addition of a single-player option, I expanded the scene to give options for co-operative and single-player, with the table scene staying intact, and the ship's cat curled up next to the fire. A save and load option was also added, but switching between these wasn't obvious.

Pages : Further playtesting made it obvious that a more reactive and intuitive menu was needed. I also needed options for the pause menu, and making different versions of this scene appear for different configurations of the game was starting to look like a lot of work. Re-designing this into an expandable and re-useable system resulted in the new and shiny main menu:


So here's the monthly snapshot of progress. The lines crossed out are tasks I completed this month, and everything is roughly in the order I'll be approaching it.

- Singleplayer Controls
Main Menu
- Pause Menu
- Load Saved Game screen
Artwork for the Ship
Sound & Music
- Game Sounds
- Menu Sounds
Voice Acting
- Record Albert's Lines
- Integrate voice acting into game
Steam Platform Integration
Steam Store Page
- Achievements
Singleplayer Support
- Mouse Input in Puzzles
- Ship's Cat / AI Character
- Control Instructions
Save & Load System
Gameplay & Balancing
- Level transitions
General Polish


Until Next Time

I'll be working on getting singleplayer working, and ironing out the last of the bugs for mouse control.

Don't forget you can follow @philipbuchanan on Twitter for more regular updates and development pictures!

Finished Ship Art

Happy 2017! This is the first development blog for the year, and it's been a busy Christmas break for 39 Days to Mars. The last months saw integration with the Steam distribution platform, new artwork for the ship, the start of mouse and keyboard support, performance optimizations, and some great progress recording the voiceovers for Albert and Baxter!

Ship Artwork

All of the artwork is finally finished for the levels and puzzles in the game! I'll let this poster do the talking, click for a larger version:

Steam Integration

39 Days to Mars will be released on PC through Steam (and a non-DRM version for those who want). To do this, I needed to make sure that the game integrated correctly with the Steam Platform, and set up the information that ensures the game will be presented correctly when it's released. This is now complete, and having the game deploy correctly and show up in my Games Library felt like a big milestone.


In early December I started working on the input system. To support different platforms, and to allow for a single-player mode, I need to support a wide range of controllers. These are the ones I had lying around and the ones I'll be getting working first:

The most important is getting mouse support working. Unfortunately this is the most different to the joystick input. It's now working in the levels, and some of the puzzles. It will require some more hard thinking in the next month to get it working in all of the mini-games and puzzles.


Over the last few months, as more final content has been added, and more sections of the spaceship have been onscreen at once, I started noticing some slow-downs and lag. I'm developing 39 Days to Mars on a laptop with no GPU, but it's a fairly simple 2D game and I wasn't expecting any major problems. So I decided to investigate.

I opened up the profiler - a tool that lets me look under the hood and see what parts of the game take the most processor time. The problem stuck out like a sore thumb, it's easy to see the difference between running well (on the left) and running slowly (on the right):

This huge slow-down happened whenever a character moved around, and didn't have anything to do with the graphics at all. I could also see from the profiler that one method was taking an astounding 56 milliseconds to run each frame. To put this in perspective, a game running at 60 frames per second has only 16ms to run *everything* in the game (and draw all the graphics too). This one method was using almost three times this limit by itself!

Opening up the code, I was greeted with a comment from over a year ago:

Any comment that starts with the words "TODO" and "Fix" is usually bad news.

But obviously, this shouldn't have come as a surprise to me. The early plans I had for the ship in 39 Days to Mars involved pieces of it moving around, or falling off. To support this, I would have had to dynamically update the pathfinding (the parts of the ship that are walkable to Albert and Baxter) as the ship changed. To focus on more important tasks at the time, I skipped the whole problem and wrote a quick-and-nasty method that just recalculated everything every single frame. I also left a comment telling my future self what needed to be fixed!

Fast-forward a year, and the design of the game has changed. Parts of the ship no longer move around or disappear, and I don't need to worry about updating pathfinding any more. A day's work shifted all the calculations to run only once, when the ship is generated. Each frame now takes less than 2 milliseconds to calculate pathfinding, and the profiler paints a much healthier picture:

Although this is an extreme case, performance optimization is as much a part of debugging as fixing crashes. I spend a lot of time behind the scenes making sure that the game will run smoothly for everyone when its released.


So here's the monthly snapshot of progress. The lines crossed out are tasks I completed this month, and everything is roughly in the order I'll be approaching it.

  • Remaining Art:
    • Controls tweaks after playtest
    • Logbook/Menu
    • Load Saved Game screen
  • Artwork for the Ship
  • Sound & Music
  • Finalise Dialogue
  • Voice Acting
    • Audition to voice Baxter
    • Record Albert's Lines
    • Record Baxter's Lines
    • Integrate voice acting into game
  • Steam Platform Integration
    • Steam API Integration
    • Steam Store Page
  • Save & Load System
  • Singleplayer Support
    • Mouse Input in Levels
    • Mouse Input in Puzzles
  • Gameplay & Balancing
    • Level transitions
  • General Polish

Until Next Time

I'll be implementing sound, music, and dialogue, and then working on controller support for the remaining puzzles.

Don't forget you can follow @philipbuchanan on Twitter for more regular updates and development pictures!

Ship Artwork

After working on gameplay for such a long time it was refreshing to get back to some artwork and design. Over the last month I tackled the massive task of designing and drawing the HMS Fearful - Albert & Baxter's un-spaceworthy space ship, and the place where you spend most of the time in the game.

I'd been delaying this because I knew what a big task it was going to be, and this meant it ended up hanging over my head for the last six months. However it turned out that thinking about the artwork was much more daunting than actually drawing it. Although it's still not quite finished, and there was a lot of code involved with the integration, finding a good look for the ship and drawing the artwork has been more straight-forward than I expected.

One of the biggest difficulties with the artwork is that the ship layout is procedurally generated, and so parts of the ship like ladders, staircases, balconies, and all the "interesting" bits needed to be aware of their surroundings and fit together. Here's just a few examples of the different ladder configurations that are possible in the game:

After drawing the artwork for the insides of the ship, I started concentrating on the bigger 'set pieces' that make the ship really feel like a crazy invention. I looked at the different shapes the ship could be generated in, and drew specific pieces that would (with a bit of programming magic) be linked up to the ship with ropes and supports.

In total, the ship is generated from 87 individual pieces that are selected according to the layout and fit together to make it look as though the ship is an organic hand-built vessel.

Removing a Cutscene

I also decided on the level transition flow, and drew the necessary artwork for it. Up to this point, I've had a cut-scene showing the HMS Fearful leaving from Earth. This is the only cutscene in the game, and it started feeling out of place. I sat down and brainstormed some ideas for keeping the level flow continuous, and I feel much happier about the new transition. The artwork is drawn, but it needs to be implemented in the game.


I didn't run any public playtests last month, but I did run the very first full-length playthrough! This was exciting to watch, and showed me many interesting points that I didn't pick up while testing individual puzzles. Some of the important points were the need for a save and load system; and the current lack of support for most types of input. These are both already on my list of features to implemented, but they will become more important as I start testing 39 Days to Mars with more people on a wider range of hardware.

Save & Load System

I started work on the save & load system. This screenshot sums up the current state of this:


So here's the monthly snapshot of progress. The lines crossed out are tasks I completed this month.

  • Gameplay & Balancing
  • Level transitions
    • Artwork
    • Integration
  • Artwork for the ship
    • Large setpiece
    • Interest pieces
    • Details and fillers
  • Steam platform integration
  • Save & Load System
  • Singleplayer Support
  • Sound & Music
  • Finalise Dialogue
  • Voice Acting
  • General Polish

Until Next Time

This month, I'll implement the level transition from the introduction to the ship. I'm running another playtesting session, and finishing off the small details in the ship so that I can cross the ship artwork completely off my list.

Don't forget you can follow @philipbuchanan on Twitter for more regular updates and development pictures!

Home ← Older posts
Atom · Powered by Nibbleblog