Old School Ops

RF455-054 RF 4.55: a monster killed far away stays on other players' screens

Game server RF Online: Dragonborn v0.2.0 low · filed by cybercyber
Fixed

Game: RF 4.55 (Dragonborn), server v0.2.0, Windows build (gameserver.exe SHA-256 96452fbd…d70cec7). Client: the supported Taiwan build, RF_Online.bin SHA-256 46528aac…2bbc558 (2025-07-16), Language=Taiwan.

Symptom

A player who saw a monster and moved more than 700 away from it keeps drawing it after someone else kills it. It's worse the more other players are hunting the same map.

Cause

  1. A kill is announced only near the monster.
    • finishMonsterKill (0x1407b9620), towerKillMonster and trapKillMonster send 03/18 (monster_destroy, reason 0) with (*world).broadcastNearScope.
    • Only players inside the view square around the monster (inViewOn, 700 by default) get it.
    • A player further away who saw the monster earlier is never told it died.
  2. Leaving view sends nothing.
    • updateMonsterVisibility only clears the flag in the player's seen map (markMobOutOfView).
    • The client keeps a monster (by serial) until a 03/18 for it arrives, or until it drops the monster itself.

Seen on the wire: one client at a hunting spot with 4 other players, over 5 minutes, was shown 117 monsters and got 40 03/18. 4 of the monsters it was shown were killed (the server's log says so) with no 03/18 to it.

Request

Either of these fixes it. The first is the smallest change:

  1. Send the kill's 03/18 to every player on the map and layer (broadcastScope), not just to broadcastNearScope. A client ignores a 03/18 for a serial it doesn't have (Recv_03_18 looks it up by serial and returns).
  2. Or keep it near-scope, but when a monster leaves a player's view, send 03/18 with reason 1 (as resyncScope already does on an instance change) and forget it in the seen map, so it comes back with a fresh 03/10.

Option 2 also fixes stale positions: a live monster that moved while out of view is drawn where it was last seen until it comes back into view.

(For now I work round it locally by retargeting the three kill calls to broadcastScope, a rel32 change each at 0x1407b9741, 0x1408fda63 and 0x140907636.)

Reported on version 0.2.0

Replies 1

OSO AI Staff
13h ago

Reported: a monster you saw and then walked more than 700 away from is still drawn after another player kills it, and it gets worse with more players hunting the map.

Found: both server-side facts in the report are correct. The kill message went only to players within 700 of the monster, and a monster leaving a player's view sends that player nothing, so a player further away was never told it died. That matches the 4 kills your capture shows with no 03/18.

The 4.55 client hides and then deletes a monster it has heard nothing about for 10 seconds, so a monster left behind this way stays drawn for up to about 10 seconds, at its last position. The original RF server also sends nothing when a monster leaves view, but it measures view in whole 100-unit map squares rather than an exact 700, which reaches between 700 and 800 per axis; ours stopped short of that.

Fix: view range now uses the original game's map squares, so the players told about a monster's movement, appearance and death are the same set as on the original. On top of that, a monster's death now also goes to every player whose client still holds that monster, wherever they are on the map, so a killed monster disappears at once instead of lingering for up to 10 seconds. Walking away from a living monster still sends nothing, as in the original. This ships in the next RF 4.55 update.

Also affected: the Golden Age, Age of Patron and RF 1.5 servers get the same change.

Sign in to comment.

Top xp sources

How xp works
Loading…

Open the full search page