메뉴
HN
Hacker News 24일 전

메르카토르 지도 위 3D 항공기 추적기

IMP
6/10
핵심 요약

VANGUARD1은 선박, 항공기, 위성, 해저 케이블 등 전 세계 이동 객체를 실시간으로 시각화하는 3D 전술 정보 맵입니다. Three.js 기반으로 프레임워크나 빌드 과정 없이 구현되었으며, 개발자 콘솔에서 시뮬레이션 시간 제어와 물리 법칙 위반(위장/순간이동) 탐지 기능을 지원합니다. 실시간 AIS 데이터와 시나리오 재생 기능을 통해 군사·물류 분석 등 다양한 도메인에서 활용할 수 있는 오픈소스 프로젝트입니다.

번역된 본문

VANGUARD1 — 다중 도메인 전술 정보 맵 (Multi-Domain Tactical Intelligence Map)

전 세계 이동 객체의 실시간 3D 맵: 실시간 선박 트래픽(AIS), 항공기, 위성, 해저 케이블, 항구, 해협 등 병목 구간, 우주 날씨를 주야 효과, 해양 시뮬레이션, 시네마틱 카메라 워크와 함께 150만 개 점 구름(point cloud) 지형으로 렌더링합니다. Three.js와 순수 ES 모듈로 제작되었습니다. 빌드 단계도, 프레임워크도 없습니다.

▶ 실시간 데모 — 가입 불필요: 시작 화면에서 VIEW DEMO를 클릭하면 가상 트래픽을 볼 수 있고, 무료 aisstream.io 키를 붙여넣으면 글로벌 실시간 선박 데이터를 볼 수 있습니다.

실행해보기

git clone https://github.com/jamalrfordii-arch/Vanguard-Map.git cd Vanguard-Map npx serve .

또는: python -m http.server 3000

하드웨어 가속이 활성화된 Chromium 브라우저에서 http://localhost:3000 을 엽니다.

실시간 선박 데이터(무료): 앱은 첫 로드 시 aisstream.io API 키 입력을 요청합니다 — 무료 가입이며, 키는 브라우저의 localStorage에 저장됩니다.

고해상도 지형 타일(선택 사항): cesium.com/ion → Access Tokens에서 무료 토큰을 발급받은 후, DevTools에서 localStorage.setItem('vg1_cesium_token', 'YOUR_TOKEN')을 실행합니다. 이 토큰이 없으면 모든 확대 수준에서 점 구름 지형을 사용합니다.

항공편 및 AI 보조 파일럿(선택 사항): 로컬 프록시가 필요합니다 — 두 번째 터미널에서 node flight-proxy.js를 실행하세요. 이 프록시 없으면 해당 레이어는 비활성 상태로 유지되며, 나머지 모든 기능은 정상 작동합니다.

시간 제어 및 시나리오

이 맵은 시뮬레이션 시계와 플러그인 가능한 데이터 소스로 작동합니다 — DevTools 콘솔:

simClock.setTime('2026-05-10T12:00:00Z') // 세계를 임의 시점으로 이동 simClock.setRate(60) // 실제 1초 = 시뮬레이션 1분 vg1Scenario.load('./scenarios/hormuz-demo.json') // 스크립트된 가상 선박 주입 vg1Scenario.record(); vg1Scenario.save() // 실시간 AIS를 NDJSON으로 캡처 vg1Scenario.replay('./captures/x.ndjson') // 캡처본 재생 vg1Invariants.stats() // 물리 법칙 위반 원장(스푸핑/순간이동 탐지)

가상 선박은 예약된 999... MMSI를 사용하며 scenarios/*.json에 스크립트로 작성됩니다.

테스트

node tests/invariants.test.mjs

아키텍처

도메인별로 하나의 매니저(aisManager, flightManager, satelliteManager, …)가 있으며, vg1:* DOM 이벤트로만 통신합니다 — 크로스 임포트는 없습니다. 모든 위치 보고서는 엔티티를 이동시키기 전에 물리 불변량 게이트(invariants.js)를 통과합니다. 전체 모듈 맵과 기여 규칙은 CLAUDE.md를 참조하세요.

피드백

GitHub Issue를 열어주세요 — 버그 보고, 기능 아이디어, "내 컴퓨터에서 N fps로 실행됨" 보고 모두 유용합니다.

원문 보기
원문 보기 (영어)
VANGUARD1 — Multi-Domain Tactical Intelligence Map A real-time 3D map of the world's moving things: live ship traffic (AIS), aircraft, satellites, submarine cables, ports, chokepoints, and space weather — rendered as a 1.5M-point terrain cloud with day/night, ocean simulation, and cinematic camera work. Built with Three.js and plain ES modules. No build step, no framework. ▶ Live demo — no signup needed: click VIEW DEMO on the opening screen for synthetic traffic, or paste a free aisstream.io key for live global ship data. Try it git clone https://github.com/jamalrfordii-arch/Vanguard-Map.git cd Vanguard-Map npx serve . # or: python -m http.server 3000 Open http://localhost:3000 in a Chromium browser with hardware acceleration. Live ship data (free): the app prompts for an aisstream.io API key on first load — free signup, the key stays in your browser's localStorage. High-res terrain tiles (optional): get a free token at cesium.com/ion → Access Tokens, then in DevTools: localStorage.setItem('vg1_cesium_token', 'YOUR_TOKEN') . Without it the map uses the point-cloud terrain at all zoom levels. Flights & AI copilot (optional): require the local proxy — node flight-proxy.js in a second terminal. Without it those layers stay quiet; everything else works. Time control & scenarios The map runs on a simulated clock and pluggable data sources — DevTools console: 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) Synthetic vessels use reserved 999… MMSIs and are scripted in scenarios/*.json . Tests node tests/invariants.test.mjs Architecture One manager per domain ( aisManager , flightManager , satelliteManager , …), communicating only via vg1:* DOM events — no cross-imports. All position reports pass a physics invariant gate ( invariants.js ) before they can move an entity. See CLAUDE.md for the full module map and contribution rules. Feedback Open a GitHub Issue — bug reports, feature ideas, and "this ran at N fps on my machine" reports are all useful.