This section is about the encoding schemes Wynnbuilder uses for its various saveable items (builds, crafted items, and custom items).
We use a Base 64 encode/decode system in most shareable links. It would be quite clunky to put a bunch of numbers (the data we save and read) into one link. To save some space, we compress the base 10 numerical alphabet into a custom base 64 alphabet.
The Wynnbuilder Base 64 character table:
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+-
The Base 64 encoding of a number (in the 0 to 63 range) is equal to the character at the index within the above string.
For example, if we have a set of items with id numbers in the range [0Kv
:
, 0
,
K
, and v
.
Decoding is a little different. We can either interpret the base 64 string as a signed or unsigned number (signed: using 2s complement binary).
Things that should be interpreted as signed are:
Things that should be interpreted as unsigned are:
Now that we understand the base 64 system, we can move on to the way builds, crafted items, and custom items are stored in links.
First, what do we need in order to encode an entire build?
Wynnbuilder mainly runs calculations for damages and defense. Therefore, we need:
Wynnbuilder assigns each item in the Wynncraft item pool to a unique ID number. For example, the bracelet Atlas
has an id number of
For items, you can download the item DB here: clean.json. Each item has an id value that can be put in a map. The NoneItem ID numbers start at 10000 in the canonical order: [helmet, chestplate, leggings, boots, ring 1, ring 2, bracelet, necklace, weapon].
For tomes, you can download the tome DB here: tomes.json. Each tome has a tomeID value that can be put in a map. The NoneTome ID numbers start at 61 in the order [no weapon tome, no armor tome, no guild tome] so that we can store tome IDs in 1 Base 64 character.
For powders: id numbers
All build links will end in "#[version number]_[build hash]".
Version 6 was made to account for the desire to save tomes in a build. As of the last version of this documentation, version 6 is used for encoding whenever there are tomes in the build.
https://hppeng-wynn.github.io/builder/#6_06W2SH0D40Qq2SK2SL02d0og0Qi191V-E0i2C1g0000100nZ6ZU6FCDo
Build hash format:
idMap
(06W
,
2SH
,
0D4
,
0Qq
,
2SK
,
2SL
,
02d
,
0og
,
0Qi
19
,
1V
,
-E
,
0i
,
2C
1g
0
s (Base 64 0 = 0 unsigned) in this example, we have no powders on any of the armor piece (no blocks).
1
(Base 64 1 = 1 unsigned). There is 1 block of powders to decode for the weapon item. That is 00nZ6
.
00nZ6
in binary is 30 binary bits long (omitted). Each section of 5 bits directly corresponds to an powder ID.ZU6FCDo
Version 5 was made to allow for the ability to save custom items. To learn the specifics about custom item encoding, refer to the Custom Items section.
As of the last version of this documentation, version 5 is only used for encoding when there are custom items (and no tomes) in the build.
http://hppeng-wynn.github.io/builder/#5_06W00mCI-10000JCustom%20Chestplate0220510G020Fe0M0201a0D40Qq2SK2SL02d0og0Qi191V-E0i2C1g0000100nZ6zz++++-
Build Hash format:
idMap
(06W
,
CI-10000JCustom%20Chestplate0220510G020Fe0M0201a
,
0D4
,
0Qq
,
2SK
,
2SL
,
02d
,
0og
,
0Qi
19
,
1V
,
-E
,
0i
,
2C
1g
0
s (Base 64 0 = 0 unsigned) in this example, we have no powders on any of the armor piece (no blocks).
1
(Base 64 1 = 1 unsigned). There is 1 block of powders to decode for the weapon item. That is 00nZ6
.
00nZ6
in binary is 30 binary bits long (omitted). Each section of 5 bits directly corresponds to an powder ID.It is possible that version 5 links will have an extra tome section at the end like above (see: Version 6 section). We ignore this in decoding.
Version 4 was made to allow for the ability to save crafted items. To learn the specifics about crafted item encoding, refer to the Crafted Items section.
As of the last version of this documentation, version 4 is the default version and is used when there are no custom items or tomes in the build.
http://hppeng-wynn.github.io/builder/#4_06W2SH0D40Qq2SK2SL02d0og0Qi191V-E0i2C1g0000100nZ6zz++++-
Build Hash format:
idMap
(06W
,
2SH
,
0D4
,
0Qq
,
2SK
,
2SL
,
02d
,
0og
,
0Qi
19
,
1V
,
-E
,
0i
,
2C
1g
0
s (Base 64 0 = 0 unsigned) in this example, we have no powders on any of the armor piece (no blocks).
1
(Base 64 1 = 1 unsigned). There is 1 block of powders to decode for the weapon item. That is 00nZ6
.
00nZ6
in binary is 30 binary bits long (omitted). Each section of 5 bits directly corresponds to an powder ID.
https://hppeng-wynn.github.io/builder/#4_06WCR-1628i8v8v94948f210D40Qq2SK2SL02d0og0Qi1Q1V-E0l2C1g0000100nZ6zz++++-
Build Hash format:
idMap
(06W
,
CR-1628i8v8v94948f21
,
0D4
,
0Qq
,
2SK
,
2SL
,
02d
,
0og
,
0Qi
19
,
1V
,
-E
,
0i
,
2C
1g
0
s (Base 64 0 = 0 unsigned) in this example, we have no powders on any of the armor piece (no blocks).
1
(Base 64 1 = 1 unsigned). There is 1 block of powders to decode for the weapon item. That is 00nZ6
.
00nZ6
in binary is 30 binary bits long (omitted). Each section of 5 bits directly corresponds to an powder ID.It is possible that version 4 links will have an extra tome string like above (see: Version 6 section) after the powders. You can ignore this in decoding.
http://localhost:8000/builder/#5_06W02hCI-10000HMeta%20Chestplate010Gbest%20in%20slot0240401030510G0302SG0H020Fe0I020Fe0J020Fe0K020Fe0L020Fe0M0201Y0i0200U220z0204iKK150200U22160200U22170200U22180200U22190200U220D40Qq2SK2SL02d0og0Qi191V-E0i2C1g0000100nZ6zz++++-
Last updated: 25 May 2022