Okay, the syncing system wasn’t as tricky as I was worried as it would be. I got it up and running in 15 minutes or so and it seems to work just fine. After that I checked to see if I could make one-way platform entities, and it turned out that that wasn’t working properly for a very similar reason: Because it was calculating the previous position by saving it into last x and last y properties at the end of each update, the collisions tested by later entities against earlier entities had the last x and last y of their current, rather than previous, positions. There’s a number of ways I could have tackled this, but I elected to just project the movement backwards from their velocity as their presumed last location so that I didn’t have to untangle another goddamn algorithmic gordian knot.
Anyway. It works. She can stand on them and jump up through the bottom of them and fall through them like platforms. Currently in the middle of a few tweaks to the behaviors to make falling through platforms work a bit smoother, but the fundamental problems are all solved.
Probably the next thing to do is make moving platforms, which will require me to make them impart their velocity to the entity standing on them.