PlayTracer is a telemetry visualization tool for exploring player behavior in multiplayer matches.
The tool converts raw gameplay telemetry into interactive minimap visualizations, allowing designers and analysts to understand player movement, combat activity, looting patterns, area eliminations, and overall map utilization.
Hosted Application : https://play-tracer.vercel.app/
Repository : https://github.com/ppchavan001/playtracer
YouTube : https://youtu.be/C2XeDV4sFyg
-
Interactive minimap visualization
-
Match playback with timeline controls
-
Human and bot player differentiation
-
Match filtering by date and match ID
-
Event visualization:
- Player Position
- Bot Position
- Loot
- Kill
- Death
- Area Death
- Dataset statistics overview
- Match metadata inspection
- Event counts and player counts
- Match duration calculation
Embedded Dataset: Player Event Data
| Metric | Value |
|---|---|
| Days | 5 |
| Matches | 796 |
| Players | 339 |
| Event Rows | ~89,000 |
| Maps | 3 |
Supported maps:
- AmbroseValley
- GrandRift
- Lockdown
| Technology | Purpose |
|---|---|
| Next.js | Application framework |
| React | User interface |
| TypeScript | Type safety |
| DuckDB | Telemetry querying and analytics |
| Python | Dataset preparation |
| Vercel | Hosting and deployment |
PlayTracer/
├── public/
│ ├── telemetry.db
│ └── minimaps/
│
├── scripts/
│ ├── build-db.py
│ └── verify-db.py
│
├── src/
│ ├── app/
│ ├── components/
│ ├── hooks/
│ ├── data/
│ └── types/
│
├── README.md
├── ARCHITECTURE.md
└── INSIGHTS.md
| Directory | Purpose |
|---|---|
public/ |
Static assets and generated telemetry database |
scripts/ |
Dataset generation and validation utilities |
src/data/ |
Database queries and data access layer |
src/hooks/ |
State management and playback logic |
src/components/ |
Reusable UI components |
src/app/ |
Application pages and layout |
src/types/ |
Shared TypeScript types |
- Node.js 20+
- Python 3.10+
- npm
npm installnpm run devOpen:
http://localhost:3000
npm run build
npm startNo environment variables are currently required.
pip install pandas pyarrow duckdbBuild a DuckDB database from the telemetry dataset:
python scripts/build-db.pyOutput:
public/telemetry.db
python scripts/verify-db.pydataset/
├── February_10/
├── February_11/
├── February_12/
├── February_13/
├── February_14/
└── README.md
All telemetry files are Apache Parquet files.
Each file represents:
1 Player/Bot
+
1 Match
Filename format:
{user_id}_{match_id}.nakama-0
Examples:
f4e072fa-b7af-4761-b567-1d95b7ad0108_b71aaad8-aa62-4b3a-8534-927d4de18f22.nakama-0
1440_d7e50fad-fb7a-4ed4-932f-e4ca9ff0c97b.nakama-0
Human players use UUID identifiers while bots use numeric identifiers.
- Open the application.
- Select a date from the dataset.
- Select a match.
- Explore player activity on the minimap.
- Use playback controls to replay events over time.
- Toggle event visibility to inspect specific gameplay behaviors.
Additional project documentation:
- ARCHITECTURE.md – System design, data flow, coordinate mapping approach, assumptions, and tradeoffs.
- INSIGHTS.md – Gameplay observations and findings discovered using PlayTracer.
- Kill heatmaps
- Death heatmaps
- Traffic heatmaps
- Player path visualization
- Multi-match comparison
- Event search
- Real-time telemetry support
- Additional telemetry sources
Pratik Chavan
ppchavan001@gmail.com
Software Engineer C++, Unreal Engine, Full-Stack Development