Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

EVE 战争星图

基于 EVE Online 的实时击杀可视化地图。从 zKillboard 的 R2Z2 数据源拉取全宇宙实时击杀,在 3D 星图上展示击杀位置、价值与势力动态,并支持按主权着色与今日击杀历史回放。

EVE 战争星图截图

✨ 功能特性

  • 🌌 全宇宙 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 --reload

🗂️ 项目结构

EVE-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          # 样式

🔌 后端接口

REST API

接口 说明
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 秒刷新一次。

📄 License

仅用于个人学习与娱乐,与 EVE Online / CCP Games 无关。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages