Tuesday, 28 June 2011

Mos speedrun design grilling

Tony retaliated after I forced some interview questions on him. Here I talk a bit about the art and design stuff in Mos Speedrun.

Q: What do you use to create the artwork for Mos?
All of the artwork was created in adobe photoshop.  It's a great application, but not really designed for such basic pixel art, I wish the zoom went in a bit farther! Aside from that we made heavy use of dropbox which proved to be extremely useful for our small 2 man team. 10 years ago when Tony and I were working on pc shareware games, we were passing art and code around on 3.5 inch floppies, dropbox beats that hands down :)
We used google docs for a lot of stuff too, from design documents, to spreadsheets of level target times. All these online tools make it really easy to collaborate remotely, freeing us up to just concentrate on making the games we want to play. 

Q: How do you set about designing a new level?
I don't really have a set process, but it usually starts with a rough idea of some set pieces and a notion of the kind of shape I want the level to be - a long linear level or a twisty maze like one for instance. I'll then start blocking in the main shape of the level in the editor much in the same way as you would start a sketch. I'll place most of the pickups and enemy locations as well, all the while I'll be testing each part (the level editor is built into the game so I can instantly test any change). At this point I'm not really worried about getting all of the corner and edge blocks added, for instance in the first level, I would have build the whole thing just using one block graphic, and after the level is playing ok I'll do a few passes where I add detail and add all the correct edge and corner graphics. Then we spend a while fine tuning the levels and looking for glitches and problems. Finally we play the level a lot trying to figure out the bench Mark time for the speed run badge. Oh and then I'll realise I've forgotten to place a hidden skull in the level so I'll go back and rework an area to add a secret tunnel or something like that :)

Q: Is there anything you wanted to go into the game that didn't make it?
I always want to add more levels and graphical styles, but these are time consuming and we had to stop somewhere. We are continuing to add more levels in the form of our web levels, and these will be release with some new ones as real in game levels so they will have scoreboards and badges. One feature we talked about was being able to save replays that would be uploaded to our server so that you could compete against your friends or the fastest players in the world, this could happen but it's looking a little doubtful at the moment. Another feature we would have liked to implement was a level editor, but this would have taken as long to make as the game itself. We do have ideas for another Mos game that is based around the level editor though, we have a lot of ideas at the moment :)
There is yet more stuff that we cut out due to our small team size and time constraints, like more of a backstory, collectable items, switches, doors etc. All would have been nice to have but unfortunately were cut - maybe in Mos 2. 

Q: What was the hardest part of creating Mos - the graphics or the levels?
Both were different but related challenges! The levels were definitely the most draining part for me, as it takes a lot to come up with different ideas and keep the levels interesting but balanced, the difficulty had to be right for the position the levels were in the game. They took a lot of play testing, re adjustment of baddy placements, pickup locations etc.
The graphics were interesting to work on, it's quite hard to get character into the sprites, and I'm not an amazing artist, but I think the pixelated look really worked in this game. We did cheat a bit though as the graphics are not 8bit, I guess 32 bit doesn't sound very retro though :)

Monday, 27 June 2011

Mos front end mockup

This is the final mock-up I did of the Mos Speedrun stage select screen. It's surprisingly close to the final version that ended up in the game. From quite early on we wanted to make the game as accessible as possible, and we took this to the extreme here by having a single screen that the game loads up to being the way to access all the stages, levels and options.  I mocked up the screen in Photoshop and then drew the annotations in a separate layer using a tablet - this was a lot better for programmer and artist than trying to explain what was going on in a separate text file.
The logo was meant to be temporary but I grew to like it, so it ended up being close to the one that ended up in the game (after some tidying up of course). Another change we made was to lose the big star that was awarded for completing every badge in a level - I can't remember why we didn't end up using that though.  I think one of the latest ideas we had was to make the background spin which I think gives this screen a really nice look.  The colours in the background change for every levels that is selected, and the colour choice is algorithmic. We use the golden ratio (~1.618) multiplied by the level number, multiplied by 360 to select the hue. This spreads the possible colour choice out as much as possible and avoids any repetition in colours.

Saturday, 25 June 2011

Programmer Interrogation

I Took a few minutes of Tony's (Programmer of Mos Speedrun) time to give him a bit of a grilling about making Mos Speedrun, here it is!

Q: What tech do you use for development? What software do you rely on?

A: I normally do the bulk of development on my PC, it's pretty fast with loads of memory and (most importantly) super-fast hard drives for quick compiling. I've also got an old-style Mac Mini for the iPhone/iPad development - I share my keyboard and mouse with both machines using cool free software called Synergy.

On the PC I use Visual Studio for nearly everything, on the Mac I use xCode. My most important and most used tools are WinMerge (use for merging lots of horrible code changes), SVN and Dropbox (for sharing files with Nick).

Q: How have you found the whole submission/app store experience?

A: It was pretty awful in the beginning as there's so many things you can get rejected for but after submitting a few titles it definitely gets easier - you get used to the long wait too! The App Store rating system still needs a lot of work though, you can have 5 star apps languishing at the bottom of the charts while 1 star apps are in the top ten :(

Q: The main tool you made is the level editor. Can you say a bit about it? How did it change over time?

A: The editor began as a very basic tool to place blocks in a map and have Mos navigating it with collision. As time went on we added different layers for background graphics and enemies/pickups and an additional interface for controlling game platforms. One of the key ideas was to be able to switch between the editor and the game quickly to test level design - currently we can start playing at any point in the level just by tapping a single key which makes designing levels a lot easier!

I also added various options to make Nick's life easier (like randomising background blocks) and cutting and pasting of block sections. As the game progressed we also added the ability to create web levels and set the speedrun times. The editor currently only works on the PC and the screen area is 4 times larger than the game itself - this makes it a lot easier to see more of the level and how it all fits together. The game maps can be huge but they're all compressed so usually only end up being about 40k each.

Q: Where there any interesting coding tricks you had to use?

A: Most of the coding tricks were really just optimisation to make sure the game runs in 60fps. The whole project is C++ (even on xCode) so that helps with cpu time - there's no garbage collection going on in the background either. All objects are rendered and sorted by texture too so their isn't too much load on the GPU. The wind graphics use a special 'stateless' system so we don't have to keep track of each individual particle. Unfortunately all the objects on the map have to be updated at all times as we wanted the games timing to be perfect. For example, a zombie will always be in the same position if you reach it in the same time. If we didn't use that system then you wouldn't be able to get perfect speedruns as the enemies would only start moving when you were near to them.

One issue we had was that the iPad (V1) couldn't render a fullscreen 'tv' vignette without slowing the frame rate down so we had to ditch that and just have a tv-style border instead. The iPad 2 has a much more powerful gpu and can handle it no probs!

Q: Anything you would have done differently if you had to start from scratch?

A: One of the biggest problems was that the game started off as a simple prototype and grew pretty rapidly. This meant that a lot of the code ended up in a few files rather than being split up properly into different classes and managers. About halfway through the project I tidied it up and split it into more manageable classes but it would still have been better to do it from day one - I guess that would have meant designing everything first though :)

I would also have included 'Lite' support from the start too as that was something that had to be shoehorned in afterwards.

If we had thought about PC and Mac versions at the start as well it would have been useful to design keyboard controls for the frontend.

Wednesday, 23 March 2011

web levels

All of the levels we are shipping with have been created, we are testing and refining for difficulty now and will submit to the app store soon.

An interesting feature we have added is the ability to launch the app from a weblink (or a qr code, 2d barcode thing) - this will launch the game with a downloaded level specific to the link, so we can easily add challenge levels without an app store release, also we can make custom levels that are unique to websites we like. exciting!

Thursday, 10 March 2011

Kill Screen

This was pretty funny... We hadn't finished making all of the levels yet but could still select a non-existant level in the stage select screen.  The game still soldiered on and tried to display (probably using garbage that was in memory already) Didn't crash though!

From wikipedia:
kill screen is a stage or level in a video game (often an arcade game) that stops the player's progress due to a programming error or design oversight. Rather than "ending" in a traditional sense, the game will crash, freeze, or behave so erratically that further play is impossible.

Tuesday, 22 February 2011

Stage select screen before and after

Here is the stage select screen, mockup and (almost) final.  We dropped the big star that was meant to represent getting all of the badges on a level and made the individual badges more specific to the tasks completed.  The background now animates and looks pretty cool!

Tuesday, 4 January 2011

We're working on a new game!

Ok. We've put the other game on hold because we came up with something that we are much more excited about making.  It's going to be a fast paced platform game for iOs (initially iPhone) Here is an early screenshot!

We'll add more development stuff to this blog as we go!