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.