wowdev / WoWDBDefs

Client database definitions for World of Warcraft

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Feedback wanted: Unknown field names

Marlamin opened this issue · comments

So I've implemented this into dumper, but want a bit of feedback for it before shipping.

COLUMNS
int ID
locstring Field_48D27B75_000_lang
locstring Field_48D27B75_001_lang
int Field_48D27B75_002
int Field_48D27B75_003
int Field_48D27B75_004

LAYOUT 48D27B75
BUILD 8.0.1.26287
$noninline,id$ID<32>
Field_48D27B75_000_lang
Field_48D27B75_001_lang
Field_48D27B75_002<u8>
Field_48D27B75_003<32>
$noninline,relation$Field_48D27B75_004<32>

Reasoning for it is that I want to get this repo going in an automated fashion but also want to do regular complete regens (maybe daily) of all builds that I have on server so we can keep an eye on how dumper changes affect stuff (and if/when stuff gets fixed). Regenerating DBDs with the current unknown field naming would make each commit be huge which is why I want a standard way of generating these that is reliable between builds.

Only thing is that I'm not entirely sure how I'll do this for pre-layouthash stuff, but maybe using concatenated build e.g. Field_33512340_001.

Older stuff currently in DBD with the current Field_3240242934 stuff will be untouched. This is for new stuff and raw repo only.

Reasoning for randomness was

  • early clients don’t have cross build constant
  • randomness avoids false equivalence like with the same-layout-different-arrays case

The source of entropy being completely random names was easiest, I would avoid anything manually assembled, ie version concat, or entropy we don’t know the source from, ie layout hash. If you want to redump the same binary over and over with deterministic output, I guess md5(binary) would be fine. That’s specific to one build, random enough to not clash, and deterministic over dumper invocations.

Fair enough, will have to stick to only Windows builds then, and RenderService for some of the named builds but I'm sure I can work with that. Full MD5 or partial MD5? Full might get a bit long.

Because @bloerwald is lazy:

<@bloerwald> I wouldn’t value readability in auto generated names; don’t see why win only; if too long do crc32

Went with build without dots for now, which is unique per build. If there's a branch conflict I guess it wouldn't really matter that much either because they're just field names.

COLUMNS
int ID
locstring Field_81028151_000_lang
locstring Field_81028151_001_lang
int Field_81028151_002

LAYOUT A01D47C8
BUILD 8.1.0.28151
$noninline,id$ID<32>
Field_81028151_000_lang
Field_81028151_001_lang
Field_81028151_002<u8>

Will close this eventually if there's no comments on this.

Please at least make it somewhat safe by replacing dots with underscores. Without fixed width and zero padding these are always risky.