How a shot is ruled on

Authorize, then observe

Most combat servers either trust what the client says about damage, or try to recompute the game’s damage arithmetic themselves. The first is cheatable in one line. The second produces a validator that is wrong at the edges, and a validator that is wrong at the edges kicks real players. SKIRM splits the job so each half is authoritative over what it can actually know.

Authorization

Every shot raises a damage event, and the server answers a yes or no question it can answer perfectly. Is this attacker in this arena, alive, holding a weapon the server granted, firing no faster than that weapon can, at a victim in the same arena who is not spawn-protected, not a teammate, and within range? A refused event is never relayed, so the damage happens nowhere.

Accounting

Health is then read server-side and never predicted. The server sees the true health whatever the client believes, and it decides who died and who gets the kill.

A client cannot claim a kill

It cannot deny one either, or hand one to a friend. Attribution is entirely server-side.

Godmode is a signal

Damage that was authorised, landed, and did not move the health the server reads back is exactly the shape the anti-cheat looks for.

Ranked has a ping gate

There is no lag compensation on this platform, so the only honest levers are refusing the match and matching regionally. Casual still takes a 200ms player. A ranked series does not.

Paintball is structurally immune to desync

Its arena runs fully scripted. No GTA damage is ever applied, so armour, body multipliers and a lying client are all irrelevant. One hit is one elimination.

Anti-cheat

What our layer actually does

SKIRM detects the half a commercial product cannot, because it needs to know the rules of this server. Damage the game’s own rules make impossible, weapons the server never granted, movement the map does not permit, entities nothing has a reason to create, and abuse of the server’s own events.

One escalator, one set of thresholds

Every detector reports into one escalator, so thresholds live in one place and a single false positive cannot ban somebody from three directions at once. Flags accumulate on a rolling window, weighted by how confident the server is that a legitimate client on a bad connection could not have produced the signal.

What it does not claim to do

It is not a replacement for a memory-scanning anti-cheat and does not claim to detect aimbot, ESP or an injected DLL. A commercial product is expected to run alongside it.

The small print that decides fights

Everybody arrives on the same numbers

None of these are settings. They are applied to every player on every join, because a duel between two people running different figures is not a duel.

Everyone runs the same numbers

Every player’s GTA multiplayer stats are set to 100 on join. Sprint, recoil, accuracy and reload, so two people in a duel are not on different figures because of what they last did in GTA Online.

Freemode peds only

A ped model is a hitbox. Nothing else is allowed to spawn.

No nameplates in a fight

They are off in every combat world, and the server refuses the name request as well, because a name drawn over a player is a name drawn through a wall.

Friendly fire is cancelled outright

Not reduced, not reflected. In a team mode it does not happen.

Attachments are an allow-list

A scope hash that changes weapon stats is closed permanently rather than chased with a deny-list.

A client cannot create an entity in a match

Match worlds run under strict entity lockdown with ambient population off, which removes the whole class of spawn-a-tank-in-the-arena exploit rather than detecting it.

Moderation

Evidence the reporter did not write

Almost nothing here needs a staff member to happen. The systems do the work, and the only time you wait on a person is when a person is genuinely the right answer.

Reports carry the server’s own evidence

A report attaches the damage log, position, ping and flag history the server recorded itself. Nothing in the evidence comes from the reporter. /report with no arguments opens a picker, because reporting the person who just killed you should not be a spelling test.

Vote-kick that cannot be weaponised

Weighted by trust, with a minimum player count so a 2v2 cannot kick anyone, immune for staff, one vote per initiator per cooldown, a reason from a fixed list, and scoped to the match. A passed vote is a timed reconnect block rather than a ban.

Bans that cannot half-lift

A ban is a group of rows across a player’s identifiers, so widening one to an alt does not duplicate the reason and an unban cannot leave part of it standing. IP scope is opt-in per ban and never the default, and the raw address is never stored.
Permanent ban
  • Cheats, aimbots, mod menus, injectors and exploits
  • Graphics packs modified to strip props or lower grass
  • Harassment, discriminatory speech and real-life threats
  • Sharing somebody’s personal information
  • Disconnecting to dodge a punishment
Temporary ban
  • Griefing, spawn camping and repeat spawn-killing
  • Stream sniping
  • Wearing staff, gang or supporter clothing you were not given
  • Abusing a mechanic in a way the rules page already names

The full rule set is on ESC in game, sixteen rules alongside the key list and the commands, and you acknowledge it once per session before you can queue.

Something wrong

Report it and the server brings the evidence

Use /report in game and the damage log, position, ping and flag history go with it. Nothing in that evidence comes from the person reporting.