From 863e998f8baeed6a66327675cb79463a3a5048b3 Mon Sep 17 00:00:00 2001 From: Justin Young <62815737+jyoung4242@users.noreply.github.com> Date: Mon, 20 May 2024 00:46:43 -0400 Subject: [PATCH] docs: Dijkstra path finding blog post (#3069) * pathfinding part 1 * updated author tag * fixed alt texts, fixed doube algorithm, modified quick iteration --- .../img/image-1.png | Bin 0 -> 22694 bytes .../img/image-2.png | Bin 0 -> 20084 bytes .../img/image-3.png | Bin 0 -> 8406 bytes .../img/image-4.png | Bin 0 -> 8285 bytes .../img/image-5.png | Bin 0 -> 8386 bytes .../img/image-6.png | Bin 0 -> 8484 bytes .../img/image-7.png | Bin 0 -> 8599 bytes .../img/image-8.png | Bin 0 -> 38625 bytes .../pathfindingpart1.md | 157 ++++++++++++++++++ 9 files changed, 157 insertions(+) create mode 100644 site/blog/2024-05-19-pathfiinding-part1/img/image-1.png create mode 100644 site/blog/2024-05-19-pathfiinding-part1/img/image-2.png create mode 100644 site/blog/2024-05-19-pathfiinding-part1/img/image-3.png create mode 100644 site/blog/2024-05-19-pathfiinding-part1/img/image-4.png create mode 100644 site/blog/2024-05-19-pathfiinding-part1/img/image-5.png create mode 100644 site/blog/2024-05-19-pathfiinding-part1/img/image-6.png create mode 100644 site/blog/2024-05-19-pathfiinding-part1/img/image-7.png create mode 100644 site/blog/2024-05-19-pathfiinding-part1/img/image-8.png create mode 100644 site/blog/2024-05-19-pathfiinding-part1/pathfindingpart1.md diff --git a/site/blog/2024-05-19-pathfiinding-part1/img/image-1.png b/site/blog/2024-05-19-pathfiinding-part1/img/image-1.png new file mode 100644 index 0000000000000000000000000000000000000000..e6aae3ab099914aa0bc147bed4ada5cf2cfbb83b GIT binary patch literal 22694 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 z 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 Y;m)v91_*qH+AU-vH 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%0A#hECOfZh0p)UT6Dsu zJk)o|&#a_r#-Qfxj+V07{_~BYBUc{4Ls2HZvHob8sI-GSb!pHW>x-iD`*v6?)8nxO zo@8`vVv8U!?4pE?pPie2|9rW>FKE;COtXuYAWy}pp={W63X)xU`B3?z?3)K|`r95I zu72`oVvMG?W&S*SgQ6DTXqnxs)vu2W0X;V-O89xr!WDb2+yonw1w7$prd|2GH4&RH z+Vp$-Oj@F*yCe^|!C#{B;0&vE5ASSL4l4T75u>4NcpQ4R({#JYyJw1BE20y-S&wKot0?W(NeK9AS~|~Q^)&-lQ($Q?3p4e`ok|Lz4mqu zaBNslGYxng z0jOE>S>l3rx3`L(3n&d1rUFlMdVH$p{-;glb*h%X`8?kJW8QRo``=sNb3Y<&o?JP7 z+Nf(=cAouJ1sp#1dwa{{__kb?%iGVsDq0-*nByKeO&1D2U?`Lakr4J^ fBo{QD_|IN{zavjCI9mjGEE|KTtDnm{r-UW|mbzGD literal 0 HcmV?d00001 diff --git a/site/blog/2024-05-19-pathfiinding-part1/img/image-3.png b/site/blog/2024-05-19-pathfiinding-part1/img/image-3.png new file mode 100644 index 0000000000000000000000000000000000000000..2b2e6ce300fe879c67abfc661cb2b840e1038526 GIT binary patch literal 8406 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 literal 0 HcmV?d00001 diff --git a/site/blog/2024-05-19-pathfiinding-part1/img/image-4.png b/site/blog/2024-05-19-pathfiinding-part1/img/image-4.png new file mode 100644 index 0000000000000000000000000000000000000000..ea0f7e91fa3b50ab75bc4f7f5cf51c832ca0c446 GIT binary patch literal 8285 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 KU9R;Y^uGY5^bB|a literal 0 HcmV?d00001 diff --git a/site/blog/2024-05-19-pathfiinding-part1/img/image-5.png b/site/blog/2024-05-19-pathfiinding-part1/img/image-5.png new file mode 100644 index 0000000000000000000000000000000000000000..772da2132e21e2941a6fb646406b8a74ae15efb1 GIT binary patch literal 8386 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 literal 0 HcmV?d00001 diff --git a/site/blog/2024-05-19-pathfiinding-part1/img/image-8.png b/site/blog/2024-05-19-pathfiinding-part1/img/image-8.png new file mode 100644 index 0000000000000000000000000000000000000000..ce758bd48842138d05a272d981501b0064d433f0 GIT binary patch literal 38625 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 literal 0 HcmV?d00001 diff --git a/site/blog/2024-05-19-pathfiinding-part1/pathfindingpart1.md b/site/blog/2024-05-19-pathfiinding-part1/pathfindingpart1.md new file mode 100644 index 000000000..9c2116bd0 --- /dev/null +++ b/site/blog/2024-05-19-pathfiinding-part1/pathfindingpart1.md @@ -0,0 +1,157 @@ +--- +slug: Pathfinding Algorithms Part 1 +title: Pathfinding Part 1 with Dijkstra's Algorithm +authors: [justin] +tags: [dijkstra pathfinding graph] +--- + +One of the most common problems that need solved in game development is navigating from one tile to a separate tile somewhere else. Or +sometimes, I need just to understand if that path is clear between one tile and another. Sometimes you can have a graph node tree, and +need to understand the cheapest decision. These are the kinds of challenges where one could use a pathfinding algorithm to solve. + +![Image of pathfinding demo](./img/image-1.png) + +[Link to Pathfinding Demo](https://excaliburjs.com/sample-pathfinding/) + +## Pathfinding, what is it + +Quick research on pathfinding gives a plethora of resources discussing it. Pathfinding is calculating the shortest path through some +'network'. That network can be tiles on a game level, it could be roads across the country, it could be aisles and desks in an office, +etc etc. + +Pathfinding is also an algorithm tool to calculate the shortest path through a graph network. A graph network is a series of nodes and +edges to form a chart. For more information on this: [click here](https://www.google.com/search?q=Graph%20Thoery) + +For the sake of clarity, there are two algorithms we specifically dig into with this demonstration: Dijkstra's Algorithm and A\*. + +COMING SOON +We study A\* more in Part 2 + +## Quick History + +### Dijkstra's Algorithm + +Dijkstra's Algorithm is a formula for finding the shortest path through a graph that presents weighting (distances) between +different nodes. The algorithm essentially dictates a starting node, then it systematically calculates the distance to all other nodes +in the graph, thus, giving one the ability to find the shortest path. + +![Graph Network](./img/image-2.png) + +Edsger Dijkstra, was sipping coffee at a cafe in Amtserdam in 1956, and was working through a mental exercise regarding +how to get from Roggerdam to Groningen. Over the course of 20 minutes, he figured out the algorithm. In 1959, it was formally +published. + +## Algorithm Walkthrough + +### Dijkstra's Algorithm + +![Graph Network](./img/image-2.png) + +Let's start with this example graph network. We will manage our walkthrough using a results table and two lists, one for unvisited +nodes, and one for visited nodes. + +Let's declare A our starting node and update our results object with this current information. Since we are starting at node A, we then +review A's connected neighbors, in this example its nodes B and C. + +![starting chart](./img/image-3.png) + +Knowing that B is distance 10 from A, and that C is distance 5 from A, we can update our results chart with the current information. + +With that update, we can move node A from unvisited to visited list, and we have this new state. + +![Visiting A](./img/image-4.png) + +Now the algorithm can start to be recursive. We identify the node with the smallest distance to A of our unvisited nodes. In this +instance, that is node C. + +Now that we are evaluating C, we start with identifying its unvisited neighbors, which in this case is only node D. The algorithm would +update all the unvisited neighbors with their distance, adding it to the cumulative amount traveled from A to this point. So with that, +D has a distance of 15 from C, and we'll add that to the 5 from A to C. + +We continue to repeat this algorithm until we have visited all nodes. + +From here we will quickly loop through the rest of the table. + +This is when we visit node C: + +![Visitng C](./img/image-5.png) + +Node B is closer to Source than node D, so we visit it next. + +![Visiting B](./img/image-6.png) + +Unvisited neighbors of B are E and F. E is closes to A, so we visit it next. + +D is E's unvisited neighbor, but its distance via E is longer than what's already in the result index, so we do not add this data up. + +D is the only unvisited neighbor, and we hit a dead end on this branch, so D gets visited, but with no updates to the results table + +![Visiting D](./img/image-7.png) + +So since we are looping through all unvisited Nodes, F is the final unvisited node, and its a neighbor of B. We can now visit F through +B, and we do not have any results table updates with this visit, as F has no unvisited neighbors. + +## What do we do with this data? + +My library module for using this algorithm includes a method that runs the analysis, then uses the results table to get the shortest +path. + +It takes in the starting node, and ending (destination) node and returns the list of nodes needed to traverse the path. + +```ts + shortestPath(startnode: Node, endnode: Node): Node[] { + let dAnalysis = this.dijkstra(startnode); + + //iterate through dAnalysis to plot shortest path to endnode + let path: Node[] = []; + let current: Node | null | undefined = endnode; + while (current != null) { + path.push(current); + current = dAnalysis.find(node => node.node == current)?.previous; + if (current == null) { + break; + } + } + path.reverse(); + return path; + } +``` + +So for Example, if I said starting node is A, and endingnode is D, then the returned array would look like. + +```ts +//[Node C, Node D] +``` + +If you need the starting node in the path, you can unshift it in. + +```ts +path.unshift(startnode); +//[Node A, Node C, Node D] +``` + +## The test + +![Demo Test](./img/image-8.png) + +[Link to Demo](https://excaliburjs.com/sample-pathfinding/) + +[Link to Github Project](https://github.com/excaliburjs/sample-pathfinding) + +The demo is a simple example of using a Excalibur Tilemap and the pathfinding plugin. When the player clicks a tile that does NOT have +a tree on it, the pathfinding algorithm selected is used to calculate the path. Displayed in the demo is the amount of tiles to +traverse, and the overall duration of the process required to make the calculation. + +Also included, are the ability to add diagonal traversals in the graph. Which simply modifies the graph created with extra edges added, +please note, diagonal traversal is slightly more expensive than straight up/down, left/right traversal. + +## Conclusion + +In this article, we reviewed a brief history of Dijkstra's Algorithm, then we created and example graph network and stepped through it +using the algorithm, and then was able to use it to determine the shortest path of nodes. + +This algorithm I have found is more expensive than A\*, but is a nice tool to use when you don't understand the shape and size of the +graph network. As a programming exercise, I had a lot of fun interating on this problem till I got it working, and it felt like an +intermediate coding problem to tackle. + +