Pathfinding for Platformers


Contact Publisher


Pathfinding for Platformers is a pathfinding solution for 2D sidescrolling platformers.

The project allows for characters which can calculate a path between two points in a level and then run, jump and wall-jump their way to their destination. The target destination can be changed dynamically to allow for characters to follow other characters, patrol certain areas, randomly move around the level, etc...

This project is perfect for people wanting to create platformer enemies which are a little more interesting than the usual walk-back-and-forth enemies that we are used to in platformer games.


  • Basic platforming engine
  • A* Pathfinding between 2 points
  • Automatic or manual node placement
  • Danger zone avoidance
  • Paths including wall-jumping
  • Paths using screen-wrapping
  • "Reaction time" to support easier or harder AI
  • Test mode to show nodes, connections & paths
  • Extensive user manual in "included files"
  • Guide on how to integrate with my Platformer Engine

Windows Demo


Check out my other assets here: https://marketplace.yoyogames.com/publishers/584/rupert-reckless

End User Licence Agreement (EULA).

Changes in 1.0.1

Fixed Minor Memory Leak

Version 1.0.1. Published October 27, 2016

Created with GameMaker: Studio v1.4.1763

Age Rating: 4+

Average Rating

Your review

You can only review assets you've bought.


Brandon M 20 September 2017

Only works with 16x16 tiles

All scripts are set up to work with publisher's other software to make platforms. You cannot have any customization, you cannot change tile size otherwise it will not work. Tried to edit code to fix this but it is a mess.


Michael M 18 September 2017

Great tutorial

Very well commented, easy to understand.


Eli M 10 January 2018

unable to integrate with platformer engine

the pathfinding script itself looks excellent, but I purchased it specifically to integrate with the Platformer Engine like it's advertised to be able to. After following the instructions in the included PDF the objCharacter does not move, and sporadically I get this error:

DoAdd :2: undefined value
at gml_Script_get_path (line 94) - G = connections[? neighbour] + distances[? current_node];

If the developer can address this issue which I and others have had I will change to 5 stars


Anonymous 27 April 2017


Good. but in certain cases I get this error, I got it in the my game at first, but I was able to duplicate it with the game asset this comes with so that is a bug. which can be done by putting wide gap between two pillars and have him move from top of pillar to other

update: so I've diagnosed the error to be with the wall nodes creator I think? When I manually place the wall nodes I don't get the error. it definitely has something to do with the wall nodes though.
action number 4
of Step Event2
for object objCharacter:

DoAdd :2: undefined value
at gml_Script_get_path (line 94) - G = connections[? neighbour] + distances[? current_node];
stack frame is
gml_Script_get_path (line 94)
called from - gml_Script_pathfinder_step (line 148) - get_path(x+hsp*2, (bbox_top+bbox_bottom)/2, target_x, target_y);
called from - gml_Object_objCharacter


Samuel M 20 April 2017

Fails with overhangs

I get an error when I use this for general sidescrolling terrain.


Wei C 05 March 2017


Awesome pathfinding engine that helped saved lots of time. Would be better if slopes are supported as my characters seems to get stuck while going up.

Found a quick and dirty way to move on slopes. In the End Step script of objObject, replace the horizontal movement code with this:

if (hsp != 0)
cx += hsp;
var ihsp = floor(cx);
cx -= ihsp;
var shsp = sign(ihsp);

if (place_meeting(x + sign(shsp), y, oParSolid) && !place_meeting(x + sign(shsp), y - 1, oParSolid))
y -= 1;

if (place_meeting(x + sign(shsp), y + 2, oParSolid) && !place_meeting(x + sign(shsp), y + 1, oParSolid))
y += 1;

if (!place_meeting(x + sign(shsp), y, oParSolid))
x += sign(shsp);
hsp = 0;


Kristofer A 21 January 2017


I was expecting a more polished product for the $20 I spent on this, but unfortunately this code is completely inflexible and inefficient for any project that isn't the author's platformer engine. Even just changing the default sprite to something slightly larger completely broke the pathfinding and required massive parts of code to be rewritten to account for sprite sizes that didn't conform to the default 16x16 sprite the author used.

Overall a good effort, but not worth $20.


Andreas M 06 March 2016


This review was left for a previous version of this asset.


Alexander B 12 January 2016


The pathfinding works great and i only had a small problem but i fixed it very fast
loved it

This review was left for a previous version of this asset.


Anonymous 27 November 2015

Impressive Pathfinding

You just made my day wlewis! Excellent instructions in manual. Looking forward to more advanced addons like this one :)

This review was left for a previous version of this asset.


Anonymous 26 November 2015


I like all wlewis' content in the marketplace.
The pathfinding for platformers is simply perfect!!
Extensive documentation, high quality code, comments and a fully functional example.
Congratulations to the author for developing this!

This review was left for a previous version of this asset.

Package contents

Total size 291 KB

Pathfinding for Platformers.extension.gmx 4.94 KB Pathfinding for Platformers
Backgrounds datafiles Fonts Objects Rooms Scripts Sprites
icoArrow.sprite.gmx 674 Bytes icoControl.sprite.gmx 676 Bytes icoHUD.sprite.gmx 672 Bytes icoParent.sprite.gmx 675 Bytes sprArrows.sprite.gmx 677 Bytes sprBlock.sprite.gmx 674 Bytes sprCharacter.sprite.gmx 679 Bytes sprDust.sprite.gmx 873 Bytes sprFont.sprite.gmx 4.98 KB sprNode.sprite.gmx 673 Bytes sprOrangeZone.sprite.gmx 679 Bytes sprPixel.sprite.gmx 670 Bytes sprPlatform.sprite.gmx 676 Bytes sprRedZone.sprite.gmx 676 Bytes sprWallJumpNode.sprite.gmx 681 Bytes images
icoArrow_0.png 135 Bytes icoControl_0.png 113 Bytes icoHUD_0.png 154 Bytes icoParent_0.png 117 Bytes sprArrows_0.png 165 Bytes sprBlock_0.png 82 Bytes sprCharacter_0.png 97 Bytes sprDust_0.png 79 Bytes sprDust_1.png 89 Bytes sprDust_2.png 84 Bytes sprDust_3.png 91 Bytes sprDust_4.png 78 Bytes sprFont_0.png 81 Bytes sprFont_1.png 76 Bytes sprFont_10.png 91 Bytes sprFont_11.png 87 Bytes sprFont_12.png 86 Bytes sprFont_13.png 81 Bytes sprFont_14.png 84 Bytes sprFont_15.png 85 Bytes sprFont_16.png 87 Bytes sprFont_17.png 78 Bytes sprFont_18.png 89 Bytes sprFont_19.png 87 Bytes sprFont_2.png 80 Bytes sprFont_20.png 79 Bytes sprFont_21.png 81 Bytes sprFont_22.png 85 Bytes sprFont_23.png 76 Bytes sprFont_24.png 83 Bytes sprFont_25.png 85 Bytes sprFont_26.png 90 Bytes sprFont_27.png 87 Bytes sprFont_28.png 83 Bytes sprFont_29.png 83 Bytes sprFont_3.png 81 Bytes sprFont_30.png 83 Bytes sprFont_31.png 81 Bytes sprFont_32.png 85 Bytes sprFont_33.png 87 Bytes sprFont_34.png 84 Bytes sprFont_35.png 83 Bytes sprFont_36.png 87 Bytes sprFont_37.png 84 Bytes sprFont_38.png 80 Bytes sprFont_39.png 84 Bytes sprFont_4.png 80 Bytes sprFont_40.png 80 Bytes sprFont_41.png 82 Bytes sprFont_42.png 83 Bytes sprFont_43.png 85 Bytes sprFont_44.png 83 Bytes sprFont_45.png 85 Bytes sprFont_46.png 81 Bytes sprFont_47.png 84 Bytes sprFont_48.png 84 Bytes sprFont_49.png 84 Bytes sprFont_5.png 80 Bytes sprFont_50.png 93 Bytes sprFont_51.png 87 Bytes sprFont_52.png 81 Bytes sprFont_53.png 83 Bytes sprFont_54.png 78 Bytes sprFont_55.png 81 Bytes sprFont_56.png 78 Bytes sprFont_57.png 74 Bytes sprFont_58.png 76 Bytes sprFont_59.png 87 Bytes sprFont_6.png 76 Bytes sprFont_60.png 87 Bytes sprFont_61.png 83 Bytes sprFont_62.png 84 Bytes sprFont_63.png 89 Bytes sprFont_64.png 83 Bytes sprFont_65.png 87 Bytes sprFont_66.png 84 Bytes sprFont_67.png 81 Bytes sprFont_68.png 85 Bytes sprFont_69.png 92 Bytes sprFont_7.png 76 Bytes sprFont_70.png 78 Bytes sprFont_71.png 82 Bytes sprFont_72.png 80 Bytes sprFont_73.png 82 Bytes sprFont_74.png 85 Bytes sprFont_75.png 87 Bytes sprFont_76.png 80 Bytes sprFont_77.png 83 Bytes sprFont_78.png 86 Bytes sprFont_79.png 84 Bytes sprFont_8.png 74 Bytes sprFont_80.png 84 Bytes sprFont_81.png 84 Bytes sprFont_82.png 85 Bytes sprFont_83.png 86 Bytes sprFont_84.png 81 Bytes sprFont_9.png 78 Bytes sprNode_0.png 95 Bytes sprOrangeZone_0.png 82 Bytes sprPixel_0.png 70 Bytes sprPlatform_0.png 82 Bytes sprRedZone_0.png 82 Bytes sprWallJumpNode_0.png 98 Bytes

What is the issue?

Back to Top