Posted by on Jun 22, 2013 in Blog | Comments

Motivated by a free phone offer, I spent last week or so crunching on a really small game project: Swipe Tap Smash for Windows Phone.

I describe it as:

Super Spike V’Ball meets Paper Toss!

Volleyball with nothing but smashes! Flick your player into the air, and when the timing is right, tap the screen to send the ball flying!

The goal is simple: just get as many consecutive spikes in a row as possible.

Screenshot003

Setting up for a big spike!

It’s really quite a simple game, and was a lot of fun to make. The game is written in C# using XNA. It was my first time writting a game for Windows Phone (WP), but since I’ve been working on another PC/360 game with XNA for the last while, I was able to use that engine as a starting point and get things running very quickly.

All I had to do was convert the Visual Studio Projects to Windows Phone (which is made very easy by the XNA tools), and then make some minor adjustments to the engine for the new platform. The biggest changes to the code base are:

  • Fixed function rendering pipeline. WP does not support custom shaders, which I was using for my previous game, so those had to be ripped out and replace with a new rendering system. I lost a couple features as a result, but nothing major.
  • C# version downgrade. WP runs an older, and reduced versions of C# so some parts of the engine had to be rewritten without those advanced features.

The game itself is probably the biggest hack I’ve written since college!  I only had 1 week to write the game (to meet the deadline for the free phone), so I was forced to cut corners at every turn. In a way it was quite liberating though.

I’ve often found my biggest hurdle making games at home is that I have trouble just getting it done. I find I over-think the technical design, which can sometimes lead to coding paralysis; I know the right way to code something is going to be a lot of work, so I can end up procrastinating. With a rapid development like Swipe Tap Smash had, there is not time for any of that.

Luckily, as I mentioned earlier, the base of the engine was already in place (rendering, animation, game objects, behaviours, collision detection, etc), so these hacks are really high level and it didn’t really bite me in the end.

One of the causalities of this rapid development was a game mode that got cut last minute. It’s hard to describe, but it was kind of a trick/score mode. Kind of like Tony Hawk Pro Skater for Volleyball, if you can believe it. The player is awarded different amounts of points for everything that happens on the court: hitting the ball, jumping, bouncing off the net, hitting the ball at high speeds, and so on. The goal is to combine as many of these tricks together, in a single play, to add up to the highest score possible. The game mode is mostly complete, but I just didn’t have time to get the UI done in time. I’ll be working on that next.

Here is a peak at the unreleased Score Attack mode. Note the "10" and "20" points awarded for a Spike and Hitting the Opponent. By reacting to the bounce of the ball, you can keep the play going and extend the combo.

Here is a peak at the unreleased Score Attack mode. Note the “10” and “20” points awarded for a Spike and Hitting the Opponent. By reacting to the bounce of the ball, you can keep the play going and extend the combo.

Another big missing piece is a tutorial. Right now I just drop the player in and hope they figure it out. I don’t even tell them to tap the screen to start! I plan to have the first few plays in the game hand crafted to explain the controls.

Beyond that, who knows! I have some memory issues I need to track down (avoiding the Garbage Collector getting triggered during gameplay) but I’ll save this for another blog entry. I’ve already started on a PC port, mostly just to make development easier (since I don’t actually own a Windows Phone … yet), but there is no reason this couldn’t be released on PC. And with MonoGame (open source version of XNA) being ported to every platform, iOS and Android are a very real possibility.