Announcement

Collapse
No announcement yet.

Project Update #12 - All Capture Stats - Jul. 13th 2016

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Project Update #12 - All Capture Stats - Jul. 13th 2016

    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: [urlnew=http://pastebin.com/45g7ETf8]http://pastebin.com/45g7ETf8[/urlnew]
    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:
    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:
    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.

    Submitters

    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:
    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.
Working...
X