Recently I decided to dig out my old copy of the original Diablo. My friends often refer to it as an ‘action role-playing game’, but I prefer to classify it as a roguelike, because I love roguelikes. And I swear that I will beat Angband before I die….
Anyways—my character in Diablo is a Rogue, the class that can use a bow like a machine-gun. The merchant in town had a fantastic bow for sell but I lacked the necessary gold, by a lot. Instead of plunging into the depths of the dungeon to win that gold through battle I instead started duping the money. In other words, I exploited a bug in the game which most people consider a cheat.
Which made me think about the game I’m developing: how should we handle cheating?
Not All Cheating is Equal
There is an important difference between duping items in Diablo and using IDSPISPOPD in Doom. The former exploits an unexpected bug while the latter uses an intentionally created cheat code. Blizzard did not plan for players to turn five thousand gold into twenty-five thousand with a few clicks. While id Software made a conscious decision to include a code that disables clipping.
These are both forms of cheating but they are not the same either. Cheating in games reflects the intent of the designers and developers. Some hide shortcuts as easter eggs for players to discover. Others offer cheats as results of programming mistakes. One is intentional, the other is accidental.
The Impact of Single-Player Games
Personally I do not believe that cheating affects the quality of a single-player game, regardless of whether or not the cheat was intentional. The fact that I duplicated some items in Diablo does not impact the gameplay experience of anyone else. “But Eric, there is multiplayer…,” I know, and I’ll get to that.
A phenomenon I’ve witnessed is how one person’s cheating in a single-player game can sour the experience of other gamer. For example, some people who complete Diablo without resorting to the duping bug may consider themselves superior players. At worst they may feel like my tainted accomplishment cheapens their own. I must admit that this is not a mentality I can sympathize with. Yet I have seen the attitude enough times that I cannot just write it off as nonsense. There are gamers who genuinely feel that cheaters rob the fruits of their labor in single-player games.
Now we—the game studio whose name we ought to announce soon—have not discussed adding cheats to our game. The gameplay is a single-player experience and there is currently no mechanism for the actions of one gamer to affect another in any way, except on an emotional level for those who feel any cheating at-all damages the experience. If you are a gamer with such an opinion then fear not, we have no plans for intentional cheats.
However, that does not exclude the possibility of cheats such as Diablo’s duping, the results of a programming mistake. No non-trivial computer program is free of bugs and games are no exception. Our game will have mistakes in its code and logic. All we can do to avoid that is apply the best quality control and programming practices possible. To give you an example, months ago I introduced an error into the code for creating enemy bullets that would cause them to never move. To say that made the game easy was an understatement. Blatant mistakes like that are things we are sure to fix. But will unexpected bugs present loopholes that clever players can use to ‘beat the system’? I hope not, but no promises.
About Multiplayer Cheating
I chose Diablo for an example in this article because it has a multiplayer mode. There is an arena where cheating can ruin the fun of other gamers, which is why developers of multiplayer games must prevent cheating at all costs. I feel no personal incentive to invest my time in a multiplayer game where my opponents can screw me over through design problems as opposed to actual, superior skill.
The most blunt way to stop multiplayer cheating is to have no multiplayer at all. Maybe that sounds so obvious that it seems pointless to mention. So why say it? Because it is a large benefit to developing a single-player game like ours. It removes from our shoulders a tremendous burden of design, balance, and testing. Those become efforts that we can direct solely into the single-player experience.
So How We Will Ultimately Handle Cheating?
I realize most of this post is self-evident to gamers when they think about the issue. But issues such as duping in Diablo remind me that careful, defensive programming is the best safeguard I can provide against cheating in our game. If a method of cheating survives testing and makes it into release, then what? Do we address it with a patch?
Honestly, it depends. Patching is a more broad topic that I will cover in another article. For now all I can say is that we have no plans for cheat codes, but that does not preclude exploits made possible through programming errors.