Jumping, launch velocities and rounding errors  The physics
behind a jump in a platformer is pretty simple and something I
must have written a thousand times, but having an AI player jump
and land where it wants to is considerably trickier. My initial
attempt was to string a bezier curve between the start and end
points and just make it follow that - this is easy to do and
very reliable (as it will always get to the exact end point) but
produces unconvincing motion. It really needs to use the proper
physics otherwise it looks out of place.  So if we're using the
proper physics we want to calculate a launch velocity then just
let the simulation do the rest. However finding a suitable
launch velocity isn't easy - there's lots of unknowns and
variables, largely because there's lots of potential jump arcs
which take you between two points. You need to nail down a few
of the variables so that ideally only one solution pops out.
After several failed attempts I've found that specifying the
jump apex gives nice cons