Mods / Chart

Tags:
QoL Addon Mapping Map Clientside
Author:
Pixnop
Side:
Client
Created:
May 25th at 10:35 PM
Last modified:
Jun 12th at 9:24 PM
Downloads:
103
Latest release (for Vintage Story 1.21.0-pre.1 - 1.22.3, potentially outdated):
Chart-0.2.0.zip  1-click install

Chart is the dimension-aware world map companion for Manifold. It teaches the Vintage Story world map about custom dimensions: each dimension keeps its own tile cache, the rendered map swaps on transit, and the previous dimension's exploration is preserved when you come back.

Vintage Story 1.21+ Client-side only Alpha MIT

Manifold logo

Requires Manifold 0.4.1 or later.
Client-side only - servers do not need Chart installed.

For players

If you play with any mod that uses Manifold custom dimensions (e.g. Manifold Sample), Chart makes those dimensions visible on your world map (G). Otherwise the vanilla map only ever knows about the overworld.

  • Per-dimension tile storage on disk - exploration in dim A is preserved when you visit dim B and come back.
  • Hot-swap on transit - the map immediately reflects whichever dimension you are currently in.
  • Automatic cache cleanup (0.2.0) - when a dimension is destroyed, its tile cache is deleted; a scan at world load also removes files left behind by crashes, so disk usage stays bounded.
  • Smooth inside custom dimensions (0.2.0) - a major rendering performance fix; walking around a custom dim with the map open no longer lags.
  • Vanilla waypoints, players and ore overlays continue to work normally on top of Chart's terrain.

For mod developers

Chart subclasses RGBMapLayer, registers with WorldMapManager, and removes the vanilla ChunkMapLayer at LevelFinalize so it is the sole terrain renderer. The rendering pipeline ports vanilla's 13-colour material palette + 3-neighbour hillshade + box-blurred shadow map, with Manifold dim-awareness added everywhere the vanilla code assumed dim 0:

  • Per-pixel BlockPos.dimension writes so BlockAccessor samples the player's current dim.
  • Dim-encoded chunk slice lookups (cy + dim * 1024) so UnpackAndReadBlock reads from the right dim.
  • Bounded fallback height scan when IMapChunk.RainHeightMap is unpopulated (true for Manifold custom dims).

Tile data persists at <gamedir>/ModData/Chart/<savegame>/<dim>.bin (deflate-compressed). The full pipeline is open source: Pixnop/Chart.

Known alpha-stage limitations

  • Chunk-edge seams. Our tiles are 32x32 each; vanilla groups them into 96x96 super-tiles, where the blur stays inside one big tile. Expect mild visible seams at chunk boundaries until Chart migrates to the same grouping.
  • Softened hillshade. The slope factor cap is reduced from vanilla's 0.5 to 0.3 to mitigate cross-chunk discrepancies. Relief is therefore less pronounced than vanilla's map.
  • Cross-dim waypoints. Vanilla waypoint pins still render in every dimension regardless of where they were created. Tracked in issue #30.

Why the name "Chart"

In the maths behind the name Manifold, a manifold is described by an atlas of charts. Each chart is literally a map. So the dimension library is the manifold, and the map mod is one of its charts.

Links

For Vintage Story 1.21+. MIT licensed.

Mod Version Mod IdentifierFor Game version Downloads Released Changelog Download 1-click mod install*
0.2.0 chart
1.21.0-pre.1 - 1.22.3
62 Jun 12th at 9:24 PM Chart-0.2.0.zip 1-click install

Major performance fix inside custom dimensions, plus automatic cache cleanup for ephemeral dimensions.

  • Custom dimensions no longer lag. Two compounding feedback loops kept the client CPU busy re-rendering map tiles forever: adjacent chunks kept re-queueing each other after every render, and each chunk column was re-rendered once per vertical chunk slice (16-48 times per load) because the work queue had no deduplication. Both are fixed; walking around a Manifold custom dimension with the map open is now smooth.
  • Ephemeral dimension cache cleanup. When a Manifold dimension is destroyed, Chart now deletes its cached tile file and clears the rendered map immediately. A defensive scan at world load also removes cache files left behind by crashes or ungraceful disconnects, so disk usage stays bounded over long-running worlds.
  • Internal renderer refactor (same pixels, much more maintainable pipeline) and code-quality cleanups.

Requires Manifold 0.4.1+. For Vintage Story 1.21+. Client-side only. Still alpha: chunk-edge seams and softened hillshade remain known visual limitations.

0.1.0 chart
1.21.0-pre.1 - 1.22.2
41 May 25th at 10:37 PM Chart-0.1.0.zip 1-click install

First Chart release. Dimension-aware world map for Manifold custom dimensions, alpha visual quality.

  • Per-dimension tile storage on disk - <gamedir>/ModData/Chart/<savegame>/<dim>.bin, deflate-compressed. Exploration in one dimension is preserved when you visit another and come back.
  • Hot-swap on transit - the map switches to the destination dimension's tiles immediately on dim change.
  • Vanilla rendering pipeline ported - 13-colour material palette, snow / water-edge handling, 3-neighbour hillshade, box-blurred shadow map. Chart deactivates and removes the vanilla ChunkMapLayer so it is the sole terrain renderer; vanilla waypoint and player overlays continue to work on top.
  • Known alpha limitations: mild seams at chunk boundaries, softened hillshade vs vanilla. Cross-dim waypoints and ephemeral-dim cache cleanup tracked separately on GitHub.

Requires Manifold 0.3.1+. For Vintage Story 1.21+. Client-side only.


0 Comments (oldest first | newest first) (threaded | flat)