Bit’s Blitz – Puzzle Game

Bit's Blitz - Puzzle Game

Bit’s Blitz – Puzzle Game

In the third year of my Computer Science BSc (2013) as part of the Commercial Games Development module, we were placed into groups and tasked to produce a computer themed game designed for children. Each of the group members had to produce a game design document, one of which would be chosen for the group to develop. My group consisted of me, Aaron Ridge, Michael Killingbeck, Andrew Woodrow, Joshua Twigg and Alex Lynch.

The group decided to go with my game design which was inspired by the classic puzzle game Chip’s Challenge, with the idea being to reimagine it and modernise the graphics.

Game synopsis:
 “‘Bit’s Blitz’ is a fun 2D puzzle game following the escapades of its protagonist ‘Bit’. The game takes place across a series of levels increasing gradually in difficulty, gradually introducing new game-play elements. The player controls ‘Bit’ around a grid, constrained by a series of maze-like blocks and hazards. ‘Bit’ must successfully collect all the computer components that are scattered around the level and then repair his computer to proceed to the next level.”

Details:
Developed using C# and the XNA framework for the PC platform (Windows XP+).

 

The nice thing about this game design was that we could focus on the puzzle aspect of the game, time and imagination permitting, due to the simple overhead on technical implementation. The tile-based game engine was written from scratch using XNA, utilising XML data structures to store level data and a custom made loader. A cool and free little program called Tiled was used to ‘paint’ the level layout and export it into our XML format. I’d strongly recommend this to any considering 2D tile-based games for constructing levels, having said that, it’s a nice programming exercise to develop your own editor if you get the chance.

All gameplay aspects including animations and particle systems were programmed for the game, using no other libraries except XNA. I designed the game framework based on the State Design Pattern which worked out really well and continue to use it for game development.

With the use of XML and Tiled it allowed us to churn out level designs at an alarming rate and the final product has over 20 levels! Not bad considering the 2 week development time. When giving the presentation of the game, we literally only had time to demonstrate about 5 of the best levels, odd considering level variety tends to be in short supply for prototypes.

Sound effects were added (free assets) however I’ve removed these from the video and added music since honestly, they weren’t brilliant! The above gameplay video demonstrates various levels (played by me). I could barely remember most of the levels so it’s pretty much a blind play-through with some genuine mistakes.

For the project we all chipped in and the group worked well together. The game was never released or published anywhere, though if anyone is interested I could stick the executable on here for download.

Hypermorph Wins Three Thing Game Competition

So it’s been a frantic couple of weeks, plenty of course-work to do and last weekend was the much anticipated Three Thing Game competition. For anyone not in the know this is held each semester at Hull University and challenges teams to come up with a game based around three auctioned words per team. Judges then score based on the games relevance to the words and the quality/fun of the game. The competition involves a marathon 24 hour programming session to get your game finished on the day. This one was the biggest yet with 39 teams competing. We really couldn’t have asked for better “Things” because a combination of good bidding and luck meant we came out with “Flying”, “Tank” and “Bombs”. Considering another team got “Teddy bear”,  “Deodorant”  and “Pop Tart” I think we did ok!

Last year we came second with Shear Carnage and and I can say that honestly this year, we really really wanted to win it. This was evident to myself just by the focus we had this year and when the day of the competition came, I think I probably left my seat half a dozen times in the whole 24 hours! In hindsight we probably took it far too seriously and as a result I think it sacrificed a lot of the enjoyment of the competition and resulted in some contention regarding ideas that seemed inevitable considering vested interests and no one leader within the team. I think on a personal note, much was learnt regarding team work and there are aspects of the planning and design process I would do differently next time. Luckily it all turned out worth it in the end and so it’s very hard to regret any decisions, but this was by no means a painless endeavour!

Me on the right, Russ in the middle, John on the left. Lee Stott at the back.

So to the game, Hypermorph is a retro-style side scrolling shooter that takes me back to my childhood days, playing classics such as Xenon 2, R-Type and Menace on the Amiga. Back then the shoot’em’up was a staple video game genre and was hugely popular, now only since the mobile platforms have taken off is the genre again feasible because it’s the perfect style of game to have a quick blast on when wanting to pass a little bit of time. The  thing that’s pretty novel in Hypermorph is the ability for the player to switch between two different forms, a spaceship and a hover tank by simply tapping the screen. We made the game using XNA (C#) for the Windows Phone 7 and coded everything ourselves (no third party libraries).

I produced the art for the game and managing both the art and doing a lot of the programming was a challenge in itself on the day, resulting in most of the art being done in the last few hours. I had a good idea in my head what the game would look like when we were bouncing the initial idea around, however my regret was that I didn’t produce any concept art for it sooner to put the rest of the team at ease; for a long time I think we were left with our own ideas for how the game would look but once I came up with the first concept drawing for the ship, the team were all in favour to my relief!

We had decided to make the game quite dark and moody but with bright weapon and explosion effects to make them really stand out. Additionally, we wanted to make the controls as hands off as possible. We learned from Shear Carnage that using touch too frequently can result in obscuring a lot of the screen so we instead went for a tilt based movement for the player and a single touch to morph between Tank and Spaceship. Importantly we set it to auto-fire constantly since you soon realise that in this genre there’s never a time you don’t want to be firing.

One feature I’m really pleased we put in was the voice effects for powerups and various other things. It adds a lot to the immersion and again, really goes back to the genres roots.

Of course we have plans to get Hypermorph out on both the WP7 and Windows 8 market ASAP but uni coursework is currently being prioritised. At the competition was Lee Stott from Microsoft and guys from the Monogame team. Lee’s encouragement was inspiring and I’d also like to thank him and Microsoft for providing the cool prizes. The Monogame guys were brilliant and we spent a fair time chatting with them regarding getting our games ported to the various platforms, they even ported Shear Carnage and my Robocleaner game for us to show us how easy it is! (albeit there’s some coding required to get them ready for the marketplace).

Ultimately we are going to want to put in a few more levels, enemy types, weapons and powerups before getting it on the marketplace, but the good news is it will most certainly be free!

All in all it was overwhelming and the encouragement we have received from Lee Stott, Rob Miles and the MonoGame guys was great. Ultimately this is why I gave up a career in IT to get into the games industry, because there’s so much satisfaction in putting your heart and soul into producing a game and then seeing others get a lot enjoyment from it. Winning the Peoples Choice award as well as the judges award was the icing on the cake and I’d like to thank everyone who voted for us and gave us great feedback.

Stay tuned for more Hypermorph news soon…

Robocleaner out on Windows Phone

Finally Robocleaner is now available for download on the Windows Phone marketplace. Check it out, feedback welcome. There’s a “try” option to play the first 3 levels on each mode for free and the Online Leaderboards function in the trial mode too.

MS Store Link: http://www.windowsphone.com/en-gb/apps/06793bef-a8f3-4b25-a325-4e12b598f4df

As my first solo title that I’ve worked on it was a great learning process and gave me a good idea how tough it must be being a full-time indie developer, especially if your a one-man team doing design, coding, graphics and sound. It’s certainly encouraged me to continue and it’s a shame that XNA is pretty much being dropped in WP8 since a lot of the XNA specific skills I’ve picked up may not be much use in the future (without Monogame at least).

My aim for the next couple of semesters at Uni with time permitting, is to work on more mobile game titles, likely simpler ones (Shear Carnage) with less physics and AI coding. One thing I learned is that just because you have a cool path-finding or a realistic wall bounce algorithm, it may be technically impressive but it really doesn’t impact the game overall and it’s better probably to make games where more complex mechanics aren’t required to make the game fun. I do enjoy doing AI and the physics side of things but with mobile games, it’s better to get the game done ASAP and out on the market so people can have fun playing it. Next time I’ll be aiming to get two games released in the time it took me to make Robocleaner!

Robocleaner Update..

So, I’ve been progressing with getting my Robocleaner game on the marketplace (I’ve renamed the game from Sweepy Cleaner for originalities sake). It’s been taking a lot longer then initially I thought it would mainly because I wanted to completely redo the graphics and as anyone will find, graphics can be quite time consuming. On the plus side my knowledge of making graphics and using Photoshop and Illustrator has increased ten-fold.

Things I’ve added so far:

A menu system with options for muting sound and changing the control type from tilt to touch. Touch being useful if your not upright when playing. I also improved slightly my background image and removed the eyes from my hoover. Less is clearly more when it comes to hoover eyes since I think my Cyclopean hoover looks more bad ass then when it had two and actually it’s eye is now what used to be it’s nose :)

So far I’ve only made 4 levels out of 8. I’ve got the living room, bathroom, dining room and kitchen finished. I’m trying my best to make each room quite unique to the last and also slightly increase the difficulty as you progress, mainly by introducing more clutter and extra  stuff that harms you.

Bathroom

I’ve added Hazards which are like regular furniture except you can pass straight through them while taking damage e.g water, spilt coffee, broken glass etc..

Additionally a new little chap I’ve added which I’m quite pleased with is a Dust Goblin, he roams around the maps he’s on and if he comes into contact with any dust, he turns it into a Dust Bomb that he hurls at you, if it hits you, you take damage and you also die outright if you touch the goblin. He adds a significant challenge to the game and in later levels there will be multiple goblins, potentially of different types!

I’ve added decorative particle effects into some of the levels to add a bit of realism. In the bathroom for example, the bath tap is running and there’s steam and water droplets splashing onto the floor and on the kitchen map there’s a kettle with steam particles being puffed out.

Sometimes adding cool little things like the particle effects that don’t take much effort can make a nice difference to the polish of a game so I like to add them. You just have to limit yourself on some things otherwise the game would never get finished. Luckily the programming is pretty minimal at the moment since most was done for my course work (except the new stuff) and adding levels is just a few lines of code or less depending on what objects are present in it.

So there it is so far, hopefully I’ll get the other 4 levels done soon and can get it on the  marketplace asap with maybe an on-line scoreboard and time related scores for each level. It’s certainly a nice feeling seeing the game come together and hopefully not just be a uni coursework submission but an standalone fun little game.

Sweepy Cleaner – Windows Phone

I thought I’d finally get around to making a post on my blog and specifically concerning the thing that has taken up the majority of my time over the past week or so. Sweepy Cleaner!

This is a coursework project we had been assigned as part of the the Hull University Computer Science degree. We were given a spec and tasked with making a game plus extras via C# and XNA 4.0.

I decided I wanted to make as polished a game as I could that stuck pretty tightly to the design specification, but still add a decent amount of extras here and there. In the end I’m pleased with the finished product and really enjoyed making the game.

The toughest aspect of the project was the AI path-finding that I wanted to put in the game so that  in “attract mode” it guided itself around the furniture and collected dust of it’s own accord. This sounds simple but in reality it was the trickiest bit of programming I’ve probably done and let’s just say I won’t be bitching about dodgy path-finding in AAA games any time soon. I may actually make a separate post on this and include a dissection of the code I came up with.  I decided to initially look into an A* algorithm but I wasn’t sure how best to apply that to a game where things don’t move along a grid. So I decided to use static waypoint nodes that I manually placed around the level and then added them to a list, sorting them based on distance from each waypoint to the nearest dust to the hoover. I spent a long time trying to perfect it and although still not perfect, (I had to use at least one workaround) it performs convincingly enough with no furniture collisions and I’m very happy with it. I could later adapt it to make a “vs” mode where you have to race the AI hoover to collect the dust.

There’s only 3 levels in the game, I’ll hopefully add more before I get it on the Windows Marketplace.

Fingers crossed that my demo goes ok next Wednesday!

Here’s the artwork I did for the title screen, it does makes me think a 3D version of Sweepy Cleaner could be pretty fun!

C# / XNA: Passing Class instances (objects)

So, not being an expert I was trying to find improved ways of managing external class member access  without resorting to “public static” and ideally wanted an object orientated method, a while ago we were told by Rob Miles how classes or specifically instances of classes (objects) are passed by reference. I understood this however I didn’t really join the dots together for one useful implication it has::

Passing objects as parameters allows the receiving Method and potentially it’s Class, access to the objects members directly. (since its a memory reference to that object, not a copy).

It maybe obvious to some but ultimately,  it means you don’t need to keep feeding objects in as parameters for update methods to show changes, you can just do it once and store it there as a class member. The objects members will all be directly accessible from within that class, even if they are changed elsewhere in your program/game.

I think the thing that didn’t make this obvious to me is the fact that if you pass a class instance member variable instead of the instance itself, this behaviour doesn’t work, you just end up with a copy of the member variable at the point of being passed, but that’s because it’s been passed by value, not reference. Additionally, I found myself repeatedly passing object instances into Update methods, which worked but simply wasn’t needed since a ref could just be passed once and stored for the class. In the context of “Sweepy Cleaner” our Uni course work project, the below highly contrived examples highlight what I mean:

Pass by value Example:

Pass by Reference Example:

The other obvious good thing about passing the class instances instead of specific member variables is that you can of course access all members of that class instead of just the ones you pass. Additionally, it gets around the need to use public static for easy but rather lazy access of class members from outside the class, because only the classes you pass the instance to will be able to access it’s public members, and if you combine with “accessor”/”getter” methods I guess they don’t even need to be public.

(I’ve heard bad things about getter/setters too because it goes against the object orientated nature of C# apparently, but I’m not too bothered about that at this stage).

Anyway, you can of course still pass individual members via the “ref” keyword in the parameter and arguments to achieve the same thing as above but just for a member. I personally think for XNA passing the instance just seems a sound way of doing things. I’m not sure if there are repercussions to doing it like that, but so far it seems sound and hope this may help others who also hadn’t realised its usefulness.

Shear Carnage

So, it all started with an idea based off that gem of a game “Missle Command” (pictured above – and whom most who read this are likely too young to have played) and spiralled uncontrollably into what became a potent concoction of sheep gibbs, explosions and of course laser beams…what else? My one regret is that we didn’t get around to combining that into the direct form of “laser beam firing sheep gibbs that explode”, but I digress.

The Three Thing Game competition is something held by Hull University every 6 months and  is based on teams being given 3 random words and then developing a game about these words within 24 hours (We did have a few days between getting the words to plan and prepare however). Our team “Run Dead Studios” received the words Sheep, Fireworks and High Diving. My good friends and team mates Russ and John have covered all the detail on this marvellously so I won’t cover old ground but do check out their blogs! (You both now owe me a blog plug).

The day was great fun and my first experience of working so closely as a developer on a games (or any software for that matter) project. This itself would have been great enough reward however to actually come second place out of 33 teams and over 100 people, was truly a wonderful thing. We were beaten rather predictable by “The Infamous Two Sirs” who live up to their name I can tell you. They had an excellent game that won hands down in terms of innovation, and though its mechanics are quite hard to explain, rest assured it was good. Next time, I think we’ll go for something more innovative ourselves, now that our confidence has peaked a little. There was certainly an element of playing it safe from us, but like Rob Miles has said on his blog, its much better to make a full game that’s simple,  then a complex one that’s basically just a tech demo.

    

Details wise, we developed it on for the Windows 7 platform using XNA in C#. I’ve got to say I think XNA is a great development library and with the help of Visual Studio and Tortoise/Subversion SVN for source code management, it was pretty much a care free development experience.

I’m incredibly proud of what we achieved, especially considering we are first years and the game is simply great even if I do say so…we certainly had plenty of fun playing it on the day, in fact it was so addictive it may have gotten in the way of us actually trying to get it finished which I think is a good sign.

On behalf of Run Dead Studios, I present Shear Carnage! Coming to a Windows Phone App Marketplace soon, free of course. No Sheep were harmed in the making of this game, however if the sight of cartoon sheep dismemberment is shocking to you, I STRONGLY do not recommend you play this game :D.

Just to add, you can find the video of us presenting the game to the judges (Well, the first presentation anyway) below: