VelociStat
Race analytics for Velocidrone
Turn every Velocidrone race into insight you can act on — lap splits, gate-by-gate timing, consistency trends, throttle telemetry, and leaderboard progress. Captured automatically while you fly, visualized beautifully here.
What you get
See your racing in numbers
A taste of what a single session looks like.
Lap Time Progression
Per-Gate Split Times
Example data — your real stats appear once you connect VelociCapture.
How to start
Dashboard Overview
Personal Records
Recent Sessions
All Sessions
All Tracks
Session Detail
Lap Time Progression
Attempt Outcomes
Mistakes vs Attempts
Avg Throttle vs Lap Time
All Attempts
Track Analysis
Lap Time Progression
Attempt Outcomes
All Races
Completion Rate Trend
Mistake Timeline
Lap Analysis
Lap Time Distribution
Lap-by-Lap Comparison
Consistency (Spread Over Attempts)
Best Lap Over Attempts
Holeshot vs Race Time
Progress & Trends
Leaderboard Top % Over Time
PB-Race Spread (?)
Lap Consistency (StDev of all laps)
Mean Race Spread (?)
Median Race Spread (?)
Attempt Outcomes Over Time
Mistakes Per Attempt Over Time
Time to Best Race
Hot Lap Gap
Session Duration vs Top %
Average Session Duration
Stick & Throttle Analysis
Throttle vs Yaw Heatmap
Pitch vs Roll Heatmap
Stick Inputs
Gate Analysis
Split Times per Gate
Lap Consistency Heatmap
Time Loss vs Best
Trouble Zones
Track Sections
Section Times
Section Consistency Heatmap
Time Loss vs Best
Trouble Zones
Quad Setups
VelociCapture
Engine-accurate race data, captured automatically
VelociCapture connects directly to Velocidrone's WebSocket engine to capture every gate pass, lap split, and race result with frame-perfect accuracy. Combined with joystick telemetry and gate screenshots, it builds a complete picture of every flight — synced live to VelociStat.
One click to download, then run VelociCapture.exe.
Setup
How It Works
What Gets Captured
Changelog
- No more training-mode picker — capture starts the moment Velocidrone connects
- Session mode (Race Sim vs PB Hunt) is now detected automatically from how you flew, no need to declare it
- Multiplayer races now capture correctly — only your own drone is tracked, instead of merging every pilot's gates into one garbled race
- Camera panning to other pilots during a race no longer corrupts your data
- Watching a race without flying no longer creates a phantom restart
- Leaderboards now auto-fetch for community/MultiGP tracks downloaded after the game shipped
- Admins can manually add a track leaderboard from the Leaderboards page
- Fix CDN caching — Cloudflare was serving stale exe to new downloaders; deploy now sets proper cache-control headers
- Sticks tab now hidden by default — only shown when Debug Mode is enabled in Settings
- IMU telemetry capture at 60Hz — records position, velocity, and attitude from Velocidrone's game engine
- Per-gate speed and 3D position on every gate crossing — see how fast you enter each gate
- Flight path data synced to cloud for future racing line dashboards
- New racing line visualization tool with speed coloring and gate markers
- Restored Sector Drill mode — picker is now 4 modes in one row: Sector Drill, Race Sim (default), PB Hunt, Race Prep
- Training mode picker simplified from 6 modes to 3: Race Sim (default), PB Hunt, Race Prep
- Dropped Track Learning, Sector Drill, and Free Flight — too much decision friction at session start
- Race Prep intent tightened to "3 attempts, no restarts" (enforcement logic still to come)
- Historical sessions tagged with dropped modes remain in the dashboard unchanged
- Revert to single-file
VelociCapture.exe— download is one click again, no zip extraction required - AV concerns from the one-file unpacker deferred to a proper installer later
- Switch to onedir build distributed as
VelociCapture.zip— eliminates the%TEMP%unpacker, the biggest Defender ML heuristic for PyInstaller apps - Download: extract the zip, then run
VelociCapture.exefrom the extracted folder
- Replace PowerShell and hidden tasklist subprocess calls with Win32 process enumeration — reduces Defender ML false-positive signals
- Remove self-replacing OTA auto-updater (was flagged as virus by Windows Defender)
- Update banner now opens the download page in browser — users install new builds manually
- OTA update UX polish: banner and log reflect download state
- Wider login button in header
- OTA update now applies on next launch — no more restart errors
- Fix cloud sync losing data on shutdown
- Fix header buttons jumping, clearer status text
- Fix "Failed to load Python DLL" error after OTA restart
- Failed sync payloads persist to disk and resend on next startup
- Retry window ~3 min to survive server deploys
- V2 push pipeline: raw gate events sent to server, all metrics derived server-side
- Schema version 2.0 — simplified client, smarter server
- Fix OTA update Python DLL error by cleaning PyInstaller env vars at process level
- Rename mode picker skip button to "Default"
- Fix "Failed to load Python DLL" error after OTA restart
- Add hover tooltips to training mode cards
- Fix OTA update infinite reopen loop and visible CMD window
- Fix wrong track metadata when switching tracks
- Renamed track ID fields in setup payloads for clarity
- In-app OTA updates: download and install directly from the app
- Full-width orange update banner on all screens
- Real-time download progress and restart screen
- Debug Mode: raw WS logging to file + real-time Debug tab
- Mode picker: waits for WebSocket, proper Stop behavior
- Fix rates: correct per-loadout profile reading from Velocidrone DB
- Removed gate screenshots (moved to VelociGate)
- Training mode selection: declare session intent before flying
- 6 modes: Track Learning, Sector Drill, Race Sim, PB Hunt, Race Prep, Free Flight
- Mode picker on app start, color-coded mode badges in session list
- Re-enabled stick tracking: joystick recording at 20Hz, auto-starts when enabled
- iOS-style switch toggles with auto-save for capture features
- Controller connection indicator in footer
- Renamed "DNF" to "Restart" across entire codebase and dashboard
- Schema v1.11 — backward compatible with older desktop versions
- Fix crash on session start: setup saved before session ID generated
- Fix "Test Connection" not sending auth header
- Fix Race Spread computation: use max-min within race instead of session best lap
- Configurable Velocidrone user data path (Player.log, user11.db, settings.db)
- Auto-detected per platform: Windows AppData/LocalLow, Linux ~/.config/unity3d
- Settings UI redesign: full-width paths card, compact 3-column layout, scrollable
- Automatic leaderboard fetching based on current track
- Auto-detect Velocidrone install path — fixes model/scenery name for non-standard installs
- New "Velocidrone" path setting in Settings for manual override
- Re-detects automatically when Velocidrone starts
- New "RAW WS" tab for viewing raw WebSocket JSON
- Improved WebSocket stability — heartbeat-only keepalive
- Fixed WebSocket ping/pong timeout disconnecting during races
- Fixed ghost race bug leaving attempts unclosed
- Fixed fallback finish losing race data — saves as restart now
- Improved WebSocket keepalive reliability
- Fixed crash on close when sticks UI is hidden
- Cleaner UI: hidden sticks-related elements (coming back later)
- Simplified auto-update: notification opens download page instead of in-app update
- Improved mistake detection:
baseline × 2 + 0.5sthreshold - Eliminates false positives on fast gates (50-200ms splits)
- Auto-update: checks CDN for new versions, one-click download and restart
- Controller indicator shows grey when stick tracking is disabled
- Fixed button size mismatch and Settings page scroll issues
- Game Info page uses Segoe UI font
- Controller/stick tracking disabled by default to avoid latency
- Can be re-enabled via Sticks toggle in the UI
- Fix stick tracking latency — eliminated duplicate joystick polling
- Reduced poll rate 20Hz → 10Hz, 4x fewer USB driver calls
- Configurable via
stick_poll_hzin config
- Fix ghost race detection killing capture session on Stop/Start
- Thread-safe session attach/detach
- Fix quad setup reading wrong loadout — camera angle now matches active setup
- Camera angle displayed as positive value matching Velocidrone's UI
- Mistake detection: raised minimum delta to 1.0s — only flags obvious time losses
- Mistake detection tuning — requires 500ms minimum delta, prevents false positives
- Header shows username (green) when logged in, logout moved to Settings only
- WS Log tab — raw WebSocket message viewer with color-coded message types
- Persistent WebSocket — connection stays alive across Stop/Start, fixes race data loss
- Ghost race detection — auto-reconnect when Velocidrone drops gate data
- Header login status indicator and log auto-trim for long sessions
- Config moved to ~/velocidrone_captures/ — survives exe updates
- Fix login not persisting between app restarts
- Fix antivirus false positives — removed screen capture libraries from exe
- Added PE metadata and application manifest
- Exe size reduced from 35.7 MB to 13 MB
- Cloudflare R2 exe distribution via cdn.velocistat.com
- One-click download — no installation needed
- Integration testing framework with real Velocidrone recordings
- Streaming WebSocket recorder (no data loss on crash)
- Pilot name sourced from game engine via WebSocket
- Auto-links pilot to Google account on VelociStat
- Google OAuth login replaces shared API key
- Redesigned UI to match VelociStat dark theme
- Restart race recording with gate progress tracking
- Renamed "aborted" to "restart" across all data
- WebSocket-only architecture (removed legacy OCR/audio)
- Gate screenshots pushed to VelociStat
- Crash detection via screen capture
Онлайн-турнір
GRL: Velocidrone Edition
Година відкритої кваліфікації, потім сітка на 30 пілотів з вибуванням. Лети швидко, щоб отримати високий посів, піднімайся від хіту до хіту — остання група, що залишиться, виборює подіум.
Хочеш брати участь?
Реєстрація через Google Форму. Вкажи свій точний нікнейм у Velocidrone — саме за ним ми зіставляємо твій кваліфікаційний час і результати гонок.
ЗареєструватисяЯк проходить подія
Технічні вимоги
-
1
Ліцензований Velocidrone Simulator Придбати ліцензію: velocidrone.com/shop
-
2
Увімкнена опція «Auto Leaderboard Time Upload» У налаштуваннях Velocidrone — щоб ваш час автоматично потрапляв у таблицю лідерів.
-
3
Реєстрація в Google Form Вкажіть нік пілота точно такий, як у Velocidrone.
Для новеньких у Velocidrone
Не знаєш, на чому літати? Ось найпопулярніший вибір серед профі — добрий старт для новачка.
Кваліфікація
Перший етап — особистий залік на час. Він вирішує, хто потрапляє в сітку й з яким посівом.
- Новий трек. Літаємо свіжий трек, який оголошуємо перед стартом — однакові умови для всіх, без переваги «накатаних».
- Година на результат. Відведено 60 хвилин: зафіксуйте свій найкращий результат у лідерборді (гонка на 3 кола). Спроб — скільки завгодно.
- Відбір 30 пілотів. Коли година спливає, топ-30 за результатом проходять далі й отримують посіви 1–30 (Посів 1 — найшвидший).
- Далі — ладдер на вибування. Посів визначає, де ви заходите в сітку: нижчі посіви стартують першими. Структуру та нарахування очок описано нижче.
Сітка — 30 пілотів, 9 хітів
Хіти проходять по черзі. Переможці піднімаються; кожен хіт поєднує 3 переможців із 3 свіжими, вищими посівами. Фінальний хіт визначає подіум.
Нарахування очок у хіті
- Кожен хіт — це 3 гонки. Очки за місця підсумовуються за всі три.
- Найбільша сума перемагає — більше очок означає вище місце в групі.
- Топ-3 за сумою очок проходять далі; останні 3 вибувають.
- Краш або незавершена гонка (DNF) дають 0 очок (останнє місце) у цій гонці.
- Однакова сума очок? Перевагу дає найкраще місце в окремій гонці (далі — вищий кваліфікаційний посів).
Кваліфікація
Кваліфікація — наживо
Хіти та результати
Турнір — Повні правила
1. Огляд
GRL: Velocidrone Edition (Gnizdo Racing League) — онлайн-турнір із Velocidrone у класі Open (5"). Дата проведення: 11.07.
Складається з двох етапів: годинна відкрита кваліфікація, що визначає посів, і ладдер на 30 пілотів з вибуванням, яку літають у хост-кімнатах мультиплеєра.
2. Допуск: реєстрація та вимоги
- Ліцензований Velocidrone Simulator — потрібна придбана ліцензія (velocidrone.com/shop).
- Увімкнена опція «Auto Leaderboard Time Upload» у налаштуваннях Velocidrone. Без неї ваш кваліфікаційний час не потрапляє в таблицю лідерів — і не зараховується.
- Реєстрація — через Google Форму, яку оголосять перед подією. Вкажіть точний нікнейм у Velocidrone: саме за ним зіставляються кваліфікаційні часи (таблиця лідерів) і результати гонок наживо (мультиплеєр) — за розбіжності результат неможливо зарахувати.
- Лише зареєстровані пілоти можуть отримати посів у сітці.
3. Кваліфікація (1 година)
- Використовується один визначений трек. Щоб таблиця була чистою, це новий або рідко літаний трек, тож старі часи не переносяться.
- Зараховується лише результат на оголошеному кваліфікаційному треку (клас Open 5"), успішно завантажений у таблицю лідерів.
- Вікно — 60 хвилин. Пілоти літають соло на час із необмеженою кількістю спроб.
- Організатор опитує таблицю лідерів Velocidrone раз на хвилину; публічна таблиця кваліфікації оновлюється наживо.
- Наприкінці вікна позицію кожного пілота визначає його найкращий результат у лідерборді (гонка на 3 кола, як і в самому турнірі). Топ-30 зареєстрованих пілотів проходять далі.
4. Посів
- Пілоти отримують посіви 1–30, де Посів 1 — найшвидший.
- Посів визначає, де пілот заходить у ладдер: найнижчі посіви починають знизу, найвищі заходять найпізніше.
5. Формат сітки — Ладдер
Сітка на вибування з 9 хітів, кожен — група з 6 пілотів:
- Хіт 1 — це 6 найнижчих посівів (25–30).
- Топ-3 кожного хіту проходять далі й об'єднуються з наступними 3 вищими посівами, утворюючи наступний хіт із 6. Останні 3 вибувають.
- Так ладдер піднімається до Хіту 9 (Фіналу): 3 переможці з Хіту 8 плюс топ-3 посіви (1–3).
- Хіти літають послідовно (кожен потребує переможців попереднього), у єдиній хост-кімнаті мультиплеєра Velocidrone.
- Формат розраховано на 30 пілотів. Якщо зареєстрованих буде інша кількість, організатор адаптує сітку й оголосить остаточну схему перед стартом.
6. Очки та нарахування
- Кожен хіт — це 3 гонки, кожна — стандартна гонка на 3 кола.
- За гонку очки нараховуються за фінішне місце: 1-е = 5, 2-е = 4, 3-є = 3, 4-е = 2, 5-е = 1, 6-е = 0.
- Результат пілота в хіті — це сума очок за 3 гонки. Найменша сума — найкраща.
- Краш / DNF у гонці дає 0 очок (останнє місце) у цій гонці.
- Очки обнуляються щохіту — переможці починають з нуля проти нової групи.
7. Прохід далі та тай-брейки
- 3 найбільші суми очок у хіті проходять далі; 3 найменші вибувають.
- Якщо два пілоти мають однакову суму очок (зокрема за вирішальне 3-є/4-е місце для проходу), перевагу визначає найкраще місце в окремій гонці серед 3 гонок хіту.
- Якщо рівність зберігається, перемагає вищий кваліфікаційний посів.
8. Підсумкові місця
- Фінал (Хіт 9) визначає місця 1–6 за очками хіту.
- Пілотів, що вибули раніше, ранжують за тим, наскільки високо вони піднялися ладдером — пізніше вибування дає вище місце. У межах кожної трійки, що вибула, ранжування йде за очками хіту, а далі — за тай-брейками вище.
- Так формується повний порядок місць 1–30.
9. Процедура хіту
- Хіти сітки проходять у кімнаті мультиплеєра, яку хостить організатор; пілоти просто приєднуються й літають. Жодного додаткового ПЗ не потрібно — лише сам Velocidrone; захоплення результатів робить організатор.
- Після оголошення номеру хіту пілот зобов'язаний: (1) зайти в онлайн-кімнату симулятора, надану організаторами; (2) зайти у голосовий канал ПЕРЕГОНИ на Discord-сервері.
- Під час польоту усі пілоти мають бути замьючені (мікрофон вимкнено). Порушення цього правила — дискваліфікація.
- Після завершення хіту (за оголошенням організаторів) пілоти, які не проходять далі, мають самостійно покинути кімнату в симуляторі протягом 2 хвилин. Порушення — бан на подальші турніри GRL.
- Готовність до виклику. Пілот має бути на місці й готовий, коли викликають його хіт. Грейс-період — 2 хвилини після виклику; далі пропущені гонки зараховуються як DNF на розсуд організатора.
- Зафіксовані організатором результати є остаточними.
10. Дисципліна та поведінка
- Взаємоповага та спортивний дух — основа нашого турніру. Будь-які прояви агресії караються дискваліфікацією та баном на подальші турніри GRL.
- Технічні несправності. Будь-які технічні проблеми пілота (інтернет, ПК, обладнання, симулятор) — на відповідальності самого пілота. Через них гонка не перезапускається.
- Дисконект під час гонки зараховується як DNF (0 очок) за ту гонку; якщо пілот повертається, він продовжує наступні гонки хіту.
- Відповідність нікнейму та класу. Нік у мультиплеєрі має точно збігатися з реєстрацією, а квад — відповідати класу Open 5". Невідповідність — результат не зараховується / дискваліфікація.
- Чесна гра. Будь-які модифікації, експлойти чи дії, що дають нечесну перевагу, заборонені — дискваліфікація та бан.
- Спірні моменти. Рішення організаторів остаточне. Усі питання — у відповідний текстовий канал Discord, а не в голосовому під час гонок.
- Згода з регламентом. Реєстрація означає згоду з усіма правилами. Організатори можуть уточнити регламент до старту й оголосять про зміни.