Project Update #12 - All Capture Stats

The latest sitrep on PSForever.
User avatar
Site Admin
Posts: 162
Joined: Wed Oct 14, 2015 4:31 pm

Project Update #12 - All Capture Stats

Postby Chord » Thu Jul 14, 2016 12:46 am

After nearly a year of capturing, it's time to see what we got.
The results are amazing and we captured nearly every major packet! There were missing core combat packets (Zip lines), but not as much as you would expect. Great job everyone.

Here is the raw stats dump:
And the layout

  • Processed Files: Lines 1 - 705
  • Statistics: Lines 707 - EOF
It's a bit boring to read, so I'll summarize it.

General Stats

Records: 92472704
- Control: 34516360
- Game: 57956344
Invalid: 0
Unknown: 332

Control packets are special "meta" packets that aren't game specific, but focus on getting packets from the server to the client reliably and efficiently.
Game packets are the actual game logic and are very interesting.
There were a few unknown packets captured, meaning we didn't have a name for the packet itself. All of the unknown happen to be a specific control packet that I still need to figure out. Pretty darn good name recovery.

Game Packets - Top 10

Code: Select all

Rank, Frequency, Name, Packet Type in Hex
1. 18247198 PlayerStateMessage (0x08)
2. 5245429 PlanetsideAttributeMessage (0x2c)
3. 4314089 PlayerStateMessageUpstream (0xbd)
4. 4241525 VehicleStateMessage (0x1b)
5. 2140098 ObjectDetectedMessage (0x61)
6. 2107936 ObjectDeleteMessage (0x19)
7. 2063881 ChildObjectStateMessage (0x1e)
8. 1667970 ObjectCreateMessage_Duplicate (0x17)
9. 1595515 KeepAliveMessage (0xba)
10. 1559934 ProjectileStateMessage (0x3f)

  1. PlayerStateMessage is the most common message as it is the message you receive for every person around you. When ever they move or turn, you get this message.
  2. PlanetsideAttributeMessage is a generic message that is used to change the modes / settings of objects. I believe this includes door state (open or closed).
  3. PlayerStateMessageUpstream this is the same as PlayerStateMessage but it is only sent by your local client to update the server to your position and orientation.
  4. VehicleStateMessage I assume this is an equivalent PlayerStateMessage packet, but for vehicle position and orientation.
  5. ObjectDetectedMessage most likely used to display units on the radar, but not sure yet.
  6. ObjectDeleteMessage deletes an arbitrary object by GUID.
  7. ChildObjectStateMessage is a state message for an object that is a child of a parent object. For example, the ammo in your gun is a child of it's parent (the gun).
  8. ObjectCreateMessage_Duplicate is a message from the server to create a game object of any type. The reason for the _Duplicate is that there is a message of the same type that is also sent by the server. Not sure of the difference yet.
  9. KeepAliveMessage sent very often by the client to make sure the server is still active. When these are dropped, your client will display the connection trouble window.
  10. ProjectileStateMessage is a state update from the server that tells the client the state of moving projectiles (bullets, shells, etc.).

Game Packets - Bottom 10 (at least one packet)

Code: Select all

Rank, Frequency, Name, Packet Type in Hex
184. 4 VoiceHostInfo (0xb2)
185. 4 SquadOrderMessage (0xdd)
186. 3 WarpgateResponse (0xa5)
187. 3 SquadOrderResponse (0xde)
188. 2 BugReportMessage (0x89)
189. 1 CharacterNoRecordMessage (0x13)
190. 1 DroppodLaunchResponseMessage (0x55)
191. 1 VoiceHostRequest (0xb0)
192. 1 VoiceHostKill (0xb1)
193. 1 OrderTerminalBugMessage (0xef)
194. 1 ClientCheatedMessage (0xf3)

These definitely need more investigation.
Pretty hilarious that we got a ClientCheatedMessage. Not sure if it's legit until I take a look at it.

There are some other categories that I collected, including "Packet Destination", which helps me understand what packets are for, and "Unseen packets", which lets me know which packets were never captured.


Thanks so much to the 41 of you who submitted captures. I never expected this much support for capturing, but I'm really grateful we got it. These captures are now the only record left of live PlanetSide network traffic. Our job is to get our emulator as close as possible to this traffic. Without a record of it, we'd be blindly guessing at when packets should be sent and for what.

Just for fun, here are the top 3 for most records and most captures. I'm sure there is a better way to rank people, but I didn't spend too much time coming up with one.

Code: Select all

Most Records
Rank  User              Records           Captures
1     GeEkOfWiReS1097   11,015,604 (13%)  34 (4%)
2     ccrider           7,406,424 (9%)    60 (8%)
3     KingFeraligatr    6,267,039 (7%)    28 (4%)

Most Captures
Rank  User     Records         Captures
1     FateJH   1,699,541 (2%)  294 (42%)
2     ccrider  7,406,424 (9%)  60 (8%)
3     Chord    3,873,135 (4%)  36 (5%)

Future Plans

Just getting statistics on this treasure trove of data isn't the only thing we're planning on doing with it. I'd love to have a tool that could look at all of one type of packet and show all the possible variations or even extract out structure from changing data. Not sure if something like this would work, but it might lead us to understanding more about the packet types.

These captures will also serve as a way to recover the core PlanetSide game logic by looking at cause and effect. For example, you start a hack on a tower, it finishes and a bunch of things trigger (object empire changes, pain fields flip, etc.).

Essentially, the better the tools for working with captures, the easier the devs job will be in understanding packets. The best tool so far is the Game Logger itself. There are a lot of improvements that need to be made to help visualize packets in order to understand the state of the game during the capture.


Thanks a lot everyone. You made this important data collection possible.
Leave your questions about the data or anything else below.
[ PSForever admin and developer ]
PSForever Code | Capturing Packets | Community Discord
Posts: 6
Joined: Mon Jun 27, 2016 8:43 pm

Re: Project Update #12 - All Capture Stats

Postby SS_Gaming » Fri Jul 15, 2016 2:26 pm

Nice work
Posts: 5
Joined: Sat Oct 17, 2015 10:03 am

Re: Project Update #12 - All Capture Stats

Postby OpolE » Fri Jul 15, 2016 7:35 pm

Congratz everybody. Keep up the hard work.
Posts: 2
Joined: Sun Jul 24, 2016 6:05 pm

Re: Project Update #12 - All Capture Stats

Postby AaronG » Sun Jul 24, 2016 6:10 pm

Another piece of the puzzle! Nice job!
Posts: 1
Joined: Tue Jun 28, 2016 11:25 pm

Re: Project Update #12 - All Capture Stats

Postby Haknoes » Tue Aug 02, 2016 12:43 am

Glad to help. Too bad we didn't get any of the core combat data. :(
Posts: 9
Joined: Sat Mar 12, 2016 6:07 pm

Re: Project Update #12 - All Capture Stats

Postby void » Wed Oct 26, 2016 5:54 am

*Happy Face* -> :D

P.S. We`re missing one person for 42... darn.

P.P.S. The punniness of using P.S. in this forum...

Return to “Project Updates”

Who is online

Users browsing this forum: No registered users and 1 guest