I’ve made a sort-of satire game. It’s called X of Y, or to give it it’s fully descriptive title ‘Kill X of Y – a text based mmo simulator’. It’s the first time I’ve made anything resembling a ‘game’ and you can download it if you like. I’ve also decided to make it open source so if you fancy taking a look at how it was made or want to modify it you can get the Visual Studio 2008 project.

Now, bear in mind this is an Alpha release. It’s a little rough and possibly less Alpha, more proof of concept. It is playable though and as far as I’m aware there are no crashes anywhere. It took around 12 hours to hammer together, most of which was spent on ‘how the fuck do I want this to work’ – the actual code is fairly simplistic…ish
If you have literally 0 interest in programming or game development, now is the time to drop out of this post because I’m about to splurge some of my thoughts on how I put this thing together. Also, if you already a dab-hand at game development, now might be the time to drop out too because it will no doubt be hilarious how shit I am at it.
Firstly, a very rough outline. X of Y is coded in VB.NET, and this is for 1 reason – it’s a language I know really well. While I’m well aware that games are generally coded with the likes of C++, it’s not a language I’m that familiar with and I wanted to make this thing quickly and with as few coding problems as possible. The big question though is probably ‘what the hell are you thinking making a text based game. This isn’t the 80′s you know.’ Well, it’s text based because my graphical skills stop at making stupid drawings in Paint and my animation skills drop off at making stupid drawings in paint too. Basically I made an MMO simulator because I thought it would be funny to summarise everything I think about MMOs in a game rather than a big long rant on here – and that meant it should be easy to do and not need a load of technical tom-fuckery past my current skill set.
The very first task was to think through the very fundamentals of an MMORPG and to lay them out in code. OK, so there is the player, who fights monsters, on quests given by NPCs, in various locations. From there I knocked up some classes (basically how you define something in code) – a player class, an enemy class, an NPC class, and a location class. When I started putting them together it soon dawned on me that, in fact, a player and enemy are pretty similar – they both have a name, HP, and other base stats. An NPC is a person too, and I might want to be able to make one fight in the future. Ok, so I created a new base class called a Combatant that could define the basics of the Player, Enemy, and NPC all in one go, and then each class could in turn could inherit the Combatant class – so in effect they are all combatants but are also their own thing.
Now I had entities, things that make up a world, I could make them interact. Cue a new class called fighting with a main function called, simply, fight. With this I throw in the players character and another combatant and have them duke it out. It’s just a loop of each combatant hitting each other, seeing if the player or enemy has 0 hp left then either handing out an xp reward for the kill (each enemy has it’s own XP reward value which is based on it’s level) or showing that the player has died accordingly.
Happy that fighting was working, I started to build up how quests were going to work. The idea of ‘X of Y’ was that it was to emulate being in an MMO – doing endless ‘Kill X of Y’ quests of generic enemies for generically named NPCs in generic sounding locations. Queue text files of enemy names, NPC names, and two text files to build up the name of a location (one holds a set of starts of a place names e.g. ‘Mirk’, ‘Hob’ and one the end e.g. ‘wood’ or ‘ington’ so we get randomised place names). Each NPC generates a location which his quest will be for, and then that location will generate a set of enemies inside it to be fought. We have a quest! Now lets actually show something to the player.
Deciding what to do with showing something has happened was probably the hardest decision, and the solution is something I’m not particularly happy with but not something I can think of a way around. I created another class called Describe (originally called Tolkein, but I forced myself to be sensible) which is just full of sections that write stuff to the screen. So, for example; I can say Describe.fight.hit, tell it who was hit and how much damage was dealt, and it will output some text to the screen to tell the player. Or I can say describe.location.arrive, give it a location, and it will tell the player that they have arrived in where-ever and how many enemies are there. It works well enough, but like I said I’m not entirely happy with it because it means loads of hard coded text that I have to call within classes that shouldn’t care about what’s on screen, which is horrible. However, it was quick and easy, plus it does mean that with everything going out in 1 place I can easily find where to change text, and if in the future I wanted to make it graphical it would only mean a re-write of one file.
At this point, there was a working RPG. You got quests, you fought monsters, you got XP and levelled up. There was one thing distinctly missing though, and that’s the MMO part. I needed other players in here. For now, I implemented two ideas. Firstly, when you die instead of just resurrecting after a period of time, I had the player shout out for a rez, to which a mage turns up and there is a 50/50 chance he will rez you or walk away. I also implemented a TravelTo method on locations, so when a player was travelling to somewhere, there is about a 25% chance they will come across a level 99 griefer who will just attack. So, only a few pretend people but better than none. And the people were mostly dicks which felt about right to me. Now I had an extremely simplistic text based MMORPG simulator.
The big question now is whether I want to develop the idea further. Sure, there is plenty of scope here, but is it worth the time for something that was essentially a joke? I don’t know. It’s fun to make, sure, but I want to plow as much time into this here site as I possibly can, and that includes playing games to write about. Time will tell if this just gets shelved or not, but it was a fun experience anyway. And I have an inventory system half built which I’m itching to get working and in.

Jaz linked me a while back to a really good guide on how to make sprites if you ever think of pushing the idea further – http://www.derekyu.com/?page_id=218
Tom said he would do some assets if I went that way. Don’t know. Does it need art? Is text based charming?