I tried a bunch of simple hack-fixes: overlapping the colliders slightly, changing some values in Unity's Physics Manager, and even went as far as scaling everything in the game up 10x, thinking it was just a result of the tiny-ness of the cubes. None of these worked. Increasing the accuracy of the physics solver helps, but this is a very physics heavy game, and I can't afford the performance hit.

I had two options: remove all the box colliders and use a single mesh collider, or remove rigid body based movement system and write a character controller.

I didn't want to rewrite all my movement stuff, since I had spent a lot of time finding the perfect amount of acceleration & friction, so I opted to try to merge the static cubes into a single mesh.

This didn't solve the problem either. Even the vertices in a mesh can cause this to happen. Blast!

I figured at this point that lots of other people must have had this problem. They have, and the solution seemed to be to write a custom character controller with controlled collision resolution.

Ok, I've seen this coming for a while now. Writing a kinematic character controller will not only grant me more precise power over my characters movement and collision resolution, but will also enable fine grained network synchronization if I decide to go that route in the future.

The basic algorithm of a kinematic character controller is this: