Skip to content

About

A real-time companion map for Aloft that reads savegame and live runtime data to track islands, clusters, points of interest, wind lanes, and player movement.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Aloft Companion Map

A local, live-updating companion map for Aloft. The application reads the active savegame directly from the local save directory and displays islands, statuses, biomes, quests, frescoes, beacons, points of interest, resources, flora, fauna, Titans, the Home Island, wind lanes, and the player position on an interactive ring map.

This is an unofficial community project. It is not affiliated with or endorsed by Astrolabe Interactive or the publishers of Aloft. No game assets or assemblies are distributed with this repository.

Aloft Companion Map showing the interactive world overview, map layers, cluster focus, and island inspector

Features

  • Interactive SVG ring map matching the in-game world orientation
  • Automatic discovery of Steam installations, profiles, worlds, and savegames
  • Seamless savegame fallback when Aloft is not running
  • Live player, cluster, and Home Island tracking through a loopback-only runtime bridge
  • Optional native in-game waypoint placement and warning-gated experimental island teleport
  • Expected, saved, and targeted live resource, flora, and fauna inspection
  • Offline ItemDB with item search, types, categories, biomes, gameplay details, and bidirectional recipe browsing
  • Island-sized markers, search, filters, close-up cluster navigation, and a detail inspector
  • Wind lane, Titan, quest, fresco, beacon, knowledge, anchor, atlas, scan, and glider pattern layers
  • Experimental Sandbox Save Modifier with isolated save copies, presets or custom settings, and revision restore
  • Local-only operation with no account, cloud service, or telemetry

Getting started

Savegame mode requires Windows, Node.js 20 or newer, PowerShell 5.1, and a local Steam installation of Aloft. It does not require BepInEx or the runtime bridge.

npm start

Open http://127.0.0.1:4173. A full scan can take up to about a minute on a large world because the decompressed map is roughly 110 MB. The interface remains available from its local cache while savegame changes trigger a background rescan.

Published release archive

The release ZIP includes the compiled Aloft Companion runtime bridge, but it does not include BepInEx itself. Live mode requires BepInEx 5.4.23.5 x64 for Unity Mono installed in the directory that contains Aloft.exe. Download the official BepInEx_win_x64_5.4.23.5.zip asset; do not use BepInEx 6 or an IL2CPP build.

After installing BepInEx, start Aloft once so BepInEx can initialize, close the game, and run:

.\scripts\install-runtime-bridge.ps1

The installer discovers Aloft across registered Steam libraries. Use its optional -AloftRoot parameter only when automatic discovery cannot locate the game.

Source checkout

When running from source, build and install the runtime bridge while the game is closed:

.\scripts\build-runtime-bridge.ps1
.\scripts\install-runtime-bridge.ps1

Detailed instructions and configuration options are available in docs/setup.md.

Open http://127.0.0.1:4173/itemdb.html or use Item Database in the map footer. Island resources, flora, and fauna link directly into the catalog. Exact item names open their detail record; broader natural-content labels open a prepared search. Item pages show source provenance, properties, biomes, crafting ingredients, and every normalized recipe that consumes the item. When multiple recipes are available, the page presents a recipe selector.

The source tree also contains the heuristic, revision-tracked Aloft Wiki snapshot and its application-ready derivative. Their scope, schema, licensing, limitations, and rebuild process are documented in docs/item-database.md and data/README.md.

Dual mode

The map selects its data source automatically:

  • LIVE: When Aloft is running with the runtime bridge installed, the player position and current cluster update five times per second. The Home Island updates once per second, while all other island platforms refresh once per minute. Wind lanes are captured once after the loaded world has finished initializing.
  • SAVE: When the game or runtime bridge is unavailable, the application continues seamlessly with its cache, savegame watcher, and manual rescan option.

The runtime bridge lives in runtime-bridge/ and is built as a BepInEx 5 plugin. Telemetry remains read-only; only explicitly enabled map tools may send a native waypoint or experimental island-teleport command. The bridge exposes data and its authenticated command endpoint only on 127.0.0.1:52189. The complete world structure still comes from the savegame; runtime data is applied as a temporary live overlay.

Runtime map tools

When Aloft is running in a loaded world with the current runtime bridge, the lower-left Map Tools panel becomes available:

  • Click to mark in-game: click an island marker to set Aloft's native island waypoint, or click an empty map position to place a native world waypoint. Dragging the map does not trigger an action.
  • Experimental teleport: after accepting the warning, click an island marker to invoke Aloft's native island teleport flow. Free-position teleporting is intentionally not supported.

The two tools are mutually exclusive. Runtime commands execute on Unity's main thread, require a random per-session bridge token, and are accepted by the web application only from its matching loopback origin. Teleport remains experimental: it uses Aloft's coordinate teleport routine to move the player to the clicked map position while preserving the current altitude, without binding the destination to an island.

Island contents

Select an island to inspect recognized resources, flora, and fauna. The inspector keeps its sources separate:

  • Expected: natural populations defined by the island template.
  • Saved: persistent natural populations recorded for an island that has been generated.
  • Live: objects currently reported by the selected loaded island through a targeted runtime request.

Undiscovered island contents are hidden by default. Enable Reveal Undiscovered in the inspector if you explicitly want template spoilers. Live inspection is limited to the selected island and refreshed at most once per minute, avoiding full-world content polling. Recognized entries retain their original Aloft IDs internally; unknown or construction-related populations are not presented as natural island contents.

Experimental Sandbox Save Modifier

Open http://127.0.0.1:4173/modifier.html or use the warning link in the map footer. This feature is deliberately separated from the map and requires an explicit danger acknowledgement.

The active source save is always treated as read-only. Creating a sandbox clones the selected world save, its matching character save, and the Home Island data into a new game-visible world with a new identity. Changes are applied only to that sandbox while it is not loaded in Aloft.

Choose exactly one editing mode:

  • Preset: Apply a curated configuration such as Creative Builder, Peaceful Explorer, or Unrestricted Sandbox.
  • Custom: Select individual supported changes yourself.

The application keeps internal revisions in %LOCALAPPDATA%\AloftCompanionMap\sandbox-revisions, allowing a sandbox pair to be restored to an earlier state without creating another visible save for every edit. Writes use staging, post-write deserialization checks, and paired rollback handling, but this remains an experimental save editor: future Aloft updates or unsupported value combinations may still damage the sandbox or its progression. Keep the original save and never modify a world that is currently loaded.

Automatic discovery

By default, the application discovers:

  • Savegames in %USERPROFILE%\AppData\LocalLow\Astrolabe Interactive\Aloft
  • The game installation through Steam libraries listed in libraryfolders.vdf
  • The most recently modified profile and world combination matching Data*\Saves\*\_map.map

Automatic discovery can be overridden through ALOFT_SAVE_ROOT, ALOFT_MANAGED_DIR, ALOFT_PROFILE, and ALOFT_WORLD. Each variable accepts the corresponding path or directory name from the user's own installation. Most users do not need to set any of them.

Privacy

The application binds only to 127.0.0.1. Savegame data never leaves the computer. Aloft assemblies are loaded exclusively from the existing local installation for deserialization; they are neither copied nor distributed with this project.

Technology

  • Dependency-free Node.js HTTP server
  • Server-Sent Events and recursive savegame watcher
  • Automatic runtime polling with savegame fallback
  • Loopback-only BepInEx bridge for Unity telemetry and explicitly enabled native map actions
  • GZip and ZeroFormatter reader using the locally installed Aloft assemblies
  • Staged and round-trip-validated ZeroFormatter sandbox writer with paired rollback
  • Interactive, responsive SVG map
  • Local cache at .cache/map.json

Tests

npm test

Documentation

License

The original companion-map source code is available under the MIT License. Source-derived records in data/ are separately documented and provided under CC BY-SA 4.0. Aloft, Unity, BepInEx, and other third-party software and trademarks remain the property of their respective owners.

About

A real-time companion map for Aloft that reads savegame and live runtime data to track islands, clusters, points of interest, wind lanes, and player movement.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages