Jump to content

  • Log In with Google      Sign In   
  • Create Account

Easter Eggs


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
16 replies to this topic

#1 Ludus   Members   -  Reputation: 970

Like
0Likes
Like

Posted 01 April 2013 - 08:16 PM

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?

 



Sponsor:

#2 Servant of the Lord   Crossbones+   -  Reputation: 19564

Like
4Likes
Like

Posted 01 April 2013 - 08:49 PM

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


It's perfectly fine to abbreviate my username to 'Servant' rather than copy+pasting it all the time.
All glory be to the Man at the right hand... On David's throne the King will reign, and the Government will rest upon His shoulders. All the earth will see the salvation of God.
Of Stranger Flames - [indie turn-based rpg set in a para-historical French colony] | Indie RPG development journal

[Fly with me on Twitter] [Google+] [My broken website]

[Need web hosting? I personally like A Small Orange]


#3 Hodgman   Moderators   -  Reputation: 30388

Like
2Likes
Like

Posted 01 April 2013 - 08:53 PM

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.



#4 JTippetts   Moderators   -  Reputation: 8493

Like
8Likes
Like

Posted 01 April 2013 - 08:57 PM

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.

#5 Ludus   Members   -  Reputation: 970

Like
1Likes
Like

Posted 01 April 2013 - 09:08 PM

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



#6 Matias Goldberg   Crossbones+   -  Reputation: 3399

Like
1Likes
Like

Posted 01 April 2013 - 09:39 PM

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.

#7 MichaelNIII   Members   -  Reputation: 195

Like
1Likes
Like

Posted 02 April 2013 - 03:43 AM

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.

#8 Waterlimon   Crossbones+   -  Reputation: 2565

Like
1Likes
Like

Posted 02 April 2013 - 05:04 AM

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


#9 landagen   Members   -  Reputation: 376

Like
0Likes
Like

Posted 02 April 2013 - 07:49 AM

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.





#10 Hodgman   Moderators   -  Reputation: 30388

Like
5Likes
Like

Posted 02 April 2013 - 08:15 AM


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.

#11 frob   Moderators   -  Reputation: 21331

Like
3Likes
Like

Posted 02 April 2013 - 11:40 AM

Most companies have written policies about those Easter Eggs.  At most major companies adding unapproved features is grounds for termination.

 

As Hodgman pointed out there is a huge potential for legal problems.  Hot Coffee was a big one.  Another bullet that was fired and missed was the lawsuits against EA by Jack Thompson claiming that The Sims 3 had explicit content when the nudity blur was removed and other cheat codes were entered; lawyers reviewed all the images in the game and found none.  Imagine the backlash if a single modeler had thought "this would be funny" and included something explicit.  Outside of games, Microsoft has been bitten several times; from the unauthorized flight simulator in excel making it fail government certifications, to the "volcanoes" in the 3D text screen saver getting reclassified from a feature to a bug.

 

From a design perspective it often does not make sense, as JTippets pointed out.  You can certainly design in "unexpected moments of delight".  You can also design in quests that are difficult to complete and very few players will see.  The 100%'ers like to have some content that is difficult to reach, but that does not make it an Easter Egg.

 

It is unwise to release any untested material.  Adding a hidden feature without buy-in from QA is asking for trouble.

 

 

Considering those things, I wouldn't need any countermeasures because they wouldn't exist.


Edited by frob, 02 April 2013 - 11:42 AM.

Check out my personal indie blog at bryanwagstaff.com.

#12 MichaelNIII   Members   -  Reputation: 195

Like
1Likes
Like

Posted 02 April 2013 - 04:45 PM

You do realize a lot of easter eggs are known and well tested by the companies that own the game/program? You think google doesn't know if you ask its maps how to get to mordor, it will warn you that one doesn't simply walk into mordor. I do agree if your the programmer trying to hide something in it - but if as a whole your group wants undocumented features then there isn't too much to worry about with weird bugs. Hot coffee was just stupid, they went to release it - someone said that's too inappopriate - remove it. And someone decided it would be a lot easier to disable it then to remove it entirely.

#13 Ludus   Members   -  Reputation: 970

Like
1Likes
Like

Posted 03 April 2013 - 12:26 AM

Most companies have written policies about those Easter Eggs. At most major companies adding unapproved features is grounds for termination.

 

Don't be such a party pooper tongue.png

Who says Easter Eggs are sneaked in by lone programmers/artists? Many developers (or at least the ones who actually have fun making games) love to hide things in their games for the player to find. Rareware is perhaps one of greatest examples of this. Their games (especially the ones for the N64) were full of oddities that could only be found by going off the beaten path and doing some amount exploration and experimentation. These oddities range from cryptic messages in the text and on textures, to locations and objects that are out of reach, to bits and pieces of the game that were left over from the beta development period. These kinds of oddities and Easter eggs don't serve some ephemeral purpose - they make the determined player want to search every inch of your game and to do a lot of investigative research into the making of your game. As an example of this, the classic game "GoldenEye 007" is still being searched for hidden content to this very day. Just recently (some fifteen years after the game's release) it was discovered that within the game's code there exists a (nearly) fully functional ZX Spectrum 48x emulator, with ten games included.

This kind of hidden content is something I love seeing in video games happy.png



#14 Hodgman   Moderators   -  Reputation: 30388

Like
1Likes
Like

Posted 03 April 2013 - 03:31 AM

Speaking of the above goldeneye case -- it's famous multiplayer mode was never meant to exist. Management refused to allocate dev time for a MP mode, so two rogue programmers secretly worked on it for a month of their time in-between other tasks. Without their risk-taking and insubordination, it wouldn't be appearing on 'best games of all time' lists anywhere near as often ;)
That said, it depends on your organization. There's a lot of companies that would've fires these guys and not shipped the MP mode...

#15 frob   Moderators   -  Reputation: 21331

Like
0Likes
Like

Posted 03 April 2013 - 01:22 PM

Yes, it is all good that they put those things in GoldenEye 007, .... but it did manage to ship two years after the movie it was supposed to be concurrent with.

 

So yeah, if bonus features and easter eggs are more important than shipping dates, I suppose you can add bonus features 'til your heart is content.  Just like DNF.


Check out my personal indie blog at bryanwagstaff.com.

#16 Ludus   Members   -  Reputation: 970

Like
0Likes
Like

Posted 03 April 2013 - 02:30 PM

Yes, it is all good that they put those things in GoldenEye 007, .... but it did manage to ship two years after the movie it was supposed to be concurrent with.

 

A lot of the development time was spent going through design concepts and creating the game engine from the ground up. Not to mention the planning for the game began the same year as the movie was released. Today, most games based on film franchises are in development well before the film's release, and development time is saved by using some existing game engines and by using formulaic game design. In any case, if it takes an extra year or two to create one of the greatest (and best selling) games of all time, then so be it. Of course, with the strict guidelines most game publishers enforce today, this is an unlikely scenario.

 

One of the reasons why I enjoy seeing Easter eggs and hidden content in video games is because it shows that the developers had fun working on the game and that they wanted to include things the players would be talking about for years to come. When you still have a large community of gamers playing, discussing, and finding new details about your game after fifteen years, that's when you know you've made a great game.


Edited by Ludus, 03 April 2013 - 03:29 PM.


#17 Hawkblood   Members   -  Reputation: 723

Like
0Likes
Like

Posted 03 April 2013 - 08:43 PM

Write it into your code using obscure variable names. Don't put it into a resource file and the majority of people won't be able to change it or even find it until your program lets them. No safe is actually safe-- which kinda makes the word "safe" an oxymoron. Don't worry about the few people out there that will hack/exploit your game. The people that want to have a rich and full gaming experience won't look too hard behind the curtain anyway.

 

So, to sum up, JTippetts is correct. Don't worry about it-- you'll just waste valuable development time.






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS