Game Lag White Paper › Browse by symptom
Invisible / ghost entities: 20 causes and who fixes them
Also called: missing NPCs, invisible characters, dead monsters still standing
Open in the illustrated symptom guide →
NPCs, monsters, or players that should be there are missing only on your screen, or entities that are already gone remain only on your screen.
Other players talk to an NPC while you see empty ground. There’s a name tag with no character model, or a monster that doesn’t react when you hit it.
This usually has little to do with speed: one packet went missing, or drawing the entity failed. Check for channel or phasing differences, lost spawn and despawn messages, messages discarded during loading, and asset loading failures. The decisive clue is whether it shows up after you leave view range and come back.
Causes of this symptom
L1 Client game process
- Slow storage delays asset streaming: On slow storage such as an HDD, reading open-world textures and models can’t keep up with movement, so objects appear late or the game stutters while it waits for reads. (Game team (Client development))
L8 Sockets and protocols
- Keepalive default of 2 hours: When the other side vanishes without a close signal, TCP notices only much later. Keepalive (a TCP feature that checks whether an idle connection is still alive) is off by default, and even when it’s on, checks start only after 2 hours of idle time. (Game team (Server development))
- Slow start after idle: When a connection has been idle for a while, TCP shrinks the congestion window (how much it can send at once) again, so a sudden large send goes out in several rounds. (Infra team (Server infrastructure))
Problems only some players hit
- Different channel, instance, or phase: If two characters are in different channels or instances, or in different “phases” where the visible NPCs depend on quest progress, they see different worlds. (Game team (Server development))
- Spawn messages dropped during loading: Right after you enter a zone, the server sends spawn messages for nearby NPCs, but the client is still loading the map and throws them away. (Game team (Client development))
- AOI registration race: If a character registers in the AOI grid at the same moment an NPC moves between grid cells, that NPC’s spawn message can be missed. (Game team (Server development))
- Lost baseline snapshot: When the server sends “only what changed since last time,” losing the full state sent once at the start (the baseline) means later changes can’t be applied. (Game team (Server development))
- Missed despawn message (ghost entity): The reverse case: if the “it’s gone” message is missed, NPCs or players that already died or left stay on your screen only. (Game team (Server development))
- Spawn data lost in the burst after entering: The moment you enter a zone, the server sends spawn data for tens to hundreds of nearby entities all at once. If it goes over an unreliable channel, or the receive buffer overflows while the client is loading and can’t read the socket, part of it disappears and never comes back. (Game team (Server development))
- Entity ID reuse mix-up: If the server reuses the same entity ID when a dead NPC respawns, a client that missed the despawn message in between mistakes the new NPC for the old one. (Game team (Server development))
- Fixed UDP port collision: If the client is built to use a fixed local port, a second client on the same PC either can’t get the port or ends up splitting packets with the first. (Game team (Client development))
- Sessions keyed by IP or device (bug): If the server or an intermediate server identifies connections by IP or device ID, it treats two clients on the same PC (same public IP) as one person. (Game team (Server development))
- Multi-client restriction: If an anti-cheat module or server policy limits multiple clients on one PC, the second client is blocked from launching or connecting, or the first one gets disconnected. Some games only block features on the extra client. (Game team (Client development))
- Background window throttling: For a client in a background window, the game, engine, and OS cut its frame rate and processing. Received packets aren’t processed in time, so they back up or overflow. (Game team (Client development))
- Simultaneous access to cache or asset files: If two clients write to the same cache folder at the same time or lock its files, one of them can’t load NPC models or textures. (Game team (Client development))
- Streaming failure from memory or VRAM shortage: When two clients share graphics memory, there’s no room to load newly needed models and textures, and some of them don’t get drawn. (Game team (Client development))
- Different display settings: If settings such as a visible player limit, hidden NPC name tags or models, or low-spec mode differ between two clients, they see different things. (Game team (Client development))
- Client version or data mismatch: If the second client is a different install or isn’t fully patched, it doesn’t recognize new NPC IDs the server sends and silently ignores them. (Game team (Client development))
- Per-connection send budget and priority: If the server caps how much it sends per connection and sends the nearest things first, a connection with a low cap gets distant NPCs late or not at all. (Game team (Server development))
- Entities held back by clock estimate error: If the client’s estimate of the server time is wrong, it holds back freshly arrived entity data as “still in the future” or discards it as “too old.” (Game team (Client development))
View the illustrated symptom guide