A high-performance automated player for the Roblox rhythm game Robeats. This tool detects and responds to in-game note patterns by analyzing screen pixels and simulating keystrokes.
- Real-time screen analysis: Captures and processes game screen pixels to detect incoming notes
- Multi-track support: Handles all 4 game tracks simultaneously (mapped to keys D, F, J, K)
- Adjustable timing: Fine-tune note hit delay for optimal accuracy
- Performance monitoring: Real-time stats for hit rate and system performance
- Resource efficient: Optimized threading model with minimal CPU usage
Robeats Robot uses a producer-consumer architecture with multiple threads:
- Producer Thread: Captures screen pixels at specific positions where notes appear in the game
- Consumer Threads: One per track (4 total), each monitoring pixel data and triggering keystrokes
- Control Thread: Handles user input and displays performance statistics
The application uses atomic variables for thread-safe communication and employs a windowing cache to minimize resource usage when capturing screen pixels.
- Rust 1.60 or newer
- Windows 10/11 (for
xcapwindow capture functionality) - Administrator privileges (for simulating keystrokes)
- Dependencies:
device_query: Keyboard input detectionenigo: Keyboard simulationxcap: Screen capturectrlc: Signal handling
-
Ensure you have Rust and Cargo installed (rustup.rs)
-
Clone the repository:
git clone https://github.com/yourusername/robeats-robot.git cd robeats-robot -
Build the project:
cargo build --release
Please note that the
--releaseflag is necessary to get competitive performance -
The executable will be available at
target/release/robeats-robot.exe
The application uses several constants that can be adjusted in the source code:
const WINDOW_CHECK_INTERVAL: Duration = Duration::from_millis(500);
const TRACK_KEYS: [char; 4] = ['d', 'f', 'j', 'k'];
const TRACK_OFFSETS: [i32; 4] = [-143, -48, 48, 143];
const PIXEL_THRESHOLD: u8 = 220;WINDOW_CHECK_INTERVAL: How often to refresh the window handleTRACK_KEYS: Keyboard keys to simulate for each trackTRACK_OFFSETS: Pixel offsets from center for each trackPIXEL_THRESHOLD: Brightness threshold for note detection
Q: The application doesn't detect the Roblox window
A: Ensure Roblox is running with the window title "Roblox Game Client". Try running both Roblox and the bot with administrator privileges.
Q: Notes aren't being hit accurately
A: Adjust the delay using Up/Down arrow keys. The optimal value depends on your system performance and network latency.
Q: The application crashes or freezes
A: Check that you're running the latest build. Try increasing WINDOW_CHECK_INTERVAL if your CPU usage is high.
- The producer thread captures the game window at regular intervals
- For each track (lane), it analyzes specific pixels where notes appear
- When a note is detected (brightness > threshold), the corresponding key is pressed
- The key is released when the note passes (brightness < threshold)
- The delay parameter controls the timing between detection and keystroke
The pixel offsets are calibrated for the standard Robeats layout. If the game interface changes, you may need to adjust the TRACK_OFFSETS constant.
The application employs several optimizations:
- Window handle caching to reduce API calls
- Thread synchronization with atomic variables (lock-free)
- Small sleep intervals to prevent CPU saturation
- Efficient screen capture with rectangular region selection
This software is provided for educational purposes only. Using automation tools may violate the Roblox Terms of Service. Use at your own risk.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.