Saturday, November 17, 2012

Exploits and Bugs Assignment

This was my assignment for the first week of my class and I felt like it made a good blog post so I hope you enjoy!

Pick a game you've played and discuss two bugs or exploits you encountered while playing. You will need to play close attention in order to find some of these bugs, but they are there. Write 250 words with your analysis. In order get full credit the analysis must include:
  • Title, genre, and platform of the game
  • How much time you played in order to discover 2 exploits
  • Full description of the bugs - what happened, when, where, what were you doing
  • Discuss if the bugs are software or design related
  • Suggest a possible solution for the bugs 

                As I began thinking about this assignment I was going over various exploits that I had found and used or decided against using more than particular bugs I had found.  Since the main two things I’m going to describe are exploits I will also include a third encounter with an easily explained bug I stumbled into.

                The first exploit I’ll get into is the simpler of the two and one I discovered completely on my own.  Skyrim is an enormous open world role-playing game which allows you to play in a ton of different ways.  It has more rich content than any other game I’ve played; it follows that it’s also one of the buggier games due to that though.  I play it on the PlayStation 3 and discovered this with my second character, so probably between twenty-five and thirty hours of gameplay.  The exploit is quite simple: when you pay a trainer to teach you, upgrading your skill, the money goes into their inventory and when those trainers are your followers you can access that inventory retrieving that money.  So one of the early followers, Faendal, can train you in archery up to I believe 50 skill level.  You can only be trained five times per level but near the start it doesn’t take much more than that to level up.  Faendal can be you follower and then after you train, ask to trade some things with him and take your money right back.   Not only does this allow you to level up very quickly, you also get a useful, if not main, combat skill upgraded.  Personally, I decided not to use this since it cheapened the game for me.  I tend to feel this way about exploits but for the most part I don’t mind them being in a game.  This one would be a pretty easy to fix one though as it’s a design feature.  You could simply remove the gold from the world entirely when you pay for a trainer though this would slightly lessen immersion since it would just vanish.  A better solution would be to put that money into the same type of inventory that keeps their clothes and extra weapons.  For example, Faendal will always have a set of clothes, a dagger, and a bow no matter how much you take from his inventory.  Then, you could have that gold drop should you choose to kill him.  The inventory you can access could be more of what he’s holding for you.  He wouldn’t likely just give you back all the money he earned from teaching you after all.  The gold could also be reset every so many in game days as well, just like most containers in the game.

I can never decide if he bothers me or not...
Ah well, better than Sven! Bloody Bards -.-
                This next exploit is quite a bit more complicated so I’ll try to keep it simple.  Fire Emblem on the Gameboy Advance is a tactical/strategic role-playing game.  I discovered the feature (as it is intended, just not exploiting it) on my own after about maybe 4 hours in or so the first time I lost a character.  When I restarted the game, it loaded right before the fight and I just lost the character again.  In essence I had discovered the slightly less than random Random Number Generator (RNG from now on).  I didn’t really understand though and only got a better inkling later when I leveled up after a fight and had almost nothing upgrade for my character. I wanted to make sure I hadn’t done something wrong so I looked it up.  I only properly understood with a fair amount of research about it on my part.  Fire Emblem uses a series of numbers previously generated that range from 0 to 99.  Every time there is a random event in the game such as hit chance, critical chance, chance of a special one-hit-KO activating, stats improving at level up, etc. it uses one to two numbers.

The method for exploitation comes from the numbers all having been set up before you start and using the movement paths to figure out if they are generally “high” or “low”.   Say one character can move five spaces.  You set the movement path as one right, one down, two left, and one up.  You have used the max amount of movement to go one space left.  If you move the path one more space up, what path will be drawn?  Will it be up then left or left then up?  The creators decided to use the RNG to determine this.  If the next number is “high” (50-99) it will be left or right first and if it is “low” (0-49) it will be a vertical path first.  So you save the game (it autoaves after every confirmed action) and check movements from which you can get a list of high or low values.  Then you reset the game and you have a general list of all the random rolls you’ll get.  It’s impossible to be perfectly precise but this is still a huge advantage.  In fire emblem, lower is better.  If the chance of getting a crit is 25 percent then a value below 25 will succeed.

To use this knowledge you can either figure out the projected battle outcomes or use it to dramatically improve your stat gains.  The latter is more interesting and the only thing I considered using it for.  First, get a character close to level up and next to an enemy they can kill.  Then make a list of high and low values from the paths and find a string of mostly low values (7 is the best since that is how many stats might be improved).  Then you work backwards; you attack first, the hit chance is calculated with two numbers in every game released outside Japan, and if you hit, then there is a number for the critical chance.  If the enemy survives then they get the same thing (if they miss, there isn’t a number used for the critical roll) before a second attack that once again uses 3 numbers.  So if you are killing the enemy with one move it will only take the 3 numbers before.  If, however, you are killing them after their retaliation then it will be seven to nine numbers before (depending on if you miss the first attack and if they hit). Once you figure that out, you load up the save before you calculated the numbers and use the same trick of the path to use up the numbers before where the attacks should start.  After all your work, the character will level up and get a large number of their stats increased making them much more powerful than they would probably be.

This would make me smile.
Personally, I find this exploit to be not only a ton of work but not important.  I find it more interesting to have the random aspects of the leveling up prevalent.  It increases both excitement and replayability for me.  If the makers wanted to take this capability out of the game there are a few methods I thought up.  You could have the numbers recalculated every time you load up the game but then people could do something similar where they just keep reloading to get a good outcome.  A much better and simpler method would be to have the paths prioritize going either horizontal or vertical (I’m partial to vertical).  Then there would be no way to determine what the RNG numbers are even generally and it would be as if the game was generating a number every time.

Now, as I mentioned, I did want to do a third one quickly on the bug I found a while back.  My sister and I were playing Lego Harry Potter, an action adventure game, on PlayStation 3 when we encountered a game-breaking glitch.  We were playing very thoroughly and it was around 75 percent of the way through so we had probably played somewhere around 15 hours.  This was a software glitch, unlike the last two exploits.  We jumped into a trapdoor, down into a secret area.  It autosaved as we entered that place but after solving the puzzle, the thing that was supposed to bounce us up and out didn’t actually get us out, just up.  No matter what we did, we couldn’t leave that small room and since it had saved, there was no way to continue.  We had to quit and eventually play back up to that point.  They did fix this but at the time it was completely awful.  To fix it, I assume they fixed either the launcher or the room exit location so that it would actually get you out when it was supposed to.

Sirius only kind of dies. Cause... He's a Lego.

All RNG details were obtained from:
                “Random Number Generator FAQ” by Misael Villegas

No comments:

Post a Comment