2d stellar system map for testing
https://pages.gi7b.org/gi7b/2d-star-system-map/
- TypeScript 62.1%
- HTML 31.3%
- JavaScript 3.3%
- CSS 2.9%
- Java 0.2%
- Other 0.1%
| .github/workflows | ||
| android | ||
| dist | ||
| public | ||
| scripts | ||
| src | ||
| src-tauri | ||
| tools/system-importer | ||
| .gitignore | ||
| ANIMATION_TEST_PROPOSAL.md | ||
| capacitor.config.ts | ||
| CODE_CLUTTER_INDEX.md | ||
| FRD-046-star-page-save.md | ||
| FRD-047-pwa.md | ||
| FRD-048-delta-v-travel-planner.md | ||
| FRD-049-travel-time-slider.md | ||
| FRD-060-Mneme-2D-Map.md | ||
| FRD-062-2D-Map-Hill-Sphere-Display.md | ||
| FRD-063-Gravity-Assists.md | ||
| FRD-063-TEST-PLAN.md | ||
| FRD-064-DeltaV-Deadline.md | ||
| FRD-065-Hohmann-Lambert.md | ||
| FRD-069-Roche-Limit.md | ||
| FRD-071-Orbital-Cyclers.md | ||
| FRD.md | ||
| index.html | ||
| ISSUE_LOAD_REGRESSION.md | ||
| LICENSE | ||
| mneme-batch-1000-1776255855929- more gov't type tests.json | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| repoAnalysis.md | ||
| ROADMAP-Travel-Infrastructure.md | ||
| test.html | ||
| tsconfig.json | ||
| UI-COLLAPSE-PROPOSAL.md | ||
| VERSION | ||
| VERSION.md | ||
| vite.config.ts | ||
| WRAPPER_BUILD.md | ||
🛒 Products & Blog: blog.gi7b.org 🌐 Live App: https://pages.gi7b.org/gi7b/2d-star-system-map/ 💻 Source: https://git.gi7b.org/gi7b/2d-star-system-map
GitHub mirror archived — active development is here on Forgejo.
2D Star System Map
Products: https://blog.gi7b.org
Standalone 2D animated star system map for the Mneme CE World Generator.
Live URL: https://pages.gi7b.org/gi7b/2d-star-system-map/
Quick Start — Get Test Data from MWG
The map accepts a Base64-encoded StarSystem payload via the ?system= query parameter. The easiest way to generate test data is straight from the MWG browser console.
Step 1: Generate a system in MWG
Open Mneme CE World Generator, click Generate System, then open DevTools → Console.
Step 2: Run this snippet
const system = JSON.parse(localStorage.getItem('mneme_current_system'));
const payload = {
starSystem: system,
starfieldSeed: Math.random().toString(36).substring(2, 10).toUpperCase(),
epoch: { year: 2300, month: 1, day: 1 }
};
const json = JSON.stringify(payload);
const encoded = btoa(encodeURIComponent(json).replace(/%([0-9A-F]{2})/g, (_, p1) => String.fromCharCode(parseInt(p1, 16))));
const url = `https://pages.gi7b.org/gi7b/2d-star-system-map/?system=${encoded}`;
console.log(url);
window.open(url, '_blank');
This will:
- Read the currently generated system from MWG
localStorage - Wrap it with a random
starfieldSeedand default epoch - Encode it as a Unicode-safe Base64 string
- Print the full map URL to the console
- Open the map in a new tab automatically
Development
npm install
npm run dev
npm run build
The app is a plain Vite + TypeScript project with no React dependencies.
Architecture
src/main.ts— Bootstrap, payload decode, canvas initsrc/dataAdapter.ts—StarSystem→SceneBodymappersrc/renderer.ts— Canvas RAF render loopsrc/camera.ts— Pan/zoom transformssrc/input.ts— Mouse drag, wheel zoom, touch pinch/pansrc/orbitMath.ts— Kepler period, angle offsets, orbital velocitysrc/starfield.ts— Mulberry32 PRNG, procedural backgroundsrc/uiControls.ts— Play/pause, speed, step buttons, seed controlssrc/travelPhysics.ts— Escape velocity, transfer time calculator (FRD-048)src/travelPlanner.ts— Travel Planner UI & canvas selection mode (FRD-048)src/travelRenderer.ts— Trajectory arc & ship animation overlay (FRD-048)