基于 EVE Online 的实时击杀可视化地图。从 zKillboard 的 R2Z2 数据源拉取全宇宙实时击杀,在 3D 星图上展示击杀位置、价值与势力动态,并支持按主权着色与今日击杀历史回放。
- 🌌 全宇宙 3D 星图:约 8000 个星系按真实坐标渲染,支持 2D 俯视 / 3D 自由视角切换
- ⚔️ 实时击杀:通过 WebSocket 推送最新击杀,星系闪烁 + 扩散圆环提示
- ☄️ 流星特效:每次击杀的受害者与参与者流星从同一侧半圆弧、以同一随机颜色齐射并同时飞抵各自星系(颜色与击杀价值无关)
- 🎨 主权着色:星系按当前主权持有者(联盟 / 势力 / 公司)固定着色
- 🏆 实时排行榜:联盟 / 星域 / 星系击杀 TOP 5、ISK 价值 TOP 5
- ⏪ 历史回放:回放今天的所有击杀,支持倍速(1x / 10x / 60x)、进度条拖动、±10 分钟跳转、按联盟过滤
- 🔍 信息面板:点击星系查看主权、击杀数、ISK 损失、安全等级等详情
- Python 3.10+
- 可访问外网(需请求 ESI 与 zKillboard 接口)
# 1. 创建虚拟环境(可选但推荐)
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux/macOS
source .venv/bin/activate
# 2. 安装依赖
pip install -r requirements.txt
# 3. 启动应用
python run.py启动后浏览器会自动打开 http://localhost:8502。
首次启动:会从 ESI 拉取全宇宙星系坐标并缓存到
data/systems.json(约 2 分钟,仅首次需要)。缓存生成后再次启动即为秒开。
uvicorn server:app --host 127.0.0.1 --port 8502 --reloadEVE-kill-map/
├── run.py # 启动器(自动清理旧进程、打开浏览器)
├── server.py # FastAPI 后端:数据拉取、缓存、REST/WebSocket API
├── db.py # SQLite 击杀历史存储
├── requirements.txt # Python 依赖
├── data/
│ ├── systems.json # 星系坐标缓存(首次启动生成)
│ ├── regions.json # 星系 → 星域映射缓存
│ ├── jumps.json # 星系连接(星门)缓存
│ └── sovereignty.json # 主权映射与持有者名称缓存
└── static/
├── index.html # 前端页面
├── map.js # 前端逻辑(Three.js 渲染、回放、着色等)
└── style.css # 样式
| 接口 | 说明 |
|---|---|
GET /api/status |
后端状态(星系加载进度、连接数、击杀数) |
GET /api/systems |
所有星系坐标与基本信息 |
GET /api/sovereignty |
星系主权映射与持有者名称 |
GET /api/recent_kills |
最近 100 条击杀 |
GET /api/history?limit=&offset= |
分页击杀历史(含原始 JSON) |
GET /api/replay/kills |
今日击杀(按时间正序,供回放) |
GET /api/kills/count |
数据库击杀总数 |
GET /api/kills/summary?window= |
近 N 秒击杀统计 |
GET /api/leaderboard?window=&top= |
联盟击杀排行 |
GET /api/regions/top |
星域击杀排行 |
GET /api/systems/top |
星系击杀排行 |
GET /api/kills/top_isk |
ISK 价值 TOP 击杀 |
GET /api/active_kills |
当前活跃击杀 |
GET /api/jumps |
星系连接图 |
GET /ws (WebSocket) |
实时击杀推送(JSON:{type:"kill", ...}) |
- 星系 / 星域 / 主权:EVE 官方 ESI API
- 实时击杀:zKillboard R2Z2 轮询(HTTP + WebSocket 广播)
| 操作 | 效果 |
|---|---|
| 左键点击星系 | 选中星系,查看信息面板 |
| 双击空白 | 返回全宇宙视角 |
| 滚轮 | 缩放 |
| 2D 模式拖拽 | 平移 |
| 3D 模式拖拽 | 旋转 |
| 3D 右键 | 开启 / 关闭自动旋转 |
顶部 🌍 3D 按钮 |
切换 2D / 3D 视图 |
顶部 ▶ 回放今天 |
开始 / 停止今日击杀回放 |
- 改了前端代码但没生效? 浏览器缓存了旧的
map.js/style.css,请强制刷新(Ctrl + F5)。 - 排行榜刷新频率? 数据不足 5 条时每 5 秒刷新,否则每 60 秒刷新一次。
仅用于个人学习与娱乐,与 EVE Online / CCP Games 无关。
