Overwatch Highlights¶
Introduction¶
A highlight video file generated by Overwatch contains a structure with useful information about the recorded highlight. Anything I have discovered about this structure yet is documented in this file.
Location¶
The structure is located in the last 315
byte of the MP4 video file. It consists of multiple Base64 encoded strings.
This documents only deals with one of those: It start at byte 95
of the previously described buffer and has a length of 128
bytes.
The charset encoding the string is UTF-16 with little-endian byte order (StandardCharsets.UTF_16LE in Java).
Therefore the string consists of only 64
characters, but has a length of 128
bytes.
Before applying the structure described here to it, it obviously has to be decoded using Base64.
Structure¶
Offset(h) | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F |
00000000 | Map | Hero | ||||||||||||||
00000010 | Skin | |||||||||||||||
00000020 | Type |
Note
Every short
(values consisting of 2 bytes) is in little-endian byte order.
You could of course also interpret them as big-endian (as long as you always interpret them as big-endian),
but as the values are always lower in little-endian byte order, I’ve chosen little-endian.
Warning
There are many bytes of which I haven’t discovered a use yet. Some of these seem to be constant and some change sometimes.
Values¶
Possible values for fields shown in the table above are defined in the following Java enumerations:
Field | Java enumeration |
---|---|
Map | de.jcm.overwatch.highlight.Map |
Hero | de.jcm.overwatch.highlight.Hero |
Type | de.jcm.overwatch.highlight.HighlightType |
Skin | Values for skins are not discovered yet. |
Warning
Since the whole program is still WIP some enumerations are still incomplete and/or missing.
Those have an id of -1
in Java enumerations.
Note
On first sight it looked like the hero IDs would be ascending by the time the heros where added.
But that doesn’t seem to be true for every hero:
e.g. Tracer is first hero according to Overwatch Wiki, but has ID 2
.
Also Orisa(318
) was added before Doomfist(303
), but has higher ID.
Tip
The Java enumerations contain more information than just the id. If you are searching only for the id (short/byte value in structure) simply look at the first constructor argument.
Note
I’m working on completing them, but I sadly don’t have enough different highlights. Threfore I’d be very thankful for people sending me the last bytes of their highlights together with a short description of it. contributing