PDA

View Full Version : Question - Player Packet System



Dresk
02-08-2003, 04:52 PM
Greetings,

I have always been interested in knowing how exactly Everquest handles its logical player packet updating system. To be more brief, how Everquest, either on the server end or, likely not, on the client end, determines when the client needs to receive packets regarding player positions. Quake regards such logical removal of packets as VISing, which I use as an acronym from hereon.

Having used ShowEQ for more than two years now, I have noticed that player positional packets, or now updates, as packets retain the ability to combine with other packets from the netcode changes, have largely been defined as necessary when comparing the distance of a player to another player. However, as can largely be noticed in MANY of the zones in Everquest, sometimes sitting on the roof of a building, resting on a stone, or some change in the Z-axis (height, I hope it is Z) of the player DOES AFFECT if the player should receive positional updates of other players.

Given how ShowEQ primarily works, this is obviously not true for monsters, as the positional packets regarding them are typically always streamed to the client, if only not due to inconsistencies of some form. However, from what I recall, health packets, now streamed in percentiles for more efficient use of the health bar, are only streamed when the player is relatively near the creature, or has targetted it(which I believe is sent to the server, sort of on best wishes that the server receives it ASAP. Now thinking of it more, it has to be sent, since ShowEQ knows when the player targets something).

My theory is that included in the server-side zone files are also VIS areas, or zone areas, defining where players should receive player updates of other players, as long as they are in the same zone, or box. These boxes or VIS zones MUST be 3D, as I have noted and confirmed that sometimes sitting above players will rule out receiving positional updates from them. This would likely serve as the most economical system of determining player packet necessity, as it is somewhat light on the CPU and still easy to implement for the zone designers. However, as can be seen sometimes, the VIS zones are not very accurately defined.

Any comments, suggestions, theories or questions regarding this would be appreciated and welcomed.

Dresk

codepig666
02-08-2003, 09:24 PM
Quake3Arena and MedalOfHonor (and all FPS games for that matter) have a very different set of networking problems than EQ does. These servers are limited to a very small number of players. Positional updates could easily be sent regardless of need-to-know logic.

In order to optimize for highping clients, and to make wall-hacks less useful, these servers evaluate client position, make a line-of-sight determination and only share positional info with players who could potentially see a given client.

Older game engines (Half-Life engine, etc) send all the data all the time. Just download any wall-hack and you can see this for yourself.

From EQ's perspective, the need to limit this data had nothing to do with show-eq. It's not uncommon to have 400 or more moving objects (players and mobs) in a given zone.

The mobs don't cause too much trouble because 1:They don't change their outfits, and 2: they tend to either stand still or walk in a straight line.

Players, on the other hand, jump, dance, duck, wave, dress, undress, and generally fidgit in a way that changes their appearance a good bit of the time.

The developers at SoE realized that including 100% of the player information 100% of the time was an unnecessary network load, so the logic was trimmed down so that you only get regular updates from a player who is basically within sight.

Other than that, mobs which have no aggro and players who are out of sight are updated far less often. The logic being that only a tracker would care, and their general direction won't change enough to really matter over great distances.

Once you make it onto a mob's hate list, you get updates very often in order to make combat smooth.

Of course, only an SoE developer could give you the exact logic that they use. This is all conjecture on my part. I think it is a valid explanation.

Peace