Java解析魔兽争霸3录像W3G文件(一):Header

本文介绍了如何使用Java解析魔兽争霸3的录像文件(.w3g)Header部分,包括Header的结构、各字段意义以及字节序处理。通过创建Replay类、Header类和辅助工具类,实现对Header的Java解析,提取如版本、时长等关键信息。
摘要由CSDN通过智能技术生成

魔兽争霸3是一款非常著名的即时战略游戏。相信很多人都听过sky、moon、grubby这些名字,还有塔魔infi、中国的鬼王ted、刚猛的fly、飘逸的th000等选手。遗憾的是WCG2013是魔兽争霸3的最后一届,我自己也去现场观看了魔兽的总决赛。此外,还有DOTA、真三、澄海3C等著名的地图。

魔兽争霸的录像大家都知道,是用来回放的,文件后缀名是.w3g,保存在魔兽争霸下的REPLAY目录下。现在很多软件可以分析魔兽争霸录像,直接可以查看录像的玩家、地图,以及玩家的APM等信息。

最近在YY对战平台打魔兽,经常能遇到Java程序员,说明Java程序员中有很多魔兽争霸3的玩家,这里将Java解析魔兽争霸3录像的方法贡献给同是WAR3玩家的小伙伴们。

魔兽争霸3录像文件由一个头部(Header)多个压缩数据块(compressed data blocks)组成。本文主要内容是解析Header部分,压缩数据块部分的解析会在后续的博文中详细介绍。

Header结构:

Header部分包含了录像的最基本的信息,大小是固定的前68个字节,此后的全部是压缩数据块。对于1.06版本及之前的录像,Header部分大小是64字节,由于版本太古老这里就不考虑了。下面的代码中也不再支持老版本的录像。

Header中每个部分的意义:

1~28字节(28个字符):固定的字符串"Warcraft III recorded game\0x1A\0"。
29~32字节(4个字节):Header部分的总字节数,对于1.07版本及之后,是68(0x44),对于1.06版本及之前是64(0x40)。
33~36字节(4个字节):压缩数据块的压缩数据总字节数,即解压前。
37~40字节(4个字节):录像版本标识(0表示1.06版本及之前版本,1表示1.07版本及之后版本)。
41~44字节(4个字节):压缩数据块解压缩后的总字节数。
45~48字节(4个字节):压缩数据块的个数。
49~52字节(4个字节):一个字符串标识,"WAR3"表示非冰封王座,"W3XP"表示冰封王座。
53~56字节(4个字节):版本号(例如24即是1.24版本)。
57~58字节(2个字节):构建号(build number)。
59~60字节(2个字节):0x0000表示单人游戏,0x8000(十进制32768)表示多人游戏。
61~64字节(4个字节):录像时长(毫秒数),需要注意的是,这个时长不包括游戏中暂停的时长。
65~68字节(4个字节):Header部分CRC32校验码(包含这四个字节但是要都设为0)。

可以使用EditPlus的Hex Viewer方式打开w3g文件查看Header部分。



在这里可以发现一个问题,除了第一个字符串"Warcraft III recorded game\0x1A\0"以外,其他每个部分的字节顺序都是倒过来的。例如Header部分总字节数是0x44000000,

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值