39 Days to Mars
A Brief Victorian Adventure.

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.

Controllers

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.

Optimizations

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.

 
Progress

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.


Playtesting

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:

Progress

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!

From A to Z

I've been holding off posting this update for a while, but it's finally time! In the last update, I talked about working on the ending of the game, and designing the last puzzle. Now it's implemented, which means 39 Days to Mars is playable from start to finish! All of the puzzles and mini-games are complete (and with artwork). There are still numerous bugs to iron out and some playtesting to do, but finishing the puzzles is an important and exciting step, and lets me start focusing on other parts of the game.

My original tagline was "a coffee break game", something with a short playtime that you can play in one sitting. Depending on how much coffee you drink, this is still more or less the case : a full playthrough takes one to one and a half hours.

There are fourteen puzzles & mini-games in the final version of 39 Days to Mars, each taking about 5 to 10 minutes.

The Last Puzzle

One of the last puzzles to be finished was the 'Controls' puzzle. The first pass of the puzzle had the basic concept in place, but the temporary graphics were significantly different to what I had in mind for the final version. It looked like this:

Playtesting the puzzle showed that it worked, and players understood the general concept, but the execution was far from finished and there were several parts that weren't as clear as I wanted. To make sure this wasn't due to the temporary graphics, I drew the artwork for the controls before the second playtest of the puzzle.

To my surprise the puzzle was significantly worse after the graphics were put in! Not a single player understood how it worked, and nobody sucessfully finished it. This is obvious in hindsight, when looking back at the differences. The first version had a logical layout, and the only information on the screen were pieces that were pertinant to the puzzle. The version with artwork is complicated with pieces of information related to each other scattered around the screen with no logic.

To rectify this I made some small but important changes to the layout. Now interacting pieces of the puzzle are all next to each other and clearly indicated. I'll be playtesting again soon, to find out if this fixes the problem!

So there's a release date, then?

No. Sorry! There's still a very long list of tasks to be done before 39 Days to Mars is actually finished.

I'm going to try and give a progress update on the remaining tasks in each new update. For now, because they're not started, it's just a list in roughly the order I'll be approaching it.

  • Playtesting & Balancing
  • Artwork for the Ship
  • Steam Platform Integration
  • Save & Load System
  • Singleplayer Support
  • Sound & Music
  • Finalise Dialogue
  • Voice Acting
  • General Polish
  • Other Miscellaneous Bits I've Forgotten

Until Next Time

This month, I'll be playtesting the last of the puzzles, and starting the final artwork for the ship. I'm also spending more time bug fixing - a slow and sometimes frustrating part of development. This means that I'm going to be working just as hard on the game, but there will be less visible progress for the next few months.

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

Home ← Older posts
Atom · Powered by Nibbleblog