Thursday, 7 August 2014

Veure - Turning Bugs Into Features

Published by Ziff-Davis Publishing Company
[Public domain], via Wikimedia Commons
Despite the post title, I'll cover a number of areas as I continue to document my (initially) one-man quest to write a text-based MMORPG. What follows is mostly me rambling and isn't trying to be overly coherent.

I've already written combat in Veure (side note: we think we have a real name for it now) and frankly, I like some of the features it has, but recently I hit a snag when I was rewriting the item system (guns, medkits, and so on). I had put a stub item system in place originally, just to have something there, but now I needed to make it more robust. However, in rerunning my combat simulator (which generates a 16M spreadsheet and takes hours to complete), I discovered that for one of the combat stats, if you increased the stat, you decreased your odds of winning a fight. Oops.

Now if you're curious about how combat in a text-based MMORPG works, I recommend checking out In fact, if you're curious about text-based MMORPGs at all, check out that game (it's free). It's huge, has been running for over a decade and just released a major update to its interface. It's a fun game, but it's exactly the sort of game I don't want: there's no story, no immersion.

To my mind, immersion is a huge deal, but I want the immersion to stem from something at least plausible, if not realistic. Immersion is important to me because you want to live in Kalimdor (from World of Warcraft), but you don't want to live in backgammon (it doesn't even make sense), thus giving the former a huge leg up in terms of attracting players who want an immersive environment. But when I'm looking at combat, I have a huge problem because even if I make it immersive, it's hard to make a plausible scenario out of shooting someone 20 times with a Callahan Full-bore Auto-lock and watching them walk away (Jayne, at least, would be very upset about this). Nonetheless, many combat systems are like that. A level one player can't just put a gun to the head of a level 50 player and kill them, so there are sacrifices to make.

Regarding sacrifices, I envy, and not just because it's a well-thought out game. I envy it because its lack of any sort of realism means that they can create anything they want. I have constraints and when I discover that a new player with fists can routinely beat an experienced player with a knife, that's not good. As it turns out, my combat system wasn't as broken as I thought, but my combat simulator was a mess. I made the mistake of trying to mock up some parts of the system for performance reasons. Though I'm the first to teach people that this is a bad idea, I fell prey to this silly technique and got bit by it ... again.

The reason, incidentally, that I uncovered the combat bug is that I needed to revisit it after I started on my new item system. So now I've lost a fair chunk o' time fixing the issues, but now I'm trying to slow down and fix them correctly so that I won't have to keep revisiting them. I work very hard to ensure that technical debt in the system is at a minimum and it makes adding new features a breeze (usually).

But bugs. All software has bugs and the combat bug let me pay more attention to some game balancing issue, but what I really loved was when I was flying around the galaxy and tried to dock at  a station and *bam*, I got an error with a long stack trace. Rather than dig into it, I added a bug report to github and the other developer picked it up. What he found is that I had inexplicably created a few space stations without ports. There's no way to dock because there's no port to dock at!

That's where the interesting bit comes in. Both he and I immediately thought "yeah, but why have a port?" That's one thing I really enjoy about hacking on Veure: while we have the constraint that gameplay ideas should be plausible, we don't have the constraint of a customer saying "you must do it this way." As a result, for many bugs which occur, I ask myself if that's actually a feature. In this case, both I and the other dev decided that when you fly into one of these systems, you'll see the station, but you can't dock at it. This means, naturally, that if you want to check it out, you'll have to find some way to get on it ...


  1. This is the exact thing I loved about developing a video game, right up until I started spending more time building a company.

    1. That is the hard part, I'll admit. Our company has been running for about a year and a half now and it's going well, but if the MMO takes off, it's going to be much harder!