Sorry to jump in, but regarding the edge jump issue, it might be related to not having input buffering and a coyote timer implemented. Without those, the character usually has to be precisely grounded to register a jump. Adding them can allow jumps to register slightly before landing and shortly after stepping off an edge, which tends to make platforming feel much smoother and more responsive. I had similar feedback when I made my first platformer, so I thought I’d share in case it helps.