It needs some way of clearing all data. I chose "don't know" on calibration because I couldn't be bothered to try to work it out (but my mouse will be on the low end because it's just some random cheap mouse). Then, the training was ridiculous having to move my mouse miles between targets, but there's no way to change the initial calibration step. Not even in settings / data / delete.
I'm not really the target user though. I guess those who are will already know exactly how many DPI their mice are.
"I felt like I may be uniquely equipped to make this problem much more complicated than it needed to be."
Worth it!
maccard 13 hours ago [-]
I enjoyed this. Does the same theory apply to a gamepad? My intuition says yes but curious what you think
pmazumder 12 hours ago [-]
I imagine it would generalize well to any fine motor control task with a defined tracking objective. The literature I reference mentions that human error when steering cars also roughly follows the same distribution.
tranceylc 13 hours ago [-]
Haven’t had the chance to use it use it yet, but the writeup on it is super cool.
Encourage anyone to check it out
dkdbejwi383 13 hours ago [-]
Even with "reduce motion" enabled the background of this page is constantly animating - it's so distracting I just gave up.
pmazumder 12 hours ago [-]
I didn't realize it could be distracting, sorry. It shouldn't happen now
pprotas 12 hours ago [-]
The aiming is very choppy because it feels like my cursor is "on rails", or stuck in some kind of grid. Not representative of any modern shooting game I've played. I think this would teach the wrong habits if someone were to use it as an aiming coach.
pmazumder 12 hours ago [-]
Are you using it on chromium? It's the only browser I get raw mouse events from right now, so other browsers tend to be more choppy.
As for the habits, the point of this program is that it ultimately admits that far domain transfer for aim trainers is difficult regardless of what you do, so it tries to optimize in an absolute sense your motor control over your mouse. That way, regardless of scenario you'll have smoother and more efficient aim.
This seems to suffer from what a lot of vibe coded projects suffer from, which is just a whole lot of unnecessary text everywhere. I find one shot outputs always have a lot of jargon, extra "micro copy" and displays the same information multiple times in multiple places. It makes it difficult at a glance to understand what you're looking at.
I'm not sure what in the training set causes the models to do this, even in my own experience I'll be specific about the feature I'm building and the model will add an unnecessary status message for no reason.
Tox46 13 hours ago [-]
So cool! but somehow the simulation does not work on firefox. the crosshair is just stuck in the middle
pmazumder 12 hours ago [-]
It should still work on firefox, but the experience will likely not be as good. Chromium is the only browser engine (as far as I know) that gives me access to raw, unaccelerated mouse events, so it's the smoothest experience.
dminik 12 hours ago [-]
I had the same issue. Linux + Firefox resulted in zero movement. Chrome worked fine.
RunSet 8 hours ago [-]
In case anyone likes to play Quake with a gamepad I recently made this add-on which adds Dark Soul III style target lock. (Click L3 to toggle. Breaking line of sight breaks the target lock.)
Some might consider this "cheating" but in my opinion aiming with a mouse is so much easier that using a mouse against players using gamepads more resembles cheating.
ramgine 7 hours ago [-]
I used to play q3l competitively and I can’t imagine trying to get any real results using a gamepad without help. That’s a neat idea.
MayeulC 13 hours ago [-]
Interesting project! I am relatively skilled at FPS with a mouse, but would like to improve with my trackball (so that I don't have to change my setup when playing an FPS). This could cone in handy, though I imagine that there aren't multiple "mouse profiles" built-in? It could be useful for players to understand how much of a difference different mice make.
pmazumder 13 hours ago [-]
Hi, thanks for the feedback! Multiple mouse profiles isn't something I considered, but I'll definitely look into it.
I know a lot of FPS gamers are super particular and switch between mice/mousepads/skates constantly, so it would probably help to provide a semi objective measurement of what setup they're doing best on as well
hoechst 10 hours ago [-]
very cool. project, will evaluate this in detail.
one note, on the "Feel your sensitivity." page, it says " raw input off — OS mouse acceleration is active. Your browser couldn’t give OpenAim raw mouse input, so your OS acceleration curve is reaching the game: the same hand motion turns further when you move faster, which no aim training survives. On Linux: set your mouse’s libinput acceleration profile to “flat” (unaccelerated). Chrome and Edge deliver raw input directly."
but my mouse is definitely unaccelerated (confirmed via `xinput list-props pointer:"Logitech PRO X 2"`). i am unsure if this leads to erroneous results when aim training.
i'm on: Chromium 150, linux, x11 kde plasma.
CuriouslyC 8 hours ago [-]
Random note, the biggest single thing you can do to improve your aim is to crank down your sensitivity and learn to strafe with the target rather than try to track with the mouse. The second biggest thing you can do is stop trying to exactly track them, and instead try to predict their strafe patterns based on their surroundings so you can place shots where they're likely to be, at least for any weapon with a travel time.
ramgine 7 hours ago [-]
These are great suggestions. It’s what I see pros doing, just really hard to get there.
King-Aaron 14 hours ago [-]
CS 1.6 scouts and knives was the ultimate aim trainer
superxpro12 11 hours ago [-]
UT instagib for me
pelagicAustral 11 hours ago [-]
never played this mode, I might just give it a shot later on, thanks for the off-shoot comment
psalaun 14 hours ago [-]
woah, so many memories bubbling up right now, thanks!
danielrmay 7 hours ago [-]
Neat project. I wonder how a small model could interpret movement data to provide personalized improvement suggestions e.g. "you're weaker targeting left than right, but only under these conditions"
pugdogdev 5 hours ago [-]
Wow nice!
I am so rusty
This can be really useful for kids and elderly people I think.
Great job
8 hours ago [-]
isqueiros 10 hours ago [-]
This looks pretty cool, but I'm pretty sure my imported sens from Deadlock has gone wrong. I have 0.68 in game and it feels significantly slower on the app.
11 hours ago [-]
mherdelight 11 hours ago [-]
I might use it to compare different mice I have, have you considered adding a comparison option?
terekhindc 9 hours ago [-]
does it separate flick errors from tracking errors, or is it just angular delta over time? valorant aim usually feels dominated by confidence-to-fire more than path smoothness.
lelanthran 12 hours ago [-]
You might want to look into this page - it slows my PC to a crawl :-(
pmazumder 12 hours ago [-]
What browser are you on? Hardware acceleration? It shouldn't be very difficult to run, so I'm guessing some sort of a compatibility issue
lelanthran 12 hours ago [-]
> What browser are you on? Hardware acceleration? It shouldn't be very difficult to run, so I'm guessing some sort of a compatibility issue
Sorry, the linked page, not the actual app. It slows my PC to a crawl.
maxlin 3 hours ago [-]
I got semi average score of 2.4k not trying super hard, but the "moving click" exercise seems dubious, got literally zero off it. Not sure if it's comparable to any actual game?
juliendsv4real 8 hours ago [-]
Very cool, would you open source the code? did you start this from scratch?
WithinReason 10 hours ago [-]
the calibrated sensitivity is correct but the in-game sensitivity is waaaaay higher, it's a bug
djmips 5 hours ago [-]
Can right mouse escape during calibration as well as ESC please.
Make it easier to re-calibrate
fragmede 7 hours ago [-]
This is really cool! The calibrate part could be easier to tweak, so I can dial in what a 360 is on my system, instead of having to go back back next next try, and then I can't re-calibrate again? Or at least, it's not obvious where to change those settings.
thomasikzelf 11 hours ago [-]
Cool app! I also had some ideas a while ago that I think the current breed of aim trainers are still missing.
In-game practice like the Range, DM, and Team DM still feels like the gold standard to me. I generally only use aim trainers when they offer a noticeably higher return per minute, rather than just teaching me how to get good at aim trainer specific mechanics.
Here are a couple of things I think an aim trainer should have:
- Dynamic difficulty: I feel it works best when trying to keep accuracy relatively high, but fluctuating the target accuracy threshold over time and adjusting difficulty dynamically to match it. That keeps you challenged without breaking form.
- Dynamic scenarios: Instead of picking scenarios manually, I think a trainer should ideally detect what you suck at and launch those directly.
- Habit coaching: It would be awesome if a coach flagged bad habits in real time—like clicking too fast (low accuracy), doing a slow tracking movement instead of a sharp flick (mircoflicks), or using tracking when click timing is needed.
- Biomechanics: Finding the exact "perfect" sensitivity feels less important to me than ensuring your arm and wrist are working together properly, altough this might depend on your aiming style.
- Simplicity: A lot of trainers overwhelm you with numbers and menus. I image a simple "click here to start and follow feedback" workflow with nothing else for the user to learn. Seeing a bunch of numbers is less important to me then just getting better (maybe with a final score).
Valorant-specific focus: Trainers often feel too generic for tactical shooters like Valorant, where angle holding, target reading, and micro-corrections dominate.
- In this tool, difficulty scales dynamically while playing (the parameter in parentheses changes on the fly):
- Angle Hold (enemy speed increases): Practicing holding angles against multiple targets. Holding angles is crucial in Valorant (just look at how Primmie plays).
- Follow (standstill window decreases): Forces active mouse correction and reading the target before shooting. I tend to click too fast, so this forces me to slow down and micro-correct.
- Jiggle (jiggle speed increases): Targets perform tight jiggles. I find players who spam small jiggles really hard to hit, so this directly targets that weakness.
- Micro Flicks (snap distance increases): Micro flicks are easy enough to train in the Range, so I mostly use this mode when I am away from my gaming PC.
- Static (target size decreases): Standard static clicking, but with dynamic scaling as targets shrink.
- Strafe (movement speed increases): Moving targets with limited hit windows. When watching pro DM VODs, most kills are on stationary targets, but hitting moving players is still vital and tricky to isolate in-game.
I am still not very good at Valorant but the aim train ideas are interesting. Let me know what you think!
poly2it 12 hours ago [-]
Interesting project. One suggestion I'd make is to reduce the configuration complexity up front on new users. It is kind of overwhelming before you have a feel for how your settings translate to the actual training experience.
Rendered at 20:37:54 GMT+0000 (Coordinated Universal Time) with Vercel.
I'm not really the target user though. I guess those who are will already know exactly how many DPI their mice are.
Worth it!
Encourage anyone to check it out
As for the habits, the point of this program is that it ultimately admits that far domain transfer for aim trainers is difficult regardless of what you do, so it tries to optimize in an absolute sense your motor control over your mouse. That way, regardless of scenario you'll have smoother and more efficient aim.
EDIT: Maybe take some inspiration from Three.js? This demo works fine for Firefox and Chrome with a nice, smooth cursor that I'm used to https://threejsdemos.com/demos/camera/first-person
I'm not sure what in the training set causes the models to do this, even in my own experience I'll be specific about the feature I'm building and the model will add an unnecessary status message for no reason.
https://www.slipseer.com/index.php?resources/textless-hud.58...
Some might consider this "cheating" but in my opinion aiming with a mouse is so much easier that using a mouse against players using gamepads more resembles cheating.
one note, on the "Feel your sensitivity." page, it says " raw input off — OS mouse acceleration is active. Your browser couldn’t give OpenAim raw mouse input, so your OS acceleration curve is reaching the game: the same hand motion turns further when you move faster, which no aim training survives. On Linux: set your mouse’s libinput acceleration profile to “flat” (unaccelerated). Chrome and Edge deliver raw input directly."
but my mouse is definitely unaccelerated (confirmed via `xinput list-props pointer:"Logitech PRO X 2"`). i am unsure if this leads to erroneous results when aim training.
i'm on: Chromium 150, linux, x11 kde plasma.
Sorry, the linked page, not the actual app. It slows my PC to a crawl.
In-game practice like the Range, DM, and Team DM still feels like the gold standard to me. I generally only use aim trainers when they offer a noticeably higher return per minute, rather than just teaching me how to get good at aim trainer specific mechanics.
Here are a couple of things I think an aim trainer should have:
- Dynamic difficulty: I feel it works best when trying to keep accuracy relatively high, but fluctuating the target accuracy threshold over time and adjusting difficulty dynamically to match it. That keeps you challenged without breaking form.
- Dynamic scenarios: Instead of picking scenarios manually, I think a trainer should ideally detect what you suck at and launch those directly.
- Habit coaching: It would be awesome if a coach flagged bad habits in real time—like clicking too fast (low accuracy), doing a slow tracking movement instead of a sharp flick (mircoflicks), or using tracking when click timing is needed.
- Biomechanics: Finding the exact "perfect" sensitivity feels less important to me than ensuring your arm and wrist are working together properly, altough this might depend on your aiming style.
- Simplicity: A lot of trainers overwhelm you with numbers and menus. I image a simple "click here to start and follow feedback" workflow with nothing else for the user to learn. Seeing a bunch of numbers is less important to me then just getting better (maybe with a final score).
Valorant-specific focus: Trainers often feel too generic for tactical shooters like Valorant, where angle holding, target reading, and micro-corrections dominate.
I built a small aim trainer to experiment with these ideas myself: https://mousecontrol-thomaswelter-fceff2dbe456668c6bedef32db... (the aim trainer is very basic, only made for myself, fixed sens etc).
- In this tool, difficulty scales dynamically while playing (the parameter in parentheses changes on the fly):
- Angle Hold (enemy speed increases): Practicing holding angles against multiple targets. Holding angles is crucial in Valorant (just look at how Primmie plays).
- Follow (standstill window decreases): Forces active mouse correction and reading the target before shooting. I tend to click too fast, so this forces me to slow down and micro-correct.
- Jiggle (jiggle speed increases): Targets perform tight jiggles. I find players who spam small jiggles really hard to hit, so this directly targets that weakness.
- Micro Flicks (snap distance increases): Micro flicks are easy enough to train in the Range, so I mostly use this mode when I am away from my gaming PC.
- Static (target size decreases): Standard static clicking, but with dynamic scaling as targets shrink.
- Strafe (movement speed increases): Moving targets with limited hit windows. When watching pro DM VODs, most kills are on stationary targets, but hitting moving players is still vital and tricky to isolate in-game.
I am still not very good at Valorant but the aim train ideas are interesting. Let me know what you think!