"Unified Theory of Battle Bugs"
#PokemonGO: Before talking about raids, let's first talk about potion feeding.There was one version, where potion feeding got "improved": the process got much smoother. However sometimes it fails completely: your Pokemon are not healed, and your potions are not used. Here's what happened.Your Pokemon storage is completely on the server, and it is updated on your client during regular communication. Every change on your Pokemon thus requires communication, including catching, hatching, powering up, evolve,... and of course healing. Before the improvement, for every potion used, the client communication with the server, server modifies your Pokemon (and bag), returns a success to client, then client plays the animation. After the improvement, the client does not wait for the success signal before it plays animation. So, it got much smoother but sometimes it fails.Now we talk about battles.In a battle, there are so many things that will modify your Pokemon. As a result, the client uses a local copy of your Pokemon, and it is not perfectly synced with server. Also, as some of you may know, the battle is run on a local simulator.There is only one bug, and it happens right at the beginning of a battle.-3 sec start. The battle starts with at most ~177/297 seconds on the timer, no matter how good your phone is, and how good you connection is. Here the simulator starts with 180/300 seconds on the timer, BUT IT DOES NOT RECEIVE THE SIGNAL FROM THE SERVER UNTIL THREE SECONDS AFTER. Only after the client receives the start signal from the server does it allow to send commands (attack, dodge, etc). That is the -3 sec bug. From now on, the server is behind the local simulator by 3 seconds in everything.Energy boucing. Now the battle starts and you spam fast moves, you gain energy from that but then you lose some of it. You continue to spam fast moves and gain energy, but you also keep losing energy.When you use a fast move, the local simulator immediately gives you energy and remove hp from defender. Also, the client tells the server that a fast move is used. However, THE SERVER IS THREE SECONDS BEHIND THE CLIENT. The server tries to correct the simulator with more accurate information, but the information received by the client is from three seconds ago! As a result, you see energy keeps bouncing back and forth.Charge moves. Now you finally have energy for a charge move, you use it. Most of the time it's good, but sometimes it fails.When you press the screen for a charge move, your client will check whether you have enough energy in your simulator. If there is not enough energy on the simulation, for example it has just been corrected by a lower value from the server, the client completely ignore that press. If there is enough energy, the client plays animation, the simulator removes HP from defender, then removes energy from attacker, and the client tells the server that a charge move was used.It could still fail, for example, the defender would faint before receiving damage from that charge move, then the move will not be used, and you'll see the energy will be returned to the attacker after the client receive that information from the server.It could also fail if the attacker has a multiple-bar charge move. After successfully using a charge move, the simulator could be corrected by a higher value of energy (before the charge move was used) from the server, you press to use another charge move, the client plays animation and tells the server, but it gets rejected by the server because there is actually not enough energy.Dodge bug. (There are too many versions of it and I'm not sure about the current situation because I don't dodge.) When you dodge, if the damage is enough to knock out the attacker, it faints. In some older version, if you have enough HP to take full damage and you dodge, you first lose dodge damage, then lose full damage, and finally lose dodge damage again.But it looks like that is no longer the case, dodging seems perfect when you have enough HP for full damage.So the theory is that the 3 sec delay is NOT A BUG, BUT A SOLUTION to this. How is this a solution? A large enough delay means that the first correction will not be performed (it got smoothed), so no correction will be perform at all and it looks like dodging is perfect.Fake death. Sadly, when the attacker does not have enough HP, dodging fails. However, when you try to revive them after the battle, you find out that they are actually still alive!The dodging is actually successful on the server, just like the case where the attacker has enough HP to survive through. So, the attacker only faints in the simulator and in the local copy of the storage, it never fainted on the server! After a update on your local storage is performed, you see the attacker still alive in your storage. (Here the server does not correct the simulator. Why? Because doing so caused the death loop?)Boss HP regen. Bosses regenerate their HP all the time. For example, when the client used a failed charge move (see 3.). However, there is another kind of regeneration that is much more obvious, that is when your whole team faints and rejoin a Tier 3 solo.This is actually another result from the client-server delay. The HP you see is only the HP in the simulator, but when you rejoin after a long pause, it is definitely synced with the server to show its HP on the server. The problem is that the simulator usually over estimate your damage and you never did that damage you thought the boss regenerated. For example, when your previous attacker is fainting and the next attacker is being switched in. The simulator could be already taking HP from the defender even if there's no attacker at all.Time out! Sometimes, you get timed out even the boss has no HP left at all. This is the same as (5.), you never did that much damage as the simulator shows you!Time out! The battle could be still going on the server although we never know, but you cannot do any damage as soon as the timer on the simulator reaches 0. The client simply ignores all the actions and they never get to the server. But you start with battle with 177/297 seconds on the simulator? Yes you lost three seconds. via /r/TheSilphRoad http://ift.tt/2BEmD50
"Unified Theory of Battle Bugs"
Reviewed by The Pokémonger
on
10:35
Rating:
No comments