A customizable, open-source HUD plugin for MX Bikes and GP Bikes displaying real-time race information and telemetry.
Example HUD layout. All elements are fully customizable.
- Live race standings, track map, and proximity radar with approach alerts
- Lap timing with splits, personal bests, gap-to-PB visualization, and online lap records
- Event log with timestamped race events and per-event icons
- Track specific riders with custom colors and icons across all HUDs
- First-person helmet overlay with telemetry-driven tilt and vibration
- Controller rumble feedback with customizable effects
- Discord Rich Presence integration showing current session and track
- Riding stats tracking with per-lap, session, and all-time totals
- FMX freestyle trick detection with scoring and chain combos
- Telemetry visualization and compact info widgets
- Web overlay for OBS/streaming with live standings, event log, and rider focus card
- Drag-and-drop positioning with color themes and customizable hotkeys
- Automatic profile switching for Practice, Qualify, Race, and Spectate sessions
Download and install the plugin to begin customizing your HUD.
Quick Start
- Install the plugin
- Launch the game and load a track
- Right-click drag to reposition elements
- Press Tilde (~) (the key below Esc) or click the settings button in the top-right to customize visibility, scale, opacity, and more
See Installation for detailed setup instructions.
- Installation
- Controls
- Configuration
- HUDs & Widgets
- Web Overlay
- Tips & Tricks
- Advanced Settings
- Modding
- Troubleshooting
- Development
Requirements:
- MX Bikes Beta 20 or newer / GP Bikes Beta 18 or newer
- Download the latest installer
mxbmrp3-Setup.exe - Run the installer - it will:
- Auto-detect your MX Bikes and GP Bikes installations (Steam or standalone)
- Let you choose which games to install for
- Install to the correct plugins folder for each game
- Handle upgrades automatically (preserves your settings)
-
Download the latest release archive
mxbmrp3.zip -
Find your game's plugins folder:
- Steam: Right-click the game in your library → Manage → Browse local files → open
plugins - Standalone: Navigate to your game installation folder (e.g.,
C:\Games\MX Bikes\orC:\Games\GP Bikes\) → openplugins
- Steam: Right-click the game in your library → Manage → Browse local files → open
-
Extract the plugin files:
- Copy
mxbmrp3.dlo(MX Bikes) ormxbmrp3_gpb.dlo(GP Bikes) to theplugins/folder - Copy the
mxbmrp3_data/folder to theplugins/folder
Do NOT delete the existing game files (
proxy64.dlo,proxy_udp64.dlo,xinput64.dli, ortelemetry64.dlofor GP Bikes) - these are native game files, not old plugin versions.Your directory should look like this after installation (files vary slightly by game):
[Game]/ │ mxbikes.exe / gpbikes.exe │ ... │ └───plugins/ ├── mxbmrp3_data/ ← Add this folder (from release) │ ├── fonts/ ← Font files (.fnt) │ ├── textures/ ← Texture files (.tga) │ ├── icons/ ← Icon files (.tga) │ └── web/ ← Web overlay files (HTML/CSS/JS) ├── mxbmrp3.dlo ← Add this (MX Bikes only) ├── mxbmrp3_gpb.dlo ← Add this (GP Bikes only) ├── proxy_udp64.dlo ← Keep (native game file) ├── proxy64.dlo ← Keep (native game file) ├── xinput64.dli ← Keep (native game file) └── telemetry64.dlo ← Keep (GP Bikes only) - Copy
Launch the game - the plugin loads automatically. Some elements are enabled by default and can be repositioned or configured via the settings menu. See Tips & Tricks for useful setup ideas. If nothing appears, see Troubleshooting.
- Move Mouse - Show cursor and settings button (auto-hides after inactivity)
- Left Click - Interact with settings menu and HUD elements
- Right Click & Drag - Reposition elements
Keyboard and controller hotkeys can be customized in Settings > Hotkeys. By default, only the settings menu hotkey is configured:
- Tilde (~) - Toggle settings menu
Use the settings menu (Tilde or the settings button in the top-right) to configure all HUDs and widgets. Hover over any setting to see its description - all controls have in-game tooltips explaining their function.
The settings menu provides:
- General - Profiles, preferences, grid snapping
- Appearance - Font categories and color theme customization
- Hotkeys - Keyboard and controller bindings
- Riders - Track specific riders with custom colors and icons
- Rumble - Controller vibration feedback effects
- Helmet - First-person helmet overlay configuration
- Updates - Check for new versions and install updates in-game
- Individual HUD tabs - Per-element visibility, scale, opacity, and options
All settings are automatically saved between sessions.
Four separate profiles store complete HUD layout configurations:
- Practice - Practice and warmup sessions
- Qualify - Pre-qualify, qualify practice, and qualify sessions
- Race - Race 1, Race 2, Straight Rhythm sessions
- Spectate - Spectating or viewing replays
Auto-switch (disabled by default) automatically changes profiles based on session type.
All HUDs and widgets are configurable via the settings menu or directly in the .ini file.
| HUD | Description |
|---|---|
| Standings | Live race positions with gaps, status, and tracked rider indicators |
| Map | Top-down track map with rider positions (click to spectate) |
| Radar | Proximity radar with approach alerts and distance arrows |
| Timing | Split and lap times with gap comparisons |
| Gap Bar | Visual gap-to-PB bar with position markers |
| Pitboard | Pitboard-style lap information display |
| Lap Log | Historical lap times with PB indicators |
| Lap Consistency | Lap time consistency analysis with trend visualization |
| Ideal Lap | Best sector times and theoretical ideal lap |
| Records | Online lap records (CBR or MXB-Ranked) with personal bests (MX Bikes only) |
| FMX | Freestyle trick detection with scoring and chain combos |
| Telemetry | Throttle, brake, suspension graphs |
| Performance | FPS and plugin CPU usage |
| Rumble | Controller rumble effect visualization |
| Stats | Riding stats with columns for last lap, session, and all-time totals |
| Session | Session info (type, format, track, server, players, password) |
| Notices | Race status notices (wrong way, blue flag, PB alerts, last lap, finished) |
| Event Log | Timestamped feed of race events (session changes, fastest laps, penalties, finishes, pit activity) |
| Helmet | First-person helmet overlay with lean-linked tilt, suspension vibration, and visor tint |
| Widget | Description |
|---|---|
| Lap | Current lap number |
| Position | Race position |
| Time | Session time/countdown |
| Speed | Current speed |
| Gear | Current gear |
| Clock | Real-time clock |
| Speedo | Analog speedometer |
| Tacho | Analog tachometer |
| Bars | Telemetry bars (throttle, brake, clutch, RPM, suspension, fuel) |
| Fuel | Fuel calculator with consumption tracking |
| Lean | Bike lean angle with arc gauge |
| Gamepad | Controller visualization |
The plugin includes a built-in HTTP server that streams live race data to a browser-based overlay, designed for use as an OBS Browser Source.
- Enable the web server in Settings > General > Web Server (the port number is shown when active)
- In OBS, add a Browser Source with URL
http://localhost:8080(default port - use the port shown in step 1 if changed) - Set width/height to match your stream resolution (e.g., 1920x1080)
- The overlay auto-connects and displays a standings tower, event log, and rider focus card
Note: The overlay shell is cached by a service worker after the first successful load, so OBS can render the UI even if MX Bikes (and the plugin's HTTP server) isn't running yet. The very first load still requires the plugin server to be up at least once so the cache can be primed.
The overlay includes a built-in settings panel for configuring display options without editing files:
- In OBS, right-click the Browser Source and select Interact to get mouse access
- Move your mouse to reveal a gear icon in the top-right corner, then click to open the panel
- Configure compact times, tower size, event/chip filters, focus card, font size, and more
- Drag the header bar to reposition the tower
- All settings are saved to the browser's localStorage and persist across reloads
Colors and fonts sync automatically from your in-game settings.
- Logo slideshow - Sponsor/logo banner above the standings tower. Drop PNG files into
logos/(see Modding) and they cycle automatically. Toggleable with configurable interval in the settings panel. - Standings tower - Live positions with rider numbers, names, gaps, brand colors, and status chips (finished, pit, penalty, fastest lap, spectated)
- Event log - Timestamped race events (same events and filters as the in-game Event Log HUD)
- Rider focus card - Appears when spectating, showing the spectated rider with bike info, lap times, and gaps to neighbors
The overlay files are plain HTML, CSS, and JS. To customize them, place modified files in Documents\PiBoSo\[Game]\mxbmrp3\web\ - user files override the bundled versions on startup and are preserved across updates (see Modding).
style.css- Layout variables (spacing, sizing, tower width). Colors are synced from the game.index.html- Overlay structureapp.js- TheCONFIGblock at the top defines defaults for all settings. These are overridden by the settings panel (stored in localStorage).
Enable update notifications - The plugin doesn't check for updates by default. Go to Settings > Updates and set the update mode to "Notify" to get notified when a new version is available. You can also install updates directly from the settings menu.
Streaming setup - Enable the Session HUD (Settings > Session) to show the server name, track, and session type on screen for your viewers. The Pitboard and Gamepad widgets also work well on stream - both have fully customizable textures, and the Gamepad widget shows your live controller inputs. Pair with Discord Rich Presence (Settings > General) to show your current session and track in your Discord profile. For a broadcast-style overlay, see Web Overlay below.
Web overlay for OBS - The plugin includes a broadcast-style overlay for streaming. See Web Overlay for setup and configuration.
Power-user INI tweaks - Many additional options are available by editing the INI file directly. The file is well-commented and easy to work with. Each HUD section also supports per-element color overrides using ABGR hex values. For example:
[StandingsHud]
classicLayout=1 ; remove number plates and brand color strips
[SpeedWidget]
color_primary=0xff00ff00 ; green text (ABGR format)Use the Color Override Picker to convert RGB colors to ABGR format. See Advanced Settings for how to edit and hot-reload the INI file.
Track records - The Records HUD fetches online lap records from CBR or MXB-Ranked. Enable "Auto-fetch" in Settings > Records to automatically load records when you enter a track. Records also work while spectating.
Click-to-spectate - Left-click on any rider on the Map HUD or Standings HUD to switch the spectate camera to that rider.
Remove the stock pitboard - Create an empty file called pitboard.cfg in [Game]\misc\hud\ (create the directories if needed). This removes the default 2D pitboard while keeping the small 3D pitboard in the game world. Delete the file to restore it.
Show/hide the rider stand icon - This is a game setting, not a plugin setting. Enable it under Simulation > "Show Rider Stand". To customize the icon or its position, extract rider.cfg and riderstand.tga from misc.pkz\misc\helpers\ to [Game]\misc\helpers\ and edit them there.
All plugin settings are stored in mxbmrp3_settings.ini in your user data folder.
In-game vs INI-only settings:
- Most settings are configurable via the in-game settings menu
- Some power-user options are only accessible by editing the INI file directly
- INI-only settings are documented with inline comments
INI structure:
[HudName]- Base/default settings for a HUD[HudName:Practice],[HudName:Qualify],[HudName:Race],[HudName:Spectate]- Profile-specific overrides (only values that differ from base)
Editing the INI file:
With the game closed (recommended):
- Exit the game completely
- Edit
mxbmrp3_settings.ini - Launch the game to apply changes
Hot reload (for rapid iteration):
- Disable Auto-Save in Settings > General
- Edit the INI file while the game is running
- Use the Reload Config hotkey to apply changes (bind it in Settings > Hotkeys)
If Auto-Save is enabled, changes made to the INI while the game is running will be overwritten.
Plugin data and custom assets are stored in Documents\PiBoSo\[Game]\mxbmrp3\.
Add custom fonts, textures, and icons by placing them in the appropriate subfolder:
mxbmrp3/
├── fonts/ ← Custom .fnt files
├── textures/ ← Custom .tga textures
├── icons/ ← Custom .tga icons
└── web/
└── logos/ ← Sponsor/logo PNGs for the web overlay slideshow
On game startup, the plugin syncs these files to the plugin's data directory (plugins/mxbmrp3_data/). User files with the same name as bundled assets will override them. This keeps your customizations separate from the plugin installation, so updates won't overwrite your files. Restart the game after adding or modifying assets.
Textures use the naming convention {element_name}_{number}.tga (e.g., standings_hud_1.tga). They're auto-discovered and selectable via the Texture control in each HUD's settings.
Pitboard - Drop a custom .tga file (e.g., pitboard_hud_2.tga) into the textures\ subfolder. It will be auto-discovered and selectable in Settings > Pitboard > Texture.
Gamepad - The Gamepad widget ships with Xbox and PlayStation layouts. To customize them, copy gamepad_widget_1.tga (Xbox) or gamepad_widget_2.tga (PlayStation) from plugins\mxbmrp3_data\textures\ to the textures\ subfolder and edit them. Source design files (PSD) are available in assets/.
Helmet - The helmet overlay uses two textures: helmet_upper_1.tga (visor rim/top) and helmet_lower_1.tga (chin bar). Author at screen resolution with transparent visor openings and ~10% bleed on all sides (extra opaque border beyond the visible area) so tilt and vibration don't expose hard edges.
Fonts (.fnt files) are auto-discovered and assignable to categories (Title, Normal, Strong, Marker, Small) in Settings > Appearance. To generate fonts, use the fontgen utility provided by PiBoSo. See this forum post for details. An example configuration is provided in fontgen.cfg.
Icons (.tga files) placed in the icons\ subfolder are discovered alphabetically and available for tracked rider customization in Settings > Riders.
| File | Description |
|---|---|
mxbmrp3_settings.ini |
All HUD settings (positions, visibility, options) |
mxbmrp3_tracked_riders.json |
Tracked riders with colors and icons |
mxbmrp3_rumble_profiles.json |
Per-bike rumble effect profiles |
mxbmrp3_stats.json |
Unified stats, personal bests, and odometer data |
- Check Installation requirements (MX Bikes Beta 20+ / GP Bikes Beta 18+)
- Verify the DLO file and
mxbmrp3_data/are in the correctplugins/folder. Games have two directories - the game installation (contains the game .exe) and user data (Documents\PiBoSo\[Game]\). Plugins go in the game installation, not Documents. - For GP Bikes, ensure you're using
mxbmrp3_gpb.dlo, notmxbmrp3.dlo
- If you have multiple installations (e.g. standalone and Steam), the installer may pick the wrong one. Verify the plugin ended up in the
plugins/folder next to the game.exeyou actually launch. If not, run the installer again and select the correct path, or install manually.
- Ensure
mxbmrp3_data/folder is in theplugins/folder alongside the DLO file (see directory structure) - The
mxbmrp3_data/folder contains fonts, textures, and icons required for rendering - If you moved or renamed this folder, restore it from the release archive
- Go to Settings > Widgets tab and click "Reset Widgets" to correct the button positions.
- Check for duplicate MXBMRP3 DLO files - only one
mxbmrp3.dlo(ormxbmrp3_gpb.dlofor GP Bikes) should exist in your plugins folder. Other plugins' DLO files are fine.
- Drag elements to reposition them
- Use settings menu to adjust scale
- Verify the correct controller is selected in Settings > General
- If you accidentally deleted
xinput64.dlifrom the plugins folder, controller input may stop working - To restore: verify game files integrity (Steam) or reinstall the game
- If the settings show "Error" and "Port ... may be in use", another application is using the same port
- Change the port in Settings > General > Web Server Port (e.g. to 8081)
- Remember to update your OBS Browser Source URL to match the new port
- See the MX Bikes Troubleshooting Guide for general game issues (crashes, mods, plugins, RAM, controllers)
- If the Windows Event Log shows
mxbmrp3.dloas the faulting module, please report it (see below)
For bug reports or feature requests, open an issue on GitHub or leave a comment on MXB-Mods.
Built with C++17, Visual Studio 2022, PiBoSo Plugin API, and Claude Code.
CLAUDE.md- Quick-start guide for developers and AI assistantsARCHITECTURE.md- Comprehensive technical documentation with diagrams
Requirements: Visual Studio 2022+, Windows SDK 10.0, Platform Toolset v143
- Clone the repository:
git clone https://github.com/thomas4f/mxbmrp3.git cd mxbmrp3 - Open
mxbmrp3.slnin Visual Studio 2022 - Select configuration:
- MXB-Release / MXB-Debug for MX Bikes
- GPB-Release / GPB-Debug for GP Bikes
- Build the solution (Ctrl+Shift+B)
- Output:
- MX Bikes:
build/MXB-Release/mxbmrp3.dlo - GP Bikes:
build/GPB-Release/mxbmrp3_gpb.dlo
- MX Bikes:
- Husk - Gamepad widget source design files
- HornetMaX - MaxHUD, which served the MX Bikes community for over a decade
Thanks to everyone in the MX Bikes community who tested, reported bugs, and shared ideas.
Licensed under the MIT License. See THIRD_PARTY_LICENSES.md for bundled asset attributions.
Feedback and contributions are welcome.