Physics: Implement “stair-climbing” collision
When the character collides with a small bump in the ground, it should be shifted upward instead of stopping, so that voxel “slopes” can be climbed without jumping. (Possibly we should also generalize this to all axes so that bumping a wall corner becomes going around it; I'm not sure whether that would feel good or not.)
This has been blocked on trying to get push-out (collision response to already-intersecting objects) to work right for voxel blocks at all. (Right now it is disabled, so characters can fall into blocks if the initial collision detection doesn't get the right answer.)
Given the amount of trouble I've had debugging collision response, I may want to integrate a physics library, such as rapier, which will also get us other features like collision between characters (or other moving bodies we introduce) but will also add design constraints, like figuring out how to express stair-climbing behavior using the tools it gives us, and needing to build an explicit collision shape for the world around a character.
Commit 2b9068bbfed7a2c9549c7aee14efecd9f4e858b4 added a new collision algorithm escape_along_ray which should be able to provide better push-out and also assist with stair climbing. It is not yet free of bugs but I believe it is far closer to correctness than previous work.