Simon Squared is a Windows Phone 7 puzzle game that I developed for a competition run by Red Gate software. In the game, you are shown a shape made of coloured tiles that is then exploded into several pieces. You have to twist the pieces back into the correct orientation, then tap on them to fit the shape back together again. In the multi-player version, you and your friends go head-to-head solving the same puzzles – as soon as one player completes it, play moves to the next puzzle. See it action on YouTube.
I set myself the challenge of building a 3d game using the XNA framework in 3 days – having never written a 3d game before. Then, when Red Gate moved the competition deadline back by 2 months, I challenged myself to build a multi-phone-multi-player version in a further 3 days: I actually took 6.
My diary of those hectic days reveals why I took so long - the hurdles I had to hurtle over, and the hackery I had to resort to.
Building the Game
- Day 1: Rendering my first 3d model, and animation
- Day 2: Gesture recognition and a level editor – in Excel!
- Day 3: Improving layout of shapes, and writing game logic
- Day 3.5: It’s too hard to play – make it easier
Making it Multiplayer
- Day 1: Making the Phone Emulator and Azure Emulator talk to each other
- Day 2: Building a UI in XNA using the XPF framework
- Day 3: Implementing the Game Server
- Days 4, 5 and 6: State machines, Synchronization, and some Spit and Polish
A Look Inside the Source Code
- Unpacking Simon Squared: My mini framework-independent animation library
- Let’s synchronize our watches: Determining Clock Skew with Christian’s Algorithm and the Reactive Framework
About the name
Initial inspiration for the game came from Simon, an electronic memory game of flashing lights that I’m too young to remember. The original idea was that users would have to memorise the order in which the phone moved the pieces, so that they could put them back together in reverse order. But when the game reached playability, it soon became clear that, for my feeble brain at least, this was far too hard. So we dropped the memory aspect. But we kept the name. And why not? In some future upgrade we might start testing your memories again.
Source code
The source code to Simon Squared is available on Codeplex. It is released under the GPL v2 license.
Since Simon Squared uses Red Badger's XPF framework which is a commercial product, you'll need to download their latest nightly build in order to compile Simon Squared yourself. Once downloaded, place the dlls in lib/WP7.
Credits
I wish to thank several people who played a vital part in helping the Simon Squared project come together.
- Vinod Bhatia, who had the original idea for the game, designed the levels, and provided valuable feedback during development
- Neil Higton, who designed the logo and also provided very useful feedback.
- The team at Red Badger, who gave me a non-expiring build of their XPF framework.