All over, bar the shouting

I’ve used the word “finished” to describe InterSceptre quite a lot this year, but this time I almost mean it. I need to add some music for the title screen and in-game, and then it’s done. Release is now scheduled for the start of June, in time for the next XNA UK User Group meeting.

Several rounds of testing through the XNA UK XAP Test Service have ironed out the bugs and issues; I’ve taken much of their feedback on board – but not everything. Some stuff I don’t think is in keeping with the game’s feel. I’m sure they’ll be proven right.

I’ve done a lot of work on the game’s AI recently; it was too easy to beat. Now the different levels of AI player have different capabilities and strategies, rather than just faster reaction times. There’s loads more I could do here, but I think it’s good enough to release. Maybe if I ever revisit the game later, I’ll do more. There’s loads of scope for machine learning here, a personal hobby of mine, but let’s move on.

I’ve also added some different backgrounds. The main niggle left from the beta test team is around the backgrounds. What do you think?

InterSceptre, One Year On

It’s been practically a year since I started developing InterSceptre in XNA, albeit based on a version I wrote in 2005 in C++ for DirectX 9. Snatching a bit of time on the train here, the odd evening there, I can finally see the finish line. From here it’s just housekeeping – sound, tombstoning, maybe some bonuses – and it’s done. Thanks to Ben and the guys at the XNA UK User Group for giving me the incentive to finish this one rather than just move onto the next (if you’ve heard the one about the engineer, the physicist and the mathematician – well, I’m the mathematician – when I can see the end is in sight, I’m tempted to move on to the next problem).

Work were able to offer me a Windows Phone 7 to test development on, which has been unimaginably helpful and improved the playability of the game no end. There’s nothing quite like seeing the game running on a piece of hardware to spur you on. So the last month has been quite productive. Since the last development update:

  • dual deployment – for Windows & XBox in one project and for WinPhone7 in the other – same code base, same content
  • the menu system has been upgraded to draw button-boxes around the options. This was needed in order for the menus to be usable on the phone. Lots of engineering under the hood to create hot-zones as click-targets, make the text appropriately centred, and so on
  • Added a “brick burst” explosion at the end of each round
  • Various improvements due to more experience with C# (such as Dictionary rather than Hashtable, Properties rather than getters/setters)
  • All movement and positioning code reworked to use Vectors rather than integer co-ordinates
  • Ripped out all frame counting for animation and movement, and replaced with proper GameTime controlled calculations
  • Addition of game effects – shadows, glow-balls – using Textures drawn in the code rather than pre-created as PNGs
  • Reworked title screen sequence

A lot going on. My aim is to demonstrate where I’m up to at next weeks’ XNA UK User Group meeting, garner one last round of feedback, with the aim of having InterSceptre ready to publish at the end of April – or, at least, the first public version of it. No doubt I’ll continue to tinker with it as time goes on, but the call of future projects is becoming too strong…


Dreaming… visions of you…

A few things have happened games-wise recently and I feel a bit on a high at the moment – InterSceptre looks like it might actually get finished; I had a great Code Jam with Ben; met a random stranger on the train home one drunken night who turned out to work for Packt Publishing and we had a good chat about the state of the mobile games market, and I got an evaluation copy of their XNA Beginner’s Guide book! (I will review that separately when I finish it).

Last, but most importantly, I had a great night at the XNA-UK meet last night! It inspired me in several ways.

Firstly I’d like to thank all of the members, but particularly Ed, Charles and Simon, for making me feel so welcome. The stuff demonstrated yesterday was brilliant, particularly the post-processing pixel shading special effects stuff.

Also, Ben has been nagging me about using particle systems to add a bit of razzamatazz to my games development work.

I can see the potential, and it excites me.

But not for InterSceptre.

Far be it for me, an engineer, to go off on a rant about how that would ruin my project’s artistic integrity and vision… but I think there’s an element of that in it. InterSceptre is deliberately retro, partly because those are the kinds of games I love, partly because that’s currently the limit of my ability. I think adding pixel shaders and particle effects to InterSceptre now would cause me to want to revamp the entire graphics stack of the game (I’m already imagining a “frosted glass” effect, rather than just dimming the screen, when a dialog box pops up). But, apart from anything else, that would kill InterSceptre for the Windows Phone 7, which doesn’t support pixel shaders.

Besides, I want to move on to the next project! if I keep adding new stuff to this game, I’ll never write the next one. Maybe one day I’ll come back to InterSceptre and put a bit of sparkle on it. But for now, InterSceptre has become the game I wanted it to be back in the mid 1990s, but lacked the talent, staying power, and CPU horsepower to make reality. So I’m happy that it is now everything it should be. Anything excessively funky I add into it just won’t fit. New techniques need a new game to live in.

So after I finish i-dotting and t-crossing, I’m going to take a short time to write something quick-and-dirty for the phone. I have a Bejewelled-style puzzler in mind, and I’m letting those ideas bubble away while I finish InterSceptre.

All the real funky stuff, I’m keeping back for my puzzle-platform game. I might allow myself to do some simple prep work for that in the coming weeks, but only if I think it won’t distract me.

InterSceptre (beta 1): finished!

Leda Code Jam has been a rousing success!

I managed to get everything done that I’d tasked myself to do by the end of the Jam – essentially, add all the in-game dialog boxes and screens (“Get Ready!”, “Round Won by Red Player”, etc).

There is more stuff I’d like to sort out – touch-screen controls, check that the GamePad controls will work, sound effects, music, and perhaps more bonuses. But that’s just gravy. The game engine is done.

I don’t think I’ve ever got quite so far with a game project before. Maybe Sphere. I’m deliriously happy!

Options, options everywhere

One of the big things about InterSceptre on the ST was the options screen, and the player’s ability to turn on (and off) almost all aspects of the gameplay. That has particlaly carried over into the PC version, but until now there was no way to set any of those options.

Developing the options screen has been a fun exercise in class abstraction. The user interface needed to be simple so that touch-screen operation was practical, requiring a simple touch-to-toggle approach. Some controls therefore need you to cycle through all the available options. There are different kinds of controls to implement – ones that set enumerated variables, some to let you choose between available game controllers and some simple boolean on/off parameters. These all needed to implement the same interface (both class interface and user interface!). The font colour varies between the different options and even between the choices for an individual option. All this happens seamlessly from the point of view of the Update/Draw cycle in the options screen controller. All that has to worry about is moving up/down the list of options.

Screenies to follow…

Continue reading

Thoughts on Nokia-Microsoft

I’m not quite sure what to think about the latest revelations. Should I be disappointed that my favourite handset manufacturer has joined forces with my least favourite operating system vendor? Or should I rejoice that, perhaps by the end of the year, I’ll be able to write games and play them on my own handset without jumping ship?

What I am not feeling, is surprise.

Anyone surprised by these revelations simply hasn’t been paying attention. Nokia has been in trouble ever since the end of the 6310 era. The hardware has always been world-class, but the software, er, hasn’t. Trying to juggle two-and-a-half different operating systems was doomed to failure. But the writing was most clearly on the wall this time last year.

All of the wailing and gnashing of teeth; the “who’s going to develop for MeeGo now?“; it’s all exactly the same as for the N900 and Maemo, a year ago. To abandon one flagship project is careless; twice seems like enemy action.

This new relationship between Nokia and Microsoft might just save the Finnish giant – assuming Redmond don’t just buy them out. It’s undoubtedly their best option from here. Despite having an enormous R&D team, Nokia don’t seem to have capitalised on the innovations they have made or bought in; hopefully the merger will result in something more visionary, more Jobsian.

Would I have preferred something a bit more open? Well, I’m a mass of hypocrisy on that. I’m a FOSS advocate who writes Windows games rather than Java games. I own a Maemo N900 but bemoan the fact that there are no apps and have bought an iPod Touch (if there’s anything more closed than Windows, it’s Apple).

I think on balance, I’m happy. Ask me in December when my phone contract is up for renewal 🙂

Don’t judge a game by its title screen

Here’s a shot of the current title screen, demonstrating the proportional coloured fonts. I’ve added variable kerning too, which allows each option to “grow” as well as light up when it’s the currently selected option.

InterSceptre title screen Feb 2011

InterSceptre title screen Feb 2011

I’ve also got the Leda Entertainment logo at the bottom of the screen, which scrolls slowly on. And the bars are now slightly translucent, too, so they don’t completely obscure the logo when they pass in front of it.

Apparently it looks rather retro. I’m glad, that’s kind-of the effect I was going for, what with it being a homage to some classic arcade games 🙂

Now, to actually make those options do something…