Jump to content
Sign in to follow this  
Ripper

Prioritize Hostile Packets

Recommended Posts

I've been thinking about the HUGE issue of sending everyone coordinates of every player within the game. 

 

The server guy has a lot on his plate.

 

Assuming NQ uses int64_t variables for  w,x,y,z coordinates, you're looking at 32 bytes per player.  A 508 byte packet will only support 15 players.  That means 66 packets would need to be sent in order to update the positions of 1000 players.

 

The latest FPS games on the market transmit at about 60 packets per second.  So you're looking at 1 update every second, for those 1000 players.

 

JC has indicated that closer players would be updated more frequently than those farther away.  This will most certainly help with this issue.  The player will most likely interact with other players that are close to them.  So the "One packet per second" above, isn't true.  Players that are closer to you will update multiple times a second, while those farther out, may update once every 2 to 3 seconds.

 

 

However,

 

In addition to what we know from JC, I'm wondering if we can improve performance for combat between players.

 

My suggestion would to include a "flag" in the server side database, for "hostile players".  If one player has fired upon another player withing the last few seconds, the positioning packets should be given a higher priority (placed first in the queue).  This will allow for players IN COMBAT to have a more fluid experience. 

 

Example:

Three players are in close proximity.  Everything being equal all packets should be sent to all three players, at approximately the same rate.  The overall player density of the sector, doesn't matter in this example, because they are so close together.  They're getting the highest rate of updates.

 

Player 1 & 2 are in an organization.  Player 3 is in a competing org. 

 

Player 1 & 2 don't really care if their updated position is off by a little, because they're friends.  They're not going to be shooting at each other.  But if Player 1 attacks Player 3, both player 1 & 3 would want the most positional fidelity.  These updates should be given priority over all other positioning packets.  They should be sent first (in addition to critical packets such as damage to each others' ships). 

 

So initially, due to the overall player density, all three players were getting positioning updates 20 times a second.  This would be the normal rate in an FPS. 

 

Player 1 fires on Player 3.

The server flags both players as "High Priority", and place their coordinates in the hight priority queue.

The server transmits each players location with every packet. 

Players in combat would update 60 times a second, while Player 2  (not in combat) would still be updated 20 times a second.

 

The high priority coordinates are just those between players in combat.  They wouldn't receive the coordinates of evey player that was currently in a fight.  Just the player who they were attacking, or who was attacking them.

 

THIS ALSO WORKS FOR SNIPING!!!

 

The identical scenario above, but ranges are considered "Long".  This means instead of receiving packets 20 times a second, all three players would receive the update once every TWO seconds.

 

Player 1 fires on player 3.

Players are marked hostile to each other by the server.

Player 1 and player 3 positions are updated at 60 times a second, for the next few minutes, or until someone dies.

Player 2 still receives updates at once every two seconds, because all three players are still at "Long" range.

Share this post


Link to post
Share on other sites

One way to fix sniping so you can "tag" someone to update faster. Like tagging someone when in a scope so you don't have to first declare combat.

Overall good idea.

Share this post


Link to post
Share on other sites

With the lock on and fire method of combat... basically you could flag anyone who you lock on to and anyone who locks on to you... as hostile or potentially hostile so the game can prioritize the position updates for them.

 

 

This is better than waiting until an attack occurs...

Share this post


Link to post
Share on other sites

Correct!

 

W is the quaternion variable for the rotational position of a ship.

 

X,Y,Z only indicate where you are in space. Not the direction you're facing.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...