What does Celandro do when his wife is out of town?

Celandro likes to look at frame by frame videos of Pokemon Go raids. What is a frame? Its 1/30th or 1/24th or some other fraction of a second of a video. If you pause a video, you see 1 frame. In Youtube you can move forward 1 frame by hitting the ‘.’ key and backwards with the ‘,’ key. I prefer to look at raw unedited mp4s in quicktime and use the arrow keys For hours on end. In fact 4 hours for 1 video in this case. No, I don’t know why I’m this obsessed over milliseconds, but I suppose someone has to be. I kept hoping someone else would do this research for me but almost as shockingly as Pokemon Go Raids having bugs, no one volunteered. So my wife heads out of town to visit her twin sister and I’ve got nothing better to do then to fill out spreadsheets with frame counts. Yes that was sarcasm.

Methodology 1 – Energy bar

Turns out the energy bar, for all its flaws, is a great way to count time between attacks. The energy bar moves for only two reasons: one you took damage, or two: you started an attack. A quick attack adds energy, a special attack removes energy. To determine how long between attacks, you simply count the number of frames in a video and divide by the number of frames per second. To find the lag between attacks, you take that attack delay and subtract the move duration. If there was no lag, the number would be 0. If there was good lag correction, the number would average to 0. And if that were true, you’d gain around 25 seconds on your time to win and I wouldn’t be spending hours on a Monday night trying to decide wether that was 33 frames or 34 frames. But I digress. There are issues with energy bars, and the main issue is energy rubber banding. This effect makes it look like you have energy and then you lose it and then you gain it back again and then you lose it. I’ll leave the theories for what is going on for the end, but let’s just say that this is annoying but bearable.

Methodology 2 – The Combat Log Never Lies

While using the energy bar for counting, I was having some extremely strange effects when attempting to determine the death lag. It turns out that the energy bar moves around sporadically immediately after death and then energy rubber banding occurs and things get quite confusing. Attempts to count the frames between a death and the next attack was confusing and not consistent between deaths at all. At some point in the hours of clicking the arrows on the keyboard, I noticed that the combat log on the right side has very interesting behavior. The log moves up to show ‘Super Effective’ exactly when the damage from a move should apply! So Wild Charge with a combat time of 600ms and a damage applied time of 300ms will gain energy, then get super effective in the combat log 300ms later then gain energy again 300 + lag milliseconds later. Using the time between when the color changed on the HP bar for death and the movement of the combat text gave very consistent results! Hurray! If anyone is reading this far and hasn’t skipped ahead to the pretty pictures I commend you, and trust me when I say I will get to the point.

Logs are funny things. They are simply lines of text that end up in a file somewhere and often scroll through ignored by everyone. Everyone but the accursed developer who needs to comb through them to try and figure out wtf is going on, that is. Logs are extremely important for debugging purposes and every developer worth their salt uses them specifically. What is a combat log good for a Pokemon Go Developer? Showing exactly what the server has sent the client! This is the source of truth. No one trusts the clients. Clients can be hacked. Server sends data. Put data in log. Trust the log. If the log is wrong, you have no way to debug a problem.