- Download the project from GitHub releases
- Extract the ZIP file to your desired location
- Install Python (if not already installed):
- Use the installer in
python installer v3.12.1/folder โ ๏ธ Important: Check "Add Python to PATH" during installation!- See
python installer v3.12.1/INSTALL_PYTHON.mdfor detailed help
- Use the installer in
- Run
install.bat(Windows) orinstall.sh(Linux/Mac) - Launch with
launch.bator./launch.sh
That's it! The installer will:
- โ Check Python installation
- โ Create virtual environment
- โ Install all dependencies
- โ Create launch scripts
After installation, you have multiple options:
- ๐ฅ๏ธ Main Launcher: Run
launch.batfor a complete GUI with all applications - โก Quick Speedometer: Run
quick_speedometer.batfor direct speedometer access - ๐ Update Dependencies: Run
update.batto update all packages
- ๐ Advanced Speedometer - Real-time speed, acceleration, and angle measurements
- ๐ป Ghost Mode - Race against your best times with online rankings
- ๐บ๏ธ Real-time Maps - Live position tracking with multiplayer support
- ๐ Vector Analysis - Direction vectors and velocity visualization
- โฑ๏ธ Checkpoint System - Multi-lap support with automatic logging
- ๐ฏ 3D Visualizer - Complete 3D representation of your race logs
- ๐ Performance Tracking - Detailed statistics and improvement tracking
- ๐ฎ Multiplayer Racing - Real-time competition with friends
- ๐ Custom Checkpoints - Create your own race tracks and jumping puzzles
- ๐ฅ๏ธ Unified Launcher - Manage all applications from one place
- ๐ Web Integration - Direct connection to beetlerank.com
- ๐ฑ Responsive Design - Clean, modern interface with gradient styling
- ๐ง Dependency Manager - Automatic verification and troubleshooting
The Speed Suite v6 uses a modern TCP/UDP/WebSocket communication architecture to connect players in real-time races. This replaces the legacy MQTT protocol for better performance and reliability.
โโโโโโโโโโโโโโโโโโโ UDP โโโโโโโโโโโโโโโโโโโ WebSocket โโโโโโโโโโโโโโโโโโโ
โ Speedometer โ โโโโโโโโโโโโโโโโ Server โ โโโโโโโโโโโโโโโโโโโ Dashboard โ
โ (TCP/UDP Client)โ 41234/UDP โbeetlerank.com โ 3002/WSS โ (Web Browser) โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ โ โ
โ TCP 41235 โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
| Protocol | Host | Port | Purpose |
|---|---|---|---|
| UDP | www.beetlerank.com | 41234 | High-frequency position updates (every 30ms) |
| TCP | www.beetlerank.com | 41235 | Critical messages (start, checkpoint, finish, countdown) |
| WebSocket | wss://www.beetlerank.com | 3002 | Receiving real-time snapshots of all players |
The system uses JSON messages for all communication. Here are the supported message types:
{
"option": "position",
"x": 26564.776,
"y": -737.263,
"z": -324.002,
"speed": 31.44,
"angle": 319.34,
"user": "Player1",
"sessionCode": 1234,
"map": "Rata River",
"color": "#FF5733",
"lap": 1,
"step": 0
}{
"option": "s",
"lap": 1,
"step": 0,
"time": 0,
"user": "Player1",
"sessionCode": 1234
}{
"option": "c",
"step": 5,
"lap": 1,
"time": 45.2,
"user": "Player1",
"sessionCode": 1234
}{
"option": "f",
"lap": 1,
"step": 999,
"time": 125.5,
"user": "Player1",
"sessionCode": 1234
}{"option": "321GO-3", "user": "Player1", "sessionCode": 1234}
{"option": "321GO-2", "user": "Player1", "sessionCode": 1234}
{"option": "321GO-1", "user": "Player1", "sessionCode": 1234}
{"option": "321GO-GO", "user": "Player1", "sessionCode": 1234}| Step Value | Meaning |
|---|---|
| 0 | Race Start / Lap Start |
| 1-998 | Normal Checkpoint |
| 999 | Lap Complete / Finish |
| 998 | Abandon |
| 1000 | Surrender |
| 1001 | Ready |
When connected via WebSocket, you receive snapshots containing all active players:
{
"type": "snapshot",
"serverTimeMs": 1774365377334,
"activeCount": 3,
"totalCount": 5,
"sessionCodes": [1234, 5678],
"users": [
{
"user": "Player1",
"sessionCode": 1234,
"x": 26564.776,
"y": -737.263,
"z": -324.002,
"speed": 31.44,
"angle": 319.34,
"option": "position",
"lap": 1,
"step": 5,
"time": 45.2,
"map": "Rata River",
"color": "#FF5733",
"active": true,
"ageMs": 42.42
}
]
}- Open Speedometer - Launch the speedometer from the main launcher
- Configure Race - Select your map, number of laps, and session ID (room code)
- Start Multiplayer - Click the multiplayer button to connect to the server
- Wait for Players - Other players join using the same session ID
[1. JOIN] All players enter the same session code (e.g., "1234")
โ
[2. READY] Each player clicks "Ready" when prepared
โ
[3. COUNTDOWN] Host clicks "Start Race" โ 3... 2... 1... GO!
โ
[4. RACE] Automatic timing starts at first checkpoint
โ
[5. FINISH] Times recorded when completing final lap
- Live Position Tracking - See all players on the map in real-time
- Checkpoint Notifications - Watch friends hit checkpoints
- Leaderboard Updates - Rankings update live during the race
- Countdown Sync - Everyone sees the same start countdown
- GWTC - Guild Wars Tournaments Championship
- HUR - Full run and 2-lap variants
- RACE - Temple of Speed, Hillclimb, Downhill, Full Mountain
- SoTD - Spirits of the Dragon course
- OLLO - Speedfall and Drift Heaven
- UAoT - United Arts Speedway
- INDI - Maguuma Expressway and Shambhala Ascent
- LRS - Jokos Descent
- VAW - Ratzfatz (multiple paths)
- BREAK-A-BONE - Technical challenge course
- Yuru Camp - Izu Peninsula Trip and Hot Pot circuit
- Diessa Plateau - Classic speedway
- Snowden Drifts - Winter wonderland racing
- Gendarran Fields - Rolling hills circuit
- Brisbane Wildlands - Forest adventure track
- Grothmar Valley - Charr territory racing
- Infinite Leap - Precision jumping course
- Fractal Actual Speedway, Wayfar Out, Summers Sunset
- Mossheart Memory, Roller Coaster Canyon, Centurion Circuit
- Dredgehaunt Cliffs, Icy Rising Ramparts, Toxic Turnpike
- Celedon Circle, Lions Summer Sights, Sandswept Shore Sprint
- Estuary of Twilight, Thermo Reactor Escape, Jade Scouting Tour
- Haiju Flying Circus, Skyline Zip Trip, Survival Swamp
- Shae no Moor Lady in White, Inquest Isle Invasion
- Jormags Jumpscare, Triple Trek series (Amber, Cobalt, Crimson, Medley)
- Seitung Super Tour, Kaineng Zippy Loop, Echovalds Gloomy Roads
- Beachin Crabwalk
- Verdant Brink Hunt - Canopy navigation challenge
- Crystal Oasis - Desert soaring (Expert & Master)
- Desert Highlands - Mountain flying (Expert & Master)
- Path of Fire Maps - Complete griffon racing series
- Flying Circus - Advanced aerial maneuvers
- Morgan's Spiral, Spekks Laboratory, Chaos Crystal Cavern
- Khan-Ur's Gauntlet, Asuran Djinn JP, Abaddon's Ascent
- Mad King's Clock Tower, Obsidian Sanctum
- Dragon Bash - Festival racing circuit
- Mad King's Raceway - Halloween special
- Lunar New Year - Canthan celebration track
- Guild Wars 2 - Game must be running to use speedometer
- Python 3.12.1 - Automatically installed by
install.bat - Windows/Linux/Mac - Cross-platform support
- Start Guild Wars 2
- Run
launch.batto open the main launcher - Click "๐ง Check Dependencies" to verify everything is working
- Launch "๐๏ธ Speedometer" to start racing
- Select your map and configure settings
- Open speedometer and select your map/laps
- Enter the same room code as your friends (e.g., "1234")
- Click "Join" to connect to the multiplayer session
- Hit "Ready" to signal you're prepared to race
- One person clicks "Start Race" to begin countdown
- Racing begins automatically at the first checkpoint
The launcher provides access to all tools:
| Application | Description | Use Case |
|---|---|---|
| ๐๏ธ Speedometer | Main racing HUD with full telemetry | Primary racing tool |
| ๐๏ธ Checkpoint Viewer | 3D visualization of race tracks | Course preview and analysis |
| ๐ป Ghost System | Race against personal bests | Time improvement and competition |
| ๐ Vector Visualizer | Real-time movement analysis | Advanced technique study |
| ๐ Racing Creator | Design custom race tracks | Community track creation |
| ๐ง JP Creator | Build jumping puzzle checkpoints | Puzzle course design |
| ๐บ๏ธ Real-time Map | Live position tracking | Navigation and exploration |
| ๐ Multiplayer Map | Multi-player position sharing | Group coordination |
- Python: 3.12 or higher (automatically handled by installer)
- Memory: ~100MB RAM usage
- Storage: ~200MB for full installation
- Network: Required for multiplayer and rankings
All automatically installed by install.bat:
- Data Processing:
numpy,pandas,scipy - GUI:
tkinter,PySide6,pyqtgraph - Input:
pynputfor keyboard/mouse handling - Networking:
websocket-client,requests - Game Integration:
mumblelinkAPI for Guild Wars 2
gw2_speedometer/
โโโ launcher.py # Main application launcher
โโโ speedometer.py # Primary speedometer tool
โโโ telemetry_client.py # TCP/UDP/WebSocket communication module
โโโ install.bat # Windows installer
โโโ launch.bat # Windows launcher
โโโ quick_speedometer.bat # Direct speedometer access
โโโ update.bat # Dependency updater
โโโ logs/ # Race data and telemetry
โโโ maps/ # Custom track definitions
โโโ venv/ # Python virtual environment
- CSV Export - Full telemetry data for external analysis
- 3D Plotting - Visualize racing lines and optimal paths
- Performance Metrics - Speed, acceleration, angle analysis
- Comparison Tools - Compare runs against personal bests
- Custom Maps - Import community-created tracks
- Personalized HUD - Configure display elements
- Color Themes - Match your personal style
- Keybind Settings - Customize controls
- Beetlerank.com - Automatic time uploads and global rankings
- LiveSplit - Integration with speedrunning timer
- OBS Support - Racing overlay for streaming
- API Access - Developer tools for advanced users
- Python Not Found: Run installer as administrator
- Dependencies Missing: Execute
update.batto reinstall packages - Game Not Detected: Ensure Guild Wars 2 is running before launching
- Performance Issues: Close unnecessary applications while racing
- Multiplayer Connection Failed: Check your internet connection and firewall settings
The speedometer uses specific ports for multiplayer:
- UDP 41234 - Position updates (can be blocked by firewalls)
- TCP 41235 - Critical messages
- WebSocket 3002 - Player snapshots
If you have connection issues, ensure these ports are not blocked.
- Check the detailed INSTALL.md guide for comprehensive troubleshooting
- Use "๐ง Check Dependencies" in the launcher for diagnostic information
- Visit beetlerank.com for community support
- Report issues on GitHub with system information and error messages
Racing Gameplay:
This project is open source. See LICENSE file for details.
- Guild Wars 2 community for track designs
- Beetlerank.com for server infrastructure
- All contributors and beta testers
