Desktop-based, highly configurable reaction time test app based on egui
Don't worry, most sections are short.
- Why
- Caveats
- UI Structure
- Mode 1 - Simple Reaction Time Test
- Mode 2 - Click Timing Test
- Mode 3 - Video Click Timing Test
- Compiling and Running
- About PRs
- I can't find a similar app anywhere
- Why a desktop app, it's to remove browser latency (with caveat below)
- Unlike most reaction time test sites, this app is very configurable
- You can also isolate training click timing without booting up your aim trainer!
- You're saving all data to disk, guaranteed no uploads, so it's privacy-friendly
- NO ADS
This app is based on egui, which might not be the best for absolute lowest latency, but at least rendering settings are configured to their lowest non-tearing latency options available.
Future migration to gpui may happen if it becomes more documented and/or widely adopted.
For the current project status, Mode 1 and Mode 2 have been reviewed, but Mode 3 hasn't really been reviewed or polished too much yet.
Let's get into this! The app is divided into three modes (tabs).
Switching modes while playing will cancel your ongoing run.
Each mode has a settings button & a run history button. Run history is saved under .local/share/reactionlab or %APPDATA%\reactionlab and can be viewed here. Each entry can be clicked to show details that are the same as thedetails given when you finish a play/run from any mode.
Run history can be wiped by date from each mode's settings window.
Conventional reaction time test. It uses millisecond precision. It plays like this:
They should be quite self-explanatory.
Dynamically-drawn click timing test. Click timing means you have to click your mouse button on the right time, a.k.a. when the drawn crosshair is within the passing ball's hitbox.
There are some settings that may need explainers here.
- Crosshair settings are similar to CSGO/CS2 crosshair settings, so look that up for how they're intended to work. It's not visually 1-to-1 with CS though.
- After appearing from one side, the ball can either stop on the crosshair (simulating enemy peeking then stopping) or just continue moving to the opposite side depending on settings.
- Velocity, acceleration and deceleration settings are intended to simulate player counterstrafing behavior.
Click timing test but you're free to choose clips and set when you should click! This needs some setup explanation so please read the video setup sub-section below.
When you choose to play a group, videos will be picked from the group at random. Here's each video's settings explanation:
- Pre-wait start: Start playing the video at this exact point of time or frame number.
- Pre-wait end: Pause playing the pre-wait part of the video here, and begin the random wait time. May match the pre-wait start point if you just want the video to begin paused at a certain time or frame number.
- If "Has pre-wait snippet" is turned off, then the video will begin paused at the first frame and begin the random wait time.
- Click point: After the pre-wait end and random wait time has passed, the video will unpause until this click point. Then it will pause again and you have to click.
- Post-click end: If ticked, will unpause after you click until this post-click end point. This is just for visual feedback, and can be unticked too to turn it off.
Subset of the click timing test settings. Refer to the click timing test section for explanation.
it's a standard Rust project, so...
cargo runAt this stage of the project I do accept both handwritten and AI PRs, though for AI PRs please state your concrete reason or use case for a fix or feature addition.
This policy may change in the future if I decide to transition to a feature freeze stage for starting polishing work on existing features.