How it works

ProAim is written in Rust on the Fyrox engine, client and server both. These are the decisions underneath it that you can feel while playing.

Rust
Client and server
192 Hz
Tick and snapshot rate
UDP
Transport
01Netcode

Authoritative server, predicting client.

The server simulates the match and is the only thing allowed to decide what happened. Your client predicts your own movement immediately and reconciles when the server's answer arrives, which is why moving feels instant while nobody can move somewhere the server did not agree to.

Everything runs at 192 ticks a second, and a snapshot goes out on every one of them. Where a behaviour could sensibly go either way, it goes the way CS2 does it - that is a deliberate rule, not a coincidence.

None of that is tuned on a LAN and hoped for. It is played back over home internet, wifi, mobile and a deliberately bad connection, so the game you get on a mediocre line is the same game.

02Visuals

Every effect is triangles.

There is not a single sprite sheet or billboarded particle in the game. Muzzle flashes, sparks, blood, smoke, fire, tracers, bullet holes and the crosshair are all generated geometry. It costs more to build than a flipbook and it never falls apart when you walk up to it, view it from the side, or look at it on a screen larger than the one it was authored for.

03Sound

The map is part of the mix.

Sources are mono and spatialised with HRTF, so direction is carried by the same cues your ears use in a room. What is between you and a sound is measured against the real geometry: each wall in the way takes off level and rolls off the treble, and the reverb you hear is the room you are actually standing in. Every sound in the game is level-matched by measured loudness rather than by ear.

04Identity

The server decides who you are.

A client used to say what it was called and which install it was, and the server believed both. Now it says neither: you sign in once with Google, and every connection carries a single-use ticket, valid for a minute, bound to the one server address you are joining. The server spends it, looks up who that is, and puts THAT name on the scoreboard.

The long-lived credential never leaves your machine, because the game transport is plain UDP - anything sent over it is readable by whoever runs the server. A spent ticket is worth nothing to them, which is the entire reason it exists.

Only the servers published on this site move the ladder, and the game checks that list itself rather than taking a server's word for it. LAN games and your own hosted maps skip all of it - the full shape is here.