tfausak / octane

:rocket: Parse Rocket League replays.
https://www.stackage.org/nightly/package/octane
Other
39 stars 1 forks source link

Serialization change coming in a future patch #48

Closed danielsamuels closed 8 years ago

danielsamuels commented 8 years ago

Just had an email from a Rocket League developer, thought you might also appreciate a heads-up:

Hey just letting you know there will be a small change coming up with replay data serialization. Currently part of the data for an actor looks like this:

1 bit (new bunch) 10 bits (channel index) 1 bit (channel is open, not closing) 1 bit ("Spawn Bit" to inform to spawn a new actor)

if ("Spawn Bit" == 1)
    ...actor spawn data...

We're adding a "name" property for the name of the actor after that "Spawn Bit" if the "Spawn Bit" is 1:

if ("Spawn Bit" == 1)
    ...index in name table...
    ...actor spawn data...

This change won't be in the next patch, and probably not even in the one after that... but maybe the 3rd patch from now?

tfausak commented 8 years ago

Thanks for the heads up! Sounds like getNewReplication would have to change. Do you know what format the name index will be in? I would guess either a 32-bit unsigned integer or a compressed unsigned integer.

I'm assuming that the "names" are what I call replayWithoutFramesNames. As far as I know, nothing currently uses them.

danielsamuels commented 8 years ago

Unfortunately I don't have any further information than that email and I don't know enough (any) Haskell to be of any use here either 😞

tfausak commented 8 years ago

No worries! Sounds like I've got some time to make the change.

rustyfausak commented 8 years ago

Hm, has any data ever been in the names meta? I wonder what the goal of a change like this is.. Doesn't seem to be related to rumble mode since that is slated to release in Sept and 3+ patches from now is probably further than that. Maybe RLCS / replay / spectator something? Maybe more information about custom items?

tfausak commented 8 years ago

Yeah, some replays have names. For example, this replay has these names:

0: ESLMonthlyElite
1: Countdown
2: Season2GrandChampion
3: Active
4: PostGoalScored

I don't output the names from the octane executable because I don't know of anything that uses them. I'm not even really sure what they mean.

danielsamuels commented 8 years ago

Aren't they player titles? 0 and 2 are, and I imagine 1, 3 and 4 are the item-related titles?

tfausak commented 8 years ago

They're definitely not all player titles. And it's weird that there are no spaces in the names.

I counted all the names from my 4k local replays:

Name Count
Active 1614
Countdown 1614
ESLMonthlyChampion 1
ESLMonthlyElite 2
PostGoalScored 1413
Season2GrandChampion 22
UtopiaStadium_Dusk_p 10
Utopiastadium_p 6
XP 3432
tfausak commented 8 years ago

I'm closing this because it's not actionable. When the replay file format changes, I'll update the parser to handle it.