>
technical stuff
>
the file formats
>
mini avatars
mini avatars can be created and used with veadotube and veadotube mini.
MLST
chunkprovides a list of avatar states. the existence of this chunk in a file tells that this is file contains a mini avatar.
the entire contents of this chunk is a list of 4-byte integers, indicating the id of each MSTA
chunk.
MSTA
chunkprovides information on an avatar state.
length | description |
---|---|
1+ | state name, variable-length string |
1 | state flags |
4 | id for the AIMG chunk of the closed mouth thumbnail |
4 | id for the AIMG chunk of the open mouth thumbnail |
4 | id for the AIMG chunk of the blinking closed mouth thumbnail |
4 | id for the AIMG chunk of the blinking open mouth thumbnail |
4 | id for the AIMG chunk of the closed mouth image |
4 | id for the AIMG chunk of the open mouth image |
4 | id for the AIMG chunk of the blinking closed mouth image |
4 | id for the AIMG chunk of the blinking open mouth image |
1+ | closed mouth effects list |
1+ | open mouth effects list |
1+ | closed-to-open transitions list |
1+ | open-to-closed transitions list |
1+ | shortcuts list |
4 | shortcut mode, FourCC |
the possible state flags are as follows:
flag | description |
---|---|
0x1 |
images should be rendered pixelated (point sampling) |
0x2 |
blink image animation will sync with non-blink image animation |
0x4 |
image animation will reset when state is activated |
both effects and transitions lists are serialized the same. each is prefixed with a variable-length integer telling the number of entries. then for each entry:
length | description |
---|---|
1+ | effect/transition type, variable-length string |
1 | effect/transition flags |
? | if flags above contain 0x4 , id for the MEPR chunk; if flags contain 0x2 , variable-length string of the built-in preset id; otherwise, nothing |
1+ | number of custom values = n , variable-length integer |
8n |
each custom value, n double-precision floating numbers |
the possible effect/transition flags are as follows:
flag | description |
---|---|
0x1 |
this effect/transition is active |
0x2 |
this effect/transition uses a built-in preset |
0x4 |
this effect/transition uses a custom user-defined preset |
the shortcuts list is prefixed with a variable-length integer telling the number of entries. then for each entry:
length | description |
---|---|
1+ | id of the signal provider, variable-length string |
1+ | the signal itself, variable-length string |
signal providers include keyboards, mice, etc. the signal itself can be the keyboard key, or the mouse button, so on.
MANL
chunkprovides a list of anchors.
the entire contents of this chunk is a list of 4-byte integers, indicating the id of each MANC
chunk.
MANC
chunkprovides information on an anchor.
first serialized is the variable-length string for the anchor name. then, until the end of the chunk, we serialize positioning information for each state in the avatar:
length | description |
---|---|
4 | id for the corresponding MSTA chunk |
1 | anchor flags |
48 | positioning for the closed mouth image |
48 | positioning for the open mouth image |
48 | positioning for the blinking closed mouth image |
48 | positioning for the blinking open mouth image |
the possible anchor flags are as follows:
flag | description |
---|---|
0x1 |
this anchor is visible for the closed mouth image |
0x2 |
this anchor is visible for the open mouth image |
0x4 |
this anchor is visible for the blinking closed mouth image |
0x8 |
this anchor is visible for the blinking open mouth image |
positioning information is serialized as follows:
length | description |
---|---|
8 | X position, double-precision floating point number |
8 | Y position, double-precision floating point number |
8 | rotation in radians, double-precision floating point number |
8 | X scale, double-precision floating point number |
8 | Y scale, double-precision floating point number |
8 | skewing in radians, double-precision floating point number |
MEPL
chunkprovides a list of custom user-defined effect/transition presets.
the entire contents of this chunk is a list of 4-byte integers, indicating the id of each MEPR
chunk.
MEPR
chunkprovides information on a custom user-defined effect/transition preset.
length | description |
---|---|
1 | preset type; 0 for effect, 1 for transition |
1+ | effect/transition type, variable-length string |
1+ | preset name, variable-length string |
1+ | number of values = n , variable-length integer |
8n |
each value, n double-precision floating numbers |
ASFD
chunkprovides the list of images used in a mini avatar.
it starts with MINI
written in ASCII, and then for each image in the avatar:
length | description |
---|---|
1+ | image name, variable-length string |
4 | id for the corresponding AIMG chunk |
1 | zero byte |
the image name is most often just image00000000
with the numbers being the image chunk id in hexadecimal. all names must be unique.
this is a compatibility thing, as avatars created in veadotube mini 2.0 and 2.1 use an asset management system that requires this chunk, otherwise images won’t be loaded. avatars loaded in veadotube don’t require this chunk.
each effect and transition type has an id and different uses for each declared value:
effect type | description | param #1 | param #2 | param #3 | param #4 |
---|---|---|---|---|---|
randommove |
moves with perlin noise | amount | velocity | ||
wavemove |
moves with sine and cosine | amount X | amount Y | time period | period offset |
jump |
bounces in a parabola | amount X | amount Y | velocity | |
waverotate |
rotates with sine | amount | time period | period offset | |
darken |
darkens image | amount |
transition type | description | param #1 | param #2 |
---|---|---|---|
jump |
bounces in a parabola | amount | velocity |
if an effect or transition doesn’t provide enough values for the necessary parameters, they’re filled with zero.