&
Advertise Here with Today.com
 

Jan 03 2009

Anatomy of a Design Failure: Threshold players able to attack and kill themselves.

Published by Cambios at 3:55 am under Game Design Edit This

People keep asking me to write about how and why I designed things, so I guess it is about time I actually broke down and gave the readers what they want. As I noted in a comment post, when I look back over my 16+ years of computer game design my failures stand out for me more than my successes. I don’t think that is negativity. I think it is just a bit of perfectionism mixed with a desire to never forget my failures in order that I not repeat them. In this post, I am going to discuss an absolute disaster of a design failure from the early years of Threshold : allowing players to attack (and kill) themselves.

You’re kidding right? Threshold players could attack and kill themselves?

No, I am not kidding. This design failure started out as many design failures start: an unintended “feature” (not quite a bug really, but close). Add in some developer arrogance, and you have a gross design failure that was allowed to exist for YEARS.

In the original command to initiate a basic attack (the traditional MUD “kill” command), I forgot to put in a simple, check that would go something like this:

if(  this_player() == target )

{

 write(”You cannot attack yourself.\n”);

 return 1;

}

Many special abilities had checks like that, so it isn’t like I didn’t understand the obvious necessity of such a simple check.

So… That’s It?

Not remotely! Soon enough, players started reporting this nifty little surprise feature. People playing elf characters (for example) were taking a logical shortcut by typing “kill elf” when fighting a drow elf.  When looking for the first living in the room with an ID that matches “elf”, the command would often find the player himself or herself. Result? Self combat.

I went into the kill command to fix it, and just happened to drop the fix in a less than ideal place. Instead of adding the little snippet of code I already showed you, I instead added something like this:

if( lower_case(str) == this_player()->query(”race”) )

{

 write(”You cannot attack yourself.\n”);

 return 1;

}

The “str” variable is the string someone enters after the command “kill.” So if your character was an elf in this situation you might have typed “kill elf.” The “str” variable would be “elf”, which would be lower cased (just to be sure) and then compared to your race. It would then tell you to cut it out.

Sounds Like a Happy Ending Then.

Not a chance. The programmers reading this probably already see the problem. There are potentially more ways to target yourself besides just your race. Some people would actually mess up and type “kill <their character name>”. Sounds crazy right? Well everyone who has chatted online has accidentally mischanneled or typed the wrong name somewhere. It happens. Other times, people would lose track of how many elves were in a room, and type “kill elf 3″ to attack the third elf in the room, but that third elf would be themself! EEP!

So You Just Fixed That Too, Right?

That would be the logical thing to do, right? Nope. At the time, I was massively overworked. I was in law school. I had a job. I was trying to build and run an online game all by myself. I was stressed out. When informed something was broken that I had already worked on and deemed fixed, I reacted poorly. Instead of making the 30 second fix, I chose to make a design decision that attacking oneself meant your character went “INSANE” in character, and you now had to deal with the consequences.  I rationalized this as logical since SURELY no sane person would attack himself/herself… right? Since they were mostly doing this by actually typing their own character name as the target, I felt justified. After all, I thought, if people are so careless that they type their own name after the kill command, they deserve to die… right?

This design decision was wrong on so many levels.

1) The core mistake was mine. Developers should ALWAYS take ownership of their own mistakes.

2) The first fix did not fully remedy the problem. That happens. A developer should not take offense at this, or be upset. Some things are tricky and take more than one pass to fix. This is no big deal. Just fix it again.

3) Developer Arrogance: “My code works fine if players aren’t stupid/careless/weird with it!” Too bad. The way the players interact with your game is important. If they commonly do something that causes unintended effects, figure out a way to prevent it from happening.

Can You Still Kill Yourself on Threshold?

Threshold is a challenging, old school, role playing mud. You can definitely kill yourself. But you can’t do it by attacking yourself any longer. You have to actually go out and do something risky or dangerous. A few years later (yes… sadly I must admit it was years) I finally did the right thing and fixed the condition the right way. I also added an “attack stop” (by this time, the “kill” command had been renamed “attack”, since “kill” is a little presumptuous) command so people could stop fighting for whatever reason they chose (but their opponent might keep fighting!).

Well, that is the anatomy of a terrible design decision, and it is also an example of absolutely horrendous developer arrogance. The only positive to the story is that it took place over 10 years ago. I have learned a lot since then, and hopefully I have not and will not do anything like that again.

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
Advertise Here with Today.com

14 Responses to “Anatomy of a Design Failure: Threshold players able to attack and kill themselves.”

  1. WitchKilleron 04 Jan 2009 at 4:07 am edit this

    Hey Cambios, from a programmer’s perspective, how feasible are context sensitive abilities in a persistent online world?

    I was speaking with a friend recently about how much I would love to see classes that played* uniquely in a modern MMO. Instead of Mages and Fighters playing* alike IE: click on icon ->wait for cool-down ->click on icon. A mage that could conjure fire, wouldn’t use the spell the same way a fighter would use some class exclusive strike, but would instead conjure fire to block exits, smoke out areas etc..

    This may have been a silly question, like asking if it’s possible to turn your washer and dryer into go-carts, but I’m curious. Forgive the ignorance.

    *I mean ‘play’ as in how the player is able to use the character to accomplish in game goals.

  2. Cambioson 04 Jan 2009 at 10:56 pm edit this

    I think they are completely feasible. The problem is, MMO designers are not terribly interested in innovation these days. They are interested in either being the next WoW, or peeling away a couple hundred thousand customers from WoW.

    If you want to find innovative features in online games, your best bet is to check out MUDs or web games.

    For anyone interested in checking that out, they can try one of my games - Threshold - or they can look for all sorts of games at one of these sites:

    http://www.topmudsites.com

    http://www.mudconnect.com

  3. Hirvoxon 05 Jan 2009 at 6:51 am edit this

    In my opinion, context sensitive abilities are very much feasible, but implementing those consistently may result in work that does not directly contribute to improving the gameplay.

    The problem is that we humans know a lot more about the world than the computer does. A computer is a blazingly fast idiot. It’ll do whatever we tell it to do, and only that. We have to explicitly tell it that a torch is flammable. There are literally billions of similar concepts that we, as a species, have learned. To make it worse, understanding many of the concepts requires understanding other concepts. For example, flammability involves fuel, oxygen and heat. Understanding those related concepts is very important when someone asks the dreaded “What if” question and tries to apply the concept of flammability to a different scenario. For example, trying to burn a wooden door that’s blocking your path. Failing to account for those scenarios breaks the suspension of disbelief when the players figure out the limits of your implementation. So you have to implement a few more concepts in order to understand your existing ones. And so on.

    The problem is even more glaring when you re-implement a tabletop role-playing game as a computer role-playing game. Your Game master is a human, so he can understand the same concepts as you do, and even modify the rules to account for many situations. A computer cannot do that, at least not yet.

    If the semantic web (encoding all of those hidden concepts in a computer-understandable and accessible form) ever gets off the ground, then I’ll expect to see a major game that implements context sensitive abilities properly. Then the game designers don’t need to devote time to those concepts, they can just make the game ask Google what properties a wooden item has. In the meantime, you should keep an eye on indie games. Small developers can devote entire games in exploring a single concept.

  4. Raviouson 06 Jan 2009 at 4:15 pm edit this

    Wow, finally caught up. Great blog! Added you to our burgeoning blogroll and sub’d. Can’t wait to see more.

  5. Brandon Tilleyon 07 Jan 2009 at 7:16 pm edit this

    Wow… I’m amazed! Your advertisement was shown on my (World of Warcraft) blog via Entrecard when I had nothing else pending to show in that spot, and lo and behold you’re the creator of Threshold, a game that I played (and still play occasionally, though it has been a while since I logged in). Just thought I’d stop in and say good blog, and good game.

  6. Cambioson 07 Jan 2009 at 11:37 pm edit this

    Thanks Ravious.

    And thank you too, Brandon. Amazing how Wikipedia considers us non-notable, and yet I run into Threshold players in similar serendipitous circumstances all the time.

  7. Teshon 12 Jan 2009 at 3:34 pm edit this

    Whee, a design article!

    Ah, unintended consequences. This is another great reminder to me that what we humans laughingly call “logic” is far fuzzier and context-sensitive than the way computers interpret the concept.

    I’ve tried to take care to think out the ramifications of what I choose to do, but this sort of mistake is all too easy to make, even for us artists. A failure to think ahead can prove costly. (As I’ve found all too well lately.)

    Thanks for the example, Cambios! Oh, and the site is blue now. Nice. :D

  8. Peteron 13 Jan 2009 at 12:02 am edit this

    I loved this post, and it surely bring back memories. When that is said I must admit that I really can’t understand why this ended up being your first article on Threshold.

    I read an article you wrote several years ago about some of your early thoughts when you designed Threshold. I know the decisions were made a long time ago but I would still love to read some more about the thoughts you had when designing the religions to have ever lasting conflicts, the player run Law System or other systems that has ended up playing a major role in the way your game has turned out.
    If the decisions from the start are too distant then you might write about the thoughts and the process leading up to the “Golden Age” changes from a few years back which I am sure must have taken a huge design effort.

  9. Cambioson 13 Jan 2009 at 5:10 am edit this

    Tesh: Unintended Consequences + Stubborn Developer = disaster.

    Tesh: My wife complained about the red. LOL. Do you like the blue better?

    Peter: Law or Religion. Gotcha. Those are probably two of the most unique systems on Threshold, so those should be up there.

    I think the reason I chose this one first is simply because it is a huge mistake of mine. It has always kinda haunted me, and I’ve always looked back and felt like an idiot.

  10. Peteron 13 Jan 2009 at 1:14 pm edit this

    Has haunted me as well ;)
    Died to it once and have seen a few others fall to their own hand as well. I honestly can’t just write “attack ” or something like that… it’s too build into me that its a NoGo.

  11. Peteron 13 Jan 2009 at 1:21 pm edit this

    Was trying to write “attack myRace” in the above.

  12. Teshon 13 Jan 2009 at 3:01 pm edit this

    I definitely like the blue better. It’s a minor thing, really, but yes. Blue is better. Even my two year old daughter loves blue. :)

    I’d extend your equation to include “Stubborn Publisher” as an exponential factor. ;)

  13. Talsekon 13 Jan 2009 at 3:08 pm edit this

    I do remember getting myself in trouble by attacking myself as a newbie. I seem to remember unwielding my weapons and begging frantically for help on the heritage channel. Ah, good times. Luckily I found more creative methods of suicide later :).

    Oh, and the blue is better ;).

  14. Cambioson 13 Jan 2009 at 10:36 pm edit this

    Yay. Everyone likes the blue. :)

    My apologies to the reading Threshers who died to the self-attack thing. That was stubborn and stupid.

Trackback URI | Comments RSS

Leave a Reply

Advertise Here