https://github.com/encodeous/journeyroute
Dynamic world routing with path optimizations
https://github.com/encodeous/journeyroute
Last synced: 4 months ago
JSON representation
Dynamic world routing with path optimizations
- Host: GitHub
- URL: https://github.com/encodeous/journeyroute
- Owner: encodeous
- License: mit
- Created: 2022-04-22T20:57:52.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2022-12-17T23:58:51.000Z (about 3 years ago)
- Last Synced: 2025-04-04T09:46:18.227Z (10 months ago)
- Language: Java
- Size: 302 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# JourneyRoute
## `What is JourneyRoute?`
Watch the JourneyRoute trailer!
JourneyRoute is a path-finding mod for Minecraft. With JourneyRoute, you will never get lost down a mineshaft! As you travel in a world, it will build a network of all the places you have been, and is able to generate routes between locations. *The more you explore, the better the network will become, thus the paths that JourneyRoute generate improve over time!*
## `Usage`
To use JourneyRoute, simply copy the jar file into the `mods` folder. Make sure the following requirements are also met:
### Requirements
- Fabric Mod Loader (See )
- Minecraft 1.18+
- JourneyMap (See for downloads)
- LibGui (See for downloads)
To install JourneyRoute, download the latest release from and copy it into the `mods` folder.
## `Is JourneyRoute Unfair?`
JourneyRoute only generates routes based on blocks that you have traversed on, thus it is not able discover paths for you. *Think of JourneyRoute as an assistant that helps players remember where they've been.* Despite this, however, JourneyRoute may be considered unfair on some multiplayer servers, and thus should only be used if it is allowed by server rules.
## `Research`
JourneyRoute would not have been not possible without the work of other researchers. The following papers and algorithms have been used to implement features of JourneyRoute.
### Ramer-Douglas-Peucker Polyline Simplification
Source:
JourneyRoute uses RDP polyline simplification to reduce the number of rendered vectors in the path preview. This drastically improves frame-rates and makes the rendered lines more visually appealing. A similar process is applied more aggressively for the 2d JourneyMap path preview.
### Chaikin's Corner-Cutting Algorithm (Polyline smoothing)
Source:
JourneyRoute uses Chaikin's algorithm to present routes in a more visually appealing manner. This is used purely for aesthetic purposes. Through the use of this algorithm, routes rendered in-game have smooth curves that are more visible compared to jagged lines. By applying multiple iterations of Chaikin's algorithm, the desired smoothness / performance ratio is reached.
### A* Heuristic Minimum Cost Path Algorithm
Source:
JourneyRoute uses the A* algorithm to efficiently search through blocks stored by its internal data structures. By applying dynamic weighting based on a block's visit history, paths that are visited more frequently are prioritized. This algorithm is further enhanced to promote paths that decrease in elevation, and minimizes the amount of air-blocks traveled. By applying higher weighting to paths that increase in elevation without support blocks (i.e a path that is only traversable with flight), JourneyRoute promotes the traversability of routes without the necessity of flight.