Home ยป What are the advantages of putting cheat codes into a game?

What are the advantages of putting cheat codes into a game?


One major feature is that they make debugging easier.

If there’s a broken puzzle door that’s not unlocking, and you can bypass it by clipping through the walls, or skip past some tough combat with invulnerability and an insta-kill weapon, or shortcut the economy grind by giving yourself infinite money to make sure the last-game purchaseables all work, you’ve saved yourself a lot of time! Being able to manually spawn an object or character you need to test on demand, rather than finding them organically in the world, can be another huge time-saver.

Without these ways to break the rules, then if the rules themselves aren’t working in one part of the game, you can be blocked from testing everything else in the game that depends on or comes after the glitched part (something we call a “walkthrough break,” one of our highest priority classes of bug)

This is especially important on large teams where even once you find a bug and someone is actively working to fix it, other developers and testers can be blocked from doing their work, massively slowing down development. Being able to cheat around small issues gives some insulation against this kind of deadlock.

Here’s a tweet I spotted today from @Ed_dV that illustrates this nicely (click through for video):

Made a little floating window with all of my debug tools, cheat
toggles, time of day slider etc. I can’t believe I didn’t implement
cheats earlier – noclip/fly is vital in the early bug-ridden days.

(Of course, you must still follow-up with cheat-free playthroughs whenever possible, to make sure it’s not just the cheated version of the game that works)

Once you’ve put in the work of developing these cheats, there’s often little to no cost to leave them in for players, accessible by a secret key combo, cheat menu, or debug console – as long as the game is single-player so they can’t be used to interfere with other players’ games.

These codes can be a delightful easter egg for players – how many times have you tried entering the Konami Code on a game or website, just to see if it would do something? A lot of us have fond childhood memories of no-clipping through walls in DOOM or giving ourselves all the weapons in GTA, or spawning so many rings and springs in Sonic the Hedgehog that the framerate stuttered. ๐Ÿ™‚

If you give out the cheat codes in-game as rewards for solving difficult challenges, it’s an impactful prize that’s reasonably cheap to implement, compared to giving the player a new ability or item that needs to be balanced against the rest of the game. With cheats, there’s a tacit understanding that it’s allowed to break the balance or fiction, in an opt-in way. And it lets players feel elite, entrusted with secret knowledge (which they can share with their friends for social cred too).

Lastly, these can provide additional accessibility for players who, for medical or other reasons, might not be able to get to all parts of your game on their own otherwise. If it’s the difference between a player enjoying a lower-challenge version of my game than I’d originally intended, versus not getting to enjoy my game at all, I’d rather offer them that lower-challenge version, to the extent that they want to use it.

And for the most part, cheats don’t negatively impact the players who dislike them. Players are very good at challenging themselves – for example, opting into difficult “Ironman” or “Nuzlocke” play styles even when not enforced by the game’s rules. So players who want a difficult experience generally don’t use or even look up the cheat codes.

Yes, you totally should have cheats in your game.

  1. Replay value! Having all weapons with infinite ammo and invulnerability might make level 1 far too easy, but it can also be a lot of fun when you already beat the game regularly.
  2. Dealing with bugs! It creates a possibility for the player to work around game-breaking bugs. Let’s say there is a very obscure bug in your 120 hour RPG game which, if triggered, prevents the player from completing the main storyline quest. They ask about it on Gaming.SE. There are two answers: “Sorry, that’s a known bug. Reload an old save. What, you have no old save? Too bad, then you have to restart the game all from the beginning.” and “Yeah, it’s a bug. Press ~ to open the console, enter SETVAR QUEST_7457_COMPLETED 1 and you can continue playing”. Which answer would have a better chance to get accepted? Here is a literal example.
  3. Accessibility! Not all gamers are equally abled. Think about players who have disabilities which impact their motor skills, hearing or seeing. While your game might simply be “hard but fair” for the average gamer, it might be completely unplayable for any people with disabilities. Cheatcodes might give these players a way to level the playing field and also enjoy your game.
  4. Marketing! Cheatcodes give players something to talk about. They can spread the cheatcodes on social media, on articles and among their social circle. They also can be used to create hilarious Let’s Play videos. The games people talk about are the games people want to play.

And all that for a feature which usually does not cost you a lot of money to add because you usually add them anyway for debug purposes.

Regarding your fear of breaking immersion and making the game too easy: Players are fully aware that cheatcodes are not the way the game is meant to be played. They understand that using a cheat can harm their game experience. They will only use them when they think that the game is more fun that way. And when it turns out that the cheatcode breaks the game, they are aware it’s their own fault they cheated and will disable them again.

An exception are of course multiplayer games. You don’t want any player to ruin the other player’s fun with cheating. But even multiplayer games can obtain a lot more variety if you have cheats which can be enabled by the server admin and apply to everyone equally. Reducing the gravity in a first person shooter, for example, adds new navigation paths to the old maps and thus completely changes their game experience. The game experience might not necessarily be objectively better, but it is different. And differences in gameplay are what creates long-term motivation.

What’s most important is that the players enjoy themselves playing the game, even if it breaks “your game”. Showbiz is about the audience’s enjoyment.

Hiding the cheat codes rather than putting them right in the option menu is a compromise between allowing some players to adjust the difficulty while at the same time officiating the game’s original vision of “how it should be played” by putting a small obstacle to enabling the cheats.

Some cheat codes can also be created just aesthetic for entertainment purpose (easter eggs) and some cheat codes can be created to actually make the game more difficult.

But there are more “practical” reasons than simply adjusting the game difficulty:

  • Gaming magazines want something to entice players to buy their products (magazines and strategy guides) such as a list of cheat codes or passwords,
  • Game reviewers need the cheat codes so they can skip ahead and write their reviews without spending too much time on the difficult or grinding parts,
  • Testers and QA need them for basically the same reasons game reviewers use them but even more so (e.g: infinite energy so a tester can properly test the wall collisions in a level without dying and wasting time dodging enemies),
  • You get additional word-of-mouth marketing; it gives players something to talk about between themselves.
  • Publisher may require you to put cheat codes in the game for all those reasons.

Related Solutions

Extract file from docker image?

You can extract files from an image with the following commands: docker create $image # returns container ID docker cp $container_id:$source_path $destination_path docker rm $container_id According to the docker create documentation, this doesn't run the...

Transfer files using scp: permission denied

Your commands are trying to put the new Document to the root (/) of your machine. What you want to do is to transfer them to your home directory (since you have no permissions to write to /). If path to your home is something like /home/erez try the following:...

What’s the purpose of DH Parameters?

What exactly is the purpose of these DH Parameters? These parameters define how OpenSSL performs the Diffie-Hellman (DH) key-exchange. As you stated correctly they include a field prime p and a generator g. The purpose of the availability to customize these...

How to rsync multiple source folders

You can pass multiple source arguments. rsync -a /etc/fstab /home/user/download bkp This creates bkp/fstab and bkp/download, like the separate commands you gave. It may be desirable to preserve the source structure instead. To do this, use / as the source and...

Benefits of Structured Logging vs basic logging

There are two fundamental advances with the structured approach that can't be emulated using text logs without (sometimes extreme levels of) additional effort. Event Types When you write two events with log4net like: log.Debug("Disk quota {0} exceeded by user...

Interfaces vs Types in TypeScript

2019 Update The current answers and the official documentation are outdated. And for those new to TypeScript, the terminology used isn't clear without examples. Below is a list of up-to-date differences. 1. Objects / Functions Both can be used to describe the...

Get total as you type with added column (append) using jQuery

One issue if that the newly-added column id's are missing the id number. If you look at the id, it only shows "price-", when it should probably be "price-2-1", since the original ones are "price-1", and the original ones should probably be something like...

Determining if a file is a hard link or symbolic link?

Jim's answer explains how to test for a symlink: by using test's -L test. But testing for a "hard link" is, well, strictly speaking not what you want. Hard links work because of how Unix handles files: each file is represented by a single inode. Then a single...

How to restrict a Google search to results of a specific language?

You can do that using the advanced search options: http://www.googleguide.com/sharpening_queries.html I also found this, which might work for you: http://www.searchenginejournal.com/how-to-see-google-search-results-for-other-locations/25203/ Just wanted to add...

Random map generation

Among the many other related questions on the site, there's an often linked article for map generation: Polygonal Map Generation for Games you can glean some good strategies from that article, but it can't really be used as is. While not a tutorial, there's an...

How to prettyprint a JSON file?

The json module already implements some basic pretty printing in the dump and dumps functions, with the indent parameter that specifies how many spaces to indent by: >>> import json >>> >>> your_json = '["foo", {"bar":["baz", null,...

How can I avoid the battery charging when connected via USB?

I have an Android 4.0.3 phone without root access so can't test any of this but let me point you to /sys/class/power_supply/battery/ which gives some info/control over charging issues. In particular there is charging_enabled which gives the current state (0 not...

How to transform given dataset in python? [closed]

From your expected result, it appears that each "group" is based on contiguous id values. For this, you can use the compare-cumsum-groupby pattern, and then use agg to get the min and max values. # Sample data. df = pd.DataFrame( {'id': [1, 2, 2, 2, 2, 2, 1, 1,...

Output of the following C++ Program [closed]

It works exactly like this non-recursive translation: int func_0() { return 2; } int func_1() { return 3; } int func_2() { return func_1() + func_0(); } // Returns 3 + 2 = 5 int func_3() { return func_2() + func_1(); } // Returns 5 + 3 = 8 int func_4() { return...

Making a circle out of . (periods) [closed]

Here's the maths and even an example program in C: http://pixwiki.bafsoft.com/mags/5/articles/circle/sincos.htm (link no longer exists). And position: absolute, left and top will let you draw: http://www.w3.org/TR/CSS2/visuren.html#choose-position Any further...

Should I use a code converter (Python to C++)?

Generally it's an awful way to write code, and does not guarantee that it will be any faster. Things which are simple and fast in one language can be complex and slow in another. You're better off either learning how to write fast Python code or learning C++...

tkinter: cannot concatenate ‘str’ and ‘float’ objects

This one line is more than enough to cause the problem: text="แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒ˜ >> "+2.23+ 'GEL' 2.23 is a floating-point value; 'GEL' is a string. What does it mean to add an arithmetic value and a string of letters? If you want the string label 'แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒ˜...