Erst einmal ist dein Algorithmus unverständlich beschrieben. Was ist z.B. zu verstehen unter "Graph initialisieren", was sind "relevante Nodes", was ist "Typ A", was ist überhaupt eine "Plattform", wie ist "nächstbeste Plattform" definiert? Was bedeuten überhaupt die Knoten und Kanten in dem Graph, den du erzeugen willst? Inwiefern ein leicht abgewandelter A*? Warum Leben abziehen bei einer Kollision? Kollision womit überhaupt? Was ist mit "Ziel" gemeint (scheinbar ja nicht das Ende des Levels)?
Und was bedeutet es überhaupt ein Jump and Run "perfekt" zu lösen? Perfekt in Bezug worauf? Benötigte Zeit? Zurückgelegte Wegstrecke? Möglichst wenig Sprünge? Punktzahl?
Dann berücksichtigst du viele typische Elemente eines Jump and Runs gar nicht: z.B. Gegner, Trägheit bei der Bewegung bzw. die Möglichkeit Anlauf zu nehmen sowie die Steuerung der Sprunghöhe.
Würde man das Problem korrekt als Graph umsetzen, wäre dieser wahrscheinlich unfassbar groß und könnte nicht in annehmbarer Zeit verarbeitet werden.