Inside Shelled’s Development

Shelled! Screenshot

First I'm going to describe what I've contributed to Shelled and what my areas of work have been. I've joined the project relatively late, so I was mostly doing code changes, bug fixes and refactoring assignments:

  • Refactored and practically rewrote the whole game control logic (session->game->round) and maintained the new code till release

  • Added the high-level bot support to the game control logic (i.e. bots are spawned automatically or manually, can be kicked, choose the correct skin, etc) and adapted the skin system

    Shelled! Screenshot

  • Added deferred/client-side purchasing of tank shells (which removed the lag in the buy menu)

  • Refactored the level selection screen to support multiplayer and singleplayer level selections (and spectator mode for watching the admin switching through the maps)

  • Other minor bug fixes and GUI work

  • Extended guiMLTextCtrl to fully support

  • Designed and implemented the smooth border effect of the radar map

  • Created the Inno Setup script

    Shelled! Screenshot

I've been working on it together with Gary Preston, the lead programmer, who has developed most of Shelled and is the real brain behind it. Joshua Dallman was the project leader and designer of the code - I've already worked on Sploidz for him - and he has proven again to have a very good sense of what makes a game fun.

Our means of communication were quite extensive, we used email, IRC and Mantis to coordinate our work and it was really nice to experience such very short communication lag during development (in contrast to other projects I've worked on).

Torque Game Engine was used for developing the game together with a lighting system addon - don't ask me for the name (update it was called Torque Lighting Kit and is now included in TGE 1.5) - and thankfully I didn't have to dig into the engine too often (only for the guiMLTextCtrl change and the radar map effect) because the engine itself is very complex and not something I would have immediately felt secure to mess around with, especially since Gary has fine-tuned the code and he was really, really quick at tracking down engine bugs and fixing them.

You see, I was mostly brought in by Joshua to speed up developing and finishing the game before Christmas, as we have initially been aiming for a Christmas release of Shelled and there were still minor TODOs that weren't worth mentioning but had to be done. In the end I was working on the scripting side of it mostly and was busy cleaning up code, refactoring it to make new additions of features possible or in the case of the game control logic refactoring because the old code was a total mess and almost drove me insane in the beginning.

That was actually my first task because I spend 2 days trying to fully grasp it and understand its control flow and eventually I discussed it with Gary and wrote Joshua a "Either let me fix it or I give up" email - _of course, it was politer and I would have never given up, but that's the essence of it. _Joshua agreed and this was my first work assignment. The new code is quite nice and I might put up the original game.cs someday just to show off how much I've been able to clarify the design.

Another thing worth mentioning were our play-tests which really were a lot fun. I still can remember playing with Gary for hours and enjoying the game while tracking and fixing bugs at the same time.

Last but not least it's funny how Shelled's direction was totally changed in November - ok, let's simply say: in Fall, as I don't remember the exact date anymore: Joshua had got an internship at GarageGames (because of Sploidz - yay!) and was offered a full-time position there, while we were trying to figure out how to implement copy protection into Shelled to keep people from warezing it once it was out and then we received an email that changed everything..

With his new job and all the exciting work at GG Joshua really didn't have any free time to spend on RedThumbGames and decided that Shelled should be released as freeware (like Sploidz) instead of shareware.

Now, almost half a year later, in retrospect I not only think the same but I'm also 100% certain that it was the only feasible option for us to pursue. It has surely reached a wider range of casual players and improved our reputation - and from a coder's point of view it's great that the game code is public now, too, as its perfect for using in a CV :)

Anyway enough about Shelled's development, now go and play it some more!