π― Lag compensation
Proper, modern lag compensation for Joint Ops. Higher-ping players hit what they see on their screen, the same way today's shooters do it. It goes into your running server from WolfRAT: retail or TAC, no onHook, no exe change, and players download nothing.
New in WolfRAT 2.9.7. It has already been tested live on the FMJ UK server, with players from the UK, the US, Venezuela and China. You'll find it on the Server tab, on the π― Lag compensation page.
Why Joint Ops needs it
In Joint Ops the server decides every hit, and it checks each bullet against where people are on the server right now. A player on 200 ping sees everyone a fifth of a second in the past. When they aim straight at a running man and fire, the server says he has already moved on, and the shot misses. That is why high-ping players have always had to lead their targets, guessing how far ahead to aim, and why the game never felt fair from the other side of the world.
What it does
The server now remembers where every player was for the last second. When a higher-ping player fires, the bullet is checked against where the target was on that player's screen when they pulled the trigger, not where the target is on the server now.
Shoot what you see, and it counts. No more leading.
This is the method modern shooters use, known as server-side rewind. Counter-Strike and Valve's other games work this way. Joint Ops came out in 2004 without it. This is a fresh build for JO's own engine, written from how the game really checks its bullets, not a ping equaliser or a delay added on top.
Does it really help? The numbers
Every shot from a rewound player is checked twice: once with the rewind and once the old way. That gives a straight answer to "would that shot have hit without it?". These are real nights on the FMJ UK server:
| Night | Hits with it | Hits the old way | Gain |
|---|---|---|---|
| Thursday 15 October (Hamshop, elk road, A-99, Oscar, Angel and more, pings up to 280+) | 1,201 | 1,003 | +20% |
| Saturday 17 October (fewer high pings that night) | 511 | 474 | +8% |
Only shots from players over the minimum ping are counted. The more lag your players have, the more it gives them. The players could feel it too. On Thursday night they told us they didn't need to lead any more.
What it never does
- It never slows anyone down or adds lag. Nobody's game is held back for anyone else.
- Low-ping players play exactly as before. Anyone under the minimum ping (80 ms to start with) gets plain Joint Ops hits.
- Walls still stop bullets. Only players are rewound. Buildings, walls, rocks and vehicles stay where they are, so nobody can shoot through cover.
- It never rewinds someone across a respawn or a teleport. If the server can't be sure where a player was, it uses the normal hit.
- Players download nothing. It all runs on the server.
Switching it on
- Run WolfRAT on the same PC as the game server and connect to it. It has to be the same machine, because WolfRAT puts the lag compensator into the running server.
- Go to the Server tab, then the π― Lag compensation page.
- Tick On. The line underneath turns green and shows the setting in use.
A map change keeps it. A server restart or a crash takes it away, so the server is back to normal Joint Ops. To have WolfRAT put it back automatically, tick Put it back on by itself after a server restart. WolfRAT has to be running for that.
It works on retail Joint Ops servers and TAC servers alike. Nothing is written to your game files. Close WolfRAT and the lag compensator keeps running until the server restarts.
The settings
| Setting | What it means | Start with |
|---|---|---|
| Extra | How far back the server looks is the player's ping plus this. The player's screen is a little older than their ping alone, because the game also takes time to draw frames and process server ticks. The Extra covers that. | 40 ms |
| Minimum ping | Players below this ping aren't rewound at all. | 80 ms |
| Maximum rewind | Nobody is rewound further than this, however bad their ping is. | 400 ms |
| Watch only | Counts everything but changes no hits. Use it on a first night to see what it would do on your server before you switch it on for real. | Off |
For example, a player on 125 ping is checked against where people were 165 ms ago (125 + 40). A player on 30 ping isn't rewound at all.
The live numbers
The page shows how it's doing as you play, refreshed every second:
- This session: hits counted with it, hits the old way would have given, and the gain. Saved is the hits only the rewind gave. Cost is the shots that would have hit before but missed with the rewind. Those come from a target who ducked, turned or went prone in that split second, because their pose isn't rewound, only their position. On our nights, Saved has been well ahead of Cost.
- Players: everyone on the server with their ping, how far they are rewound, their shots and hits with and without it.
- Best rewind: it looks at every shot that passed close to someone and works out which rewind lines the shots up best. After 300 close shots it suggests an Extra that suits your players. Press Use suggested to set it.
- Start counting again sets the numbers back to zero and counts from that moment. The page says "Counting started again at" and the time. The button is greyed out until lag compensation is in the server.
- Past sessions: every session is saved, so you can compare nights and settings. Changing a setting starts a new row.
An empty server doesn't run it. The page says "Waiting for players" until someone joins.
If the page says something else
| It says | What to do |
|---|---|
| Needs WolfRAT on the same PC as the game server | Run WolfRAT on the server PC and connect to the server on the Server connection page. |
| Waiting for write access to the server | Run WolfRAT as administrator. |
| Something else already changes the game's hit code | Your server already has lag compensation from somewhere else, such as the onHook DLL's own LagCompEnabled setting. WolfRAT leaves it alone, so use one or the other. |
| On, from an older WolfRAT | Tick the box to switch to this version. The numbers start again. |