Easter Eggs

Started by
15 comments, last by Hawkblood 11 years ago

Imagine that you're hiding an Easter egg in your game. Perhaps it's some text or an image that pops up after doing some obscure set of tasks. Whatever the case, you want this Easter egg to remain hidden for a long time. Now, you're worried that someone will discover it by going through the game's resources or even by using tools to search through and modify the game's values in the memory (or by going through the compiled program file). What kind of countermeasures would you employ in your code to ensure (as much as possible) your Easter egg would not be found by illegitimate means?

Advertisement

Make the easter egg data be assembled from pieces of real data legitimately used elsewhere in the game.

And here I was thinking you were talking about actual easter eggs, since Easter was yesterday. happy.png

Perform some sort of super simple encryption on just that asset (if it's done on all assets, the file crackers will quickly realize), like XORing all it's bytes with some magic number.

Store it in a non-obvious location, like within a string table instead of a file archive.

None. Easter eggs just aren't important enough in the development process for me to spend extra time and effort trying to hide them. You'd be better served focusing your efforts on the 99.99% of your game that isn't Easter eggs, in my opinion. Introducing some convoluted scheme not only eats valuable time and effort, but it also introduces new vectors for bugs; possibly insidious ones, since the convoluted code only touches such a tiny percentage of the overall game. It just doesn't make practical sense to me to do that.

Hiding an Easter egg is pretty much the same as hiding CD key DRM or any other code that has to remain secure on a client machine. That is to say, it simply won't remain secure, not if someone is interested enough to crack it. Unless you do online authentication/DRM and store the Easter eggs on server, there just isn't any way to keep them from being cracked. All the code that the program needs to unlock the Easter egg is right there in the executable, open to any hacker with the motivation to crack it.

None. Easter eggs just aren't important enough in the development process for me to spend extra time and effort trying to hide them.

Well, this is only a semi-serious question meant to be purely theoretical without taking practicalities into account. I'm just interested in hearing what schemes people can think up to hide an Easter Egg in the code. happy.png

Well, it takes time to analyze resources unless you stored them in plain readable formats (i.e. mesh formas that there are already known viewers, png files, you get the idea).

So if someone finds your easter egg through hacking, it would've took him some time by then. If he's the first one, everyone's going to be "holy cow, I did not notice it!?!?" reinstall the game, and go see to confirm it. The easter egg still did it's job.
One easter egg can be hidden and non_crackable until somone finds it as long as you don't use ovbious things like calling the function by name and calling it "onfindeasteregg" or something else ovbious. It is insanely hard to find something if you don't know where to look for it. They could find them all though if they knew where one easter egg was and you implimented all your easter eggs in the same way. The only way I can see them being uncrackable is if your used a one way encryption on the data. Such as if you had to be at a certain XYZ for an egg to active, you could md5 the xyz and then check to see if they are at the right spot every move. But that also produces a lot of worthless overhead.

1. Implement them on the server side

or

2. Add them in an update, and expect people to find it before anyone has time to crack it (or before anyone even realizes that there even exists something crackable in the update)

o3o

Hide it through obscurity. First off, people won't even know to be looking fro an Easter egg unless you tell them. And second, there is typically over a gig of data in a large game so your Easter egg takes up only a small portion of that. Just leave as few clues as possible that there is an Easter egg in there.




Just leave as few clues as possible that there is an Easter egg in there.


One time, someone on our team was using (unlicensed) star wars imagery as placeholders, which were somehow left in he data archives after the code was removed (a la 'hot coffee'). It only took a week for the hardcore players to crack our archive format and find these files, and then go and start all sorts of speculation/rumor about a star wars easter egg that really didn't exist. We didn't put out an official explanation, because we didn't want to draw Lucas' attention to our slip up, lest they sue.

This topic is closed to new replies.

Advertisement