
Mappa tattica multidominio 3D — navi, voli, satelliti, cavi e meteo spaziale in tempo reale nel browser. Scorrimento temporale, replay di scenari, rilevamento anomalie basato sulla fisica.
Una mappa 3D in tempo reale delle cose in movimento nel mondo: traffico navale live (AIS), aerei, satelliti, cavi sottomarini, porti, punti di strozzatura e meteo spaziale — resa come nuvola di terreno da 1,5 milioni di punti con giorno/notte, simulazione oceanica e lavoro cinematografico della telecamera. Costruito con Three.js e moduli ES puri. Nessun passaggio di build, nessun framework.
▶ Demo live — nessuna registrazione necessaria: clicca VIEW DEMO sulla schermata di apertura per traffico sintetico, o incolla una chiave gratuita di aisstream.io per dati navali globali live.

git clone https://github.com/jamalrfordii-arch/Vanguard-Map.git
cd Vanguard-Map
npx serve . # or: python -m http.server 3000
Apri http://localhost:3000 in un browser Chromium con accelerazione hardware.
Dati navali live (gratuiti): l'app richiede una chiave API di aisstream.io al primo caricamento — registrazione gratuita, la chiave rimane nel localStorage del tuo browser.
Tile di terreno ad alta risoluzione (opzionale): ottieni un token gratuito su
cesium.com/ion → Access Tokens, poi in DevTools:
localStorage.setItem('vg1_cesium_token', 'YOUR_TOKEN'). Senza di esso la mappa utilizza
il terreno a nuvola di punti a tutti i livelli di zoom.
Voli e copilota AI (opzionale): richiedono il proxy locale —
node flight-proxy.js in un secondo terminale. Senza di esso quei livelli rimangono silenziosi;
tutto il resto funziona.
La mappa funziona con un orologio simulato e sorgenti dati pluggabili — console DevTools:
simClock.setTime('2026-05-10T12:00:00Z') // scrub the world to any moment
simClock.setRate(60) // 1 real second = 1 sim minute
vg1Scenario.load('./scenarios/hormuz-demo.json') // inject scripted synthetic vessels
vg1Scenario.record(); vg1Scenario.save() // capture live AIS to NDJSON
vg1Scenario.replay('./captures/x.ndjson') // replay a capture
vg1Invariants.stats() // physics-violation ledger (spoof/teleport detection)
Le navi sintetiche usano MMSI riservati 999… e sono scriptate in scenarios/*.json.
node tests/invariants.test.mjs
Un manager per dominio (aisManager, flightManager, satelliteManager, …),
comunicano solo tramite eventi DOM vg1:* — nessun import incrociato. Tutti i rapporti di posizione
passano attraverso un gate di invarianza fisica (invariants.js) prima di poter muovere un'entità.
Vedi CLAUDE.md per la mappa completa dei moduli e le regole di contribuzione.
Apri un GitHub Issue — segnalazioni di bug, idee per funzionalità e rapporti del tipo "questo girava a N fps sulla mia macchina" sono tutti utili.