Two things were quietly spoiling the ride, and neither was where we looked first.
The fans. On a fast screen the game was drawing the lake 120 times a second at full retina resolution, nearly half a billion pixels a second, for a boat doing nine kilometres an hour. Capping the frame rate and the resolution cut the work by about three and a half times, and it looks the same. We also stopped redrawing the corner map pixel by pixel every single frame, which it had no reason to do.
The rubber band. Sailing with the throttle open, you would get yanked backwards every few seconds. The client was correctly guessing where your boat would be, then throwing that guess away whenever the server checked in. It now replays the moves the server has not seen yet, eases the correction into place rather than snapping it, and the server keeps your inputs in a queue instead of dropping the ones that arrive together.
MeerBeter Vinkeveen Vice, meerbeter.com
