2D_Engine_C/assets/asset_builder/README.md

79 lines
3.8 KiB
Markdown

# Asset builder description
This program builds assets into an output file.
The supported file formats are :
- image (.png)
- maps (.map which is in reality json)
The different files format are deduced from the extensions only.
--------
To build objects files, they are analised and written in an output file wich content depend on asset type.
Their structure will be :
| Description | Length |
| :---------------- | :-----------------------|
| Asset size | unsigned int (32 bits) |
| Asset data | depends on asset type |
#### Image (.png)
Convert png's RGBA8888 to custom RGB565 with #0001 in RGB565 as the transparent color.
If png's alpha is null then the color of the pixel will be replaced with this.
##### Image asset data structure
| Description | Length |
| :---------------- | :------------------------------------------ |
| Image width | unsigned short (16 bits) |
| Image height | unsigned short (16 bits) |
| Image data | depend on image size, pixel short (16 bits) |
#### Maps (.map)
Convert from json to custom format.
##### Maps asset data structure
| Description | Length |
| :-------------------------- | :---------------------------------------------------- |
| Map width | unsigned short (16 bits) |
| Map height | unsigned short (16 bits) |
| Map background layers nb | unsigned char (8 bits) |
| Map background layers data | depends map size and layer count, tile short (16 bits)|
| Map foreground layer data | depend on map size, tile short (16 bits) |
| Tileset asset name | const char [] (variable length, ends with '\00') |
| Map hitboxes data | depend on map size, tile unsigned char (8 bits) |
| Entities number | unsigned short (16 bits) |
| ... | |
| Entity ID | unsigned int (32 bits) |
| Entity components number | unsigned short (16 bits) |
| ... | |
| Component type | unsigned short (16 bits) |
| ... | |
| Component attributes | depend on attribute type |
| int | unsigned int (32 bits) |
| float | float (32 bits) |
| bool | _Bool (8 bits) |
| str | const char [] (variable length, ends with '\00') |
| ... | |
| ... | |
--------
To build asset file :
First calculate header wich consists of :
| Description | Length |
| :---------------- | :------------------------------------------------ |
| Assets number | unsigned int (32 bits) |
| ... | |
| Asset name | const char [] (variable length, ends with '\00') |
| Asset start index | unsigned int (32 bits) |
| ... | |
And then write content of each input files.