map-navigator-guide

Guides development of MapLocator and MapNavigator navigation components for MaaEnd pipeline nodes.

3.7k|317|Updated Mar 18, 2022
One-click install
npx skills add https://github.com/MaaEnd/MaaEnd --skill map-navigator-guide
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: map-navigator-guide
Source: https://github.com/MaaEnd/MaaEnd/tree/main/.agents/skills/map-navigator-guide
Command: npx skills add https://github.com/MaaEnd/MaaEnd --skill map-navigator-guide

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Developers working on MaaEnd's game automation need to write Pipeline nodes for character positioning, movement, and pathfinding, but the MapLocator/MapNavigator C++ components have subtle semantics (NAVMESH vs recorded paths, target_tier disambiguation, target_deck_y for overlapping floors) that are easy to misuse.

Core Features & Use Cases

  • Node Selection Guidance: Decision table for choosing between MapNavigateAction NAVMESH nodes, recorded paths, MapLocateAssertLocation, and MapLocateRecognition based on the task.
  • C++ Component Map: Overview of the agent/cpp-algo/source codebase covering MapLocator (YOLO + ZNCC template matching), MapNavigator state machine, and Navmesh A* planner.
  • Path Authoring Rules: Detailed semantics for target_tier, target_deck_y, zipline global planning, INTERACT async interaction with interact_text/interact_rec, and required-node boundaries.
  • Use Case: When writing a Pipeline node that moves the character to a known coordinate, use this Skill to correctly emit a NAVMESH action with a target instead of recording a full path, and to declare target_deck_y when the destination sits on overlapping walkable surfaces.

Quick Start

Ask the assistant to write a MaaEnd Pipeline node that navigates the character to coordinates [720, 630] using NAVMESH pathfinding.

Frequently Asked Questions about map-navigator-guide

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I make a MaaEnd character walk to a known coordinate?▼

Use a MapNavigateAction custom action with a NAVMESH path entry containing the target coordinate. The runtime plans an executable route over the triangle navmesh automatically, so no pre-recorded path is needed when the destination is reachable without interactions or map transitions.

When should I use NAVMESH versus a recorded path in MapNavigator?▼

Prefer NAVMESH whenever the target is reachable without interactions, map transitions, or special mechanisms. Fall back to a recorded path only when the route contains semantics the navigator cannot infer, such as INTERACT points, PORTAL transitions, or jump pads.

What is target_tier used for in MaaEnd path nodes?▼

target_tier disambiguates coordinates that come from a tier-specific base map, declared as an object like { "action": "RUN", "target": [x, y], "target_tier": "Wuling_L4_328" }. It only declares the coordinate's source layer and never implies a zone switch, which remains the job of ZONE and PORTAL nodes.

Why does navigation stop on the wrong floor at overlapping walkable surfaces?▼

The game is 3D but the base map is 2D, so corridors, bridges, and rooftops can share one target coordinate. Declare target_deck_y with the surface's world height, read from the overlapping-surface list in the MapNavigator tool, so pathfinding stops on the intended layer.

How does INTERACT async interaction work in MapNavigator paths?▼

An INTERACT point with interact_text becomes asynchronous: navigation stops when the prompt appears, confirms it via OCR, then presses the key. Adding interact_rec delegates which option row to press back to the outer Pipeline, useful for multi-option interactions like accept or abandon.

Why must turning happen while moving in MapNavigator?▼

The camera cannot rotate while the character is stopped, so no new minimap observations are produced and localization stalls. Any stop-turn-restart change causes deadlock; heading adjustments must be performed during movement.