Archive for the ‘Prototyping’ Category

Worcle Prototype – Sneak Peek!

Sunday, February 7th, 2010

Here’s a little screenshot of the prototype to encourage you to join the beta group! :)

Use the register link on the right to sign up and then leave a comment on this, or the previous post, to let me know what devices you have :)

The Importance of Prototyping

Wednesday, February 3rd, 2010

You’ve got this great idea for a game, and you just know everyone will love it… so where do you go from here?

Well, the first thing you need to do is test out your concept.  Just because a game sounds fun in your head, or even on paper, doesn’t mean it will actually be fun to play.  How many times have you tried out a game which sounded like great fun from the description or marketing blurb only to be bored with it 5 minutes later?  It could be that the graphics style, story line, or audio is detracting from the game play and frustrating you… but chances are the actual game mechanic just isn’t any fun.  This is why you need to make a prototype.

If you dive straight in and start making beautiful graphics, gorgeous sounds and music, working out complex algorithms for the underlying code… and then 6 months later realise that no one’s actually going to enjoy playing the game you’re going to be kicking yourself.  Of course, some of the resources you’ve created might be reusable, but wouldn’t it be better to save yourself all that effort?

This is where a prototype comes in handy! :)

The basic idea is to get something up and running as quickly as possible which will enable you to test out the basic gameplay.  Sometimes you can actually do this without any code:

  • If you’re considering a new card game, go and grab a pack of cards (or three)
  • If it’s more of a board game style, then draw out a basic layout and pieces on paper and try playing it
  • A white board can be great for trying out ideas, particularly word games in my experience

Your next job is to do some very, very quick coding.  Throw together some really bad art, just the bare minimum, using squares or letters for objects is fine, it doesn’t have to look pretty.  Work in whatever language you think you can create it fastest in regardless of what you think the final project will be created with.  Don’t worry about getting it perfect!  Grab bits of code from old projects and smoosh it all together.  Don’t worry about edge cases, or loading times, or file size, just get the basic game mechanic running! :)

Prototyping is one of my favourite processes.  Taking that twinkle of an idea and turning it into something which people can actually play.  It might be quick and dirty, and oh yes, it crashes if you do X, Y or Z, but it plays.  At this point you can see whether your game idea is going to be worth pursuing.

Next, get people to try it out!  Get your prototype onto a device you can carry around with you and ask your friends to test (or invite a bunch of people over to your house if you’re not making mobile games!)  Warn them that it’s just an idea, the graphics are obviously bad, and tell them the basic premise (because you didn’t bother to give it a title screen, or instructions, or a tutorial now did you?)

If they give your device back to you after 2-5 minutes you probably haven’t found the next big craze.  If, however, you have to fight your phone/iPod out of their hands, and promise to show them the next version, then you just might have a hit!  Of course, not every game is everyone’s cup of tea, so you need to ask a number of people before getting disheartened.  Some people hate word games and just won’t be interested, some people hate RPGs or racing games or puzzles.  Try to find a mix of friends and see what reactions you get.  Make note of any suggestions they make for the final game… a lot of them will likely be things you knew would be included, but some of them might be great ideas you’d never have considered.

If your prototype didn’t go down well think about what people said to you.  Did everyone complain that the controls didn’t work right?  Is this something you could change and try again?  In my latest prototype you shoot balls into a circle and people were complaining that the balls weren’t going where they expected.  I added in a simple line to indicate where the next ball would go and it showed me that my maths was just plain wrong for calculating the angles.  I hadn’t noticed as I’d adjusted my playing to how it was working without realising.  I fixed this bug, left the indicator there to help people, and suddenly every one liked it a lot more! :)  Try making a few changes based on the responses you received and try again.

A prototype can help highlight ideas which just aren’t as much fun as they sounded, and also help you realise how complex a game is going to be to create.  Even if the idea goes down well, you might decide that the amount of work it will require is just too much for the likely return.  Alternatively, you might realise how simple a game is going to be to create, and realise you can add extra features without dramatically increasing development time.

Basically, prototyping is awesome and it’s fun! :)  You don’t have to worry about the tidiness of your code because no one else is ever going to see it (seriously, when you start work on the real game you will start afresh!)  You don’t have to worry about catching every bug or making all the various boring forms that every game needs.  You get to just turn that spark of an idea into something you can actually play and show others how awesome you are when you can do that in less than a day! :)

Thoughts on Airplay SDK

Tuesday, February 2nd, 2010

A couple of weeks ago Alex from Tuna Snax recommended I take a look at Airplay.  The basic idea of the SDK is that it enables you to write once in C++ on a Windows machine and build across all the mobile platforms you can think of – iPhone, Windows Mobile, Android, Blackberry and Symbian.  This really appealed to me as I’m confident in C++ and am used to working within an SDK.  Plus, the only Mac in my house recently decided it had had enough, so I’m a little stuck with no way to develop for iPhone at present.

The download (of the 30 day trial) and installation was fairly painless and didn’t mind working with Visual C++ Express.  There was a slight issue with Windows 7, but a quick search of the forums found someone else with the same problem and a solution from one of the developers which did the trick.

The SDK comes with 3 full game examples, which I had running in a simulator very quickly and even on my Windows Mobile phone without much difficulty.  The documentation is well written and there’s lots of little demo apps to illustrate how to use the various functionality.  Their simulator is well equipped to mimic the functionality of many devices, and even has means by which to test accelerometer controls with just mouse and keyboard!

Conveniently, Bryan had just come up with an idea for a game, so I decided to try out Airplay to create a new prototype.  I was impressed by how quickly I got something up and running.  Within an afternoon I managed to go from “Oooo, I wonder how to use this new SDK” to having something with basic functionality running on their simulator.  Then after spending the following evening having a few arguments (mostly due to not realising that one of their forms doesn’t auto-refresh) I managed to get it running on my device too.

It feels a little strange trying to work with 2D graphics in a system which is clearly intended for 3D work, though it is perfectly possible.  I’m hoping to try out the 3D side soon, although I think Bryan would like me to turn this prototype into a full working game first! :)

Overall I am very impressed with Airplay and I suspect I will be purchasing a license when my evaluation runs out, since Bryan and I both have Windows Mobile phones, so we’d rather be able to build for that (if you only want to do iPhone development there’s an entirely free version!)  If you’re considering mobile game development and are comfortable with C++ I would highly recommend you take a look, it certainly beats having to convert your code for each of the platforms you want to support!