nilshellerhoff / warthunder-replay-parser

A very, very basic attempt at parsing Warthunder replay files (.wrpl)
MIT License
7 stars 3 forks source link

New Replay Format #3

Open Bearddyy opened 1 year ago

Bearddyy commented 1 year ago

Thanks for making this script, the format of WT's replays seemed deliberately obscure to prevent parsing like this.
Im not sure if you are still interested in parsing this data but with the recent economy drama, Gaijin appear to have added some extra data to the tail of the replay to facilitate their extra post battle results. This seems to be very close to being parseable.

Are you still interested in updating this tool or aiding in parsing it?
I have done a little work on looking into it and made some small progress, will share if you are interested still? Extract below:

b'status', b'timePlayed', b'authorUserId', b'author', b'player', b'name', b'clanTag', b'kills', b'groundKills', b'navalKills', b'teamKills', b'aiKills', b'aiGroundKills', b'aiNavalKills', b'assists', b'deaths', b'captureZone', b'damageZone', b'score', b'awardDamage', b'userId', b'squadId', b'autoSquad', b'team', b'uiScriptsData', b'playersInfo', b'__int_100793024', b'elo', b'platform', b'id', b'slot', b'country', b'mrank', b'auto_squad', b'wait_time', b'clanId', b'tier', b'squad', b'rank', b'crafts', b'3', b'4', b'1', b'2', b'0', b'crafts_info', b'__array', b'array0', b'rankUnused', b'type', b'array1', b'array2', b'array3', b'array4', b'__int_68992199', b'5', b'6', b'array5', b'array6', b'__int_28304714', b'__int_8975185', b'7', b'array7', b'__int_129727378', b'__int_84528725', b'__int_113241430', b'__int_76586327', b'__int_127528218', b'__int_130027933', b'__int_5983967', b'__int_23914147', b'__int_127697637', b'__int_85298535', b'__int_35651242', b'__int_129079470', b'__int_61125616', b'fakeName', b'__int_68478769', b'__int_131399914', b'__int_123166103', b'__int_99792042', b'__int_129860725', b'__int_109334774', b'8', b'array8', b'__int_98948535', b'__int_108283619', b'__int_139399097', b'__int_63162714', b'__int_150178928', b'__int_36145749', b'__int_123356754', b'__int_106529450', b'__int_100274175', b'\xa2\x02\xbe\x11\xd7\x11fail', b'8975185', b'-IDEAL- Bearddy', b'AbbeKeb', b'=NORDC=', b'100274175', b'ChickenIsHere3', b'[TWCC]', b'100793024', b'\xe7\xa9\xba\xe7\xa9\xba\xe5\xa6\x82\xe5\xb1\xb1', b'=TFTGS=', b'106529450', b'kingkeopa', b'[VDKA]', b'108283619', b'SupraRua', b'\xe2\x94\xbeMKuro\xe2\x94\xbf', b'109334774', b'\xe6\x9d\x82\xe9\xb1\xbc\xe5\x93\xa5\xe5\x93\xa5\xe5\x8f\x88\xe8\xa2\xab\xe7\xbb\x95\xe4\xbe\xa7\xe4\xba\x86\xe5\x91\xa2', b'^BicA^', b'113241430', b'lumaca_neutrale@psn', b'', b'123166103', b'\xe5\xa4\xa9\xe5\xbc\x93\xe5\x8d\x83\xe4\xba\xa6', b'^Reimu^', b'123356754', b'DLTColonelLYL', b'^HPGP^', b'127528218', b'lxym', b'129079470', b'Yhtros@psn', b'[TFH21]', b'129860725', b'cc55RRfL', b'139399097', b'sky_mortal', b'^BTemp^', b'150178928', b'II\xea\xb8\xb0\xea\xb0\x91\xec\x88\x98\xec\x83\x89II', b'^VH11B^', b'23914147', b'Den4ik0971', b'-T100-', b'28304714', b'VIKING-OF-SWEDE@psn', b'^TRR1^', b'36145749', b'Takahiro5899', b'61125616', b'Xudy1101', b'[GeZ1]', b'63162714', b'mutchomatcho@psn', b'68478769', b'ApEx_Cheeseburge@psn', b'68992199', b'kkllffaa', b'=ZULU=', b'76586327', b'Tagos1233', b'-FAFOX-', b'84528725', b'TheGhostTen', b'-ZRUSS-', b'85298535', b'Bearddy', b'-IDEAL-', b'MQY47', b'98948535', b'RetroGrade715', b'^TGOWT^', b'99792042', b'cernickyt', b'*PKA*', b'130027933', b'Tomsir', b'=LSBT=', b'131399914', b'BazileVS', b'=CBOU=', b'35651242', b'Warriorsword', b'\xe2\x94\xbeCCTV8\xe2\x94\xbf', b'5983967', b'LIANG TIEYAO', b'=VSB=', b'127697637', b'\xe6\x88\x91\xe8\xa6\x81\xe5\x8e\xbb\xe4\xbb\x96\xe5\xaa\xbd\xe7\x9a\x84', b'129727378', b'win64', b'country_ussr', b'ps5', b'country_germany', b'country_britain', b'country_sweden', b'country_china', b'country_usa', b'charliewebb611', b'ussr_t_34_85_zis_53', b'su_22m3', b'ussr_bmp_2m', b'ussr_t_80uk', b'ussr_t_80um2', b'germ_flakpz_I_Gepard', b'mig-21_bis_lazur', b'germ_leopard_2a4', b'germ_wiesel_2_adwc', b'germ_leopard_2a5', b'germ_schutzenpanzer_puma', b'germ_leopard_2a4_pzbtl_123', b'ussr_zprk_2s6', b'ussr_t_80u', b'ussr_t_80bvm', b'tornado_gr1', b'uk_adats_m113a3', b'uk_challenger_2e', b'ah_mk1', b'tornado_f3', b'uk_stormer_hvm', b'uk_vfm_5', b'uk_challenger_2_bn', b'germ_leopard_2pl', b'ussr_t_80b', b'ussr_t_72av_turms', b'ussr_t_72m2_moderna', b'mi_28nm', b'sw_crotale_ng', b'sw_cv_90105_tml', b'sw_strv_122', b'sw_strv_122b_plss', b'mig-17_f5', b'z_19e', b'cn_wz_1001', b'cn_ztz_99a', b'cn_ztz_99_w', b'cn_ztz_99', b'cn_tor_m1', b'us_lav_ad', b'us_m1a2_abrams', b'us_m1a1_hc_abrams', b'ah_64a_peten', b'us_m1a2_sep_abrams', b'f_14b', b'a_5c', b'cn_pgz_09', b'cn_qn506', b'cn_ztz_96a_prot', b'cn_hj_9', b'su_25t', b'ussr_t_72b3_2011', b'mig_27k', b'ussr_2s25m', b'germ_leopard_2k', b'germ_leopard_2a6', b'sw_itpsv_90', b'mi_28a_sweden', b'us_m1a1_aim_abrams', b'yah_64', b'us_m901_itv', b'a_10a_early', b'uk_challenger_II', b'uk_rooikat_105_td', b'harrier_frs1', b'ju-87d-3', b'ka_52', b'mig_23mld', b'ka_50', b'germ_sdkfz_222', b'ussr_pantsyr_s1', b'f_16a_block_10', b'us_hstv_l', b'us_adats_bradley', b'cn_pgz_04a', b'f_16a_block_20_mlu', b'su_25k', b'ussr_t_90a', b'ussr_asu_57', b'ussr_2s38', b'ussr_9p157', b'ussr_su_122_54', b'itp_m1', b'ussr_zsu_57_2', b'ussr_9p149', b'hkp3c', b'sw_strv_103c', b'sw_strv_103a', b'sw_ikv_91_105', b'sw_strv_101', b'tank', b'assault', b'fighter', b'SPAA', b'tank_destroyer', b'helicopter', b'bomber',

downloadpizza commented 10 months ago

@Bearddyy i am currently doing some work towards making my own since this seems slightly abandoned (most things except for the header with weather and such have changed), I have figured out very similar things to you (for example this null sepperated list which includes the players and all unique vehicles that were in the game). If you have anything more id love to work with it, but as far as I am concerned we know a similar amount at the moment

Bearddyy commented 10 months ago

@Bearddyy i am currently doing some work towards making my own since this seems slightly abandoned (most things except for the header with weather and such have changed), I have figured out very similar things to you (for example this null sepperated list which includes the players and all unique vehicles that were in the game). If you have anything more id love to work with it, but as far as I am concerned we know a similar amount at the moment

I'm currently able to parse a reply and extract players, their scores for kills, deaths, assists, vehicles used etc, currently the bottle neck is the download speed of WT's servers as well as not wanting to be banned. What I don't currently have is a good way or format for exporting the data for analysis

TaLajans commented 6 months ago

@downloadpizza , @Bearddyy can anyone of you share the progress? Any info on tools, structs or the processes you are using would be helpful. Thank you.

mikaracer commented 6 months ago

@Bearddyy , I would be interested in the code, I want to create a large scale statistics overview for the game. Formatting the data wouldn't be a problem I think. Would be happy to hear from you

FURRO404 commented 3 months ago

@Bearddyy I can't even get it to output player vehicles, is there any working code you can share?