Noah Petherbridge
c7a3c7a797
* Add documentation for the game's file formats and RLE encoding * Remove the never-used GridType Chunk Accessor constant
116 lines
3.9 KiB
Markdown
116 lines
3.9 KiB
Markdown
# RLE Encoding for Levels
|
|
|
|
This documents some of the file size savings of the game's built-in levelpacks and doodads once the file format was migrated to use Run Length Encoding (RLE) for drawing chunks.
|
|
|
|
See [Evolution of File Formats](./Evolution%20of%20File%20Formats.md) for a history of the game's file formats.
|
|
|
|
# Levels
|
|
|
|
The file sizes of the levels themselves:
|
|
|
|
## First Quest
|
|
|
|
| Filename | Orig Size | New Size | Reduction |
|
|
|--------------------|-----------|----------|-----------|
|
|
| Boat.level | 4.3M | 292K | 93% |
|
|
| Castle.level | 5.6M | 241K | 95% |
|
|
| Desert-1of2.level | 4.4M | 248K | 94% |
|
|
| Desert-2of2.level | 3.2M | 290K | 91% |
|
|
| Jungle.level | 11M | 581K | 94% |
|
|
| Shapeshifter.level | 22M | 263K | 98% |
|
|
| Thief 1.level | 538K | 193K | 64% |
|
|
|
|
In raw bytes:
|
|
|
|
| Filename | Orig Size | New Size |
|
|
|--------------------|-----------|----------|
|
|
| Boat.level | 4494184 | 298943 |
|
|
| Castle.level | 5854222 | 245872 |
|
|
| Desert-1of2.level | 4589382 | 253768 |
|
|
| Desert-2of2.level | 3310784 | 296681 |
|
|
| Jungle.level | 10928779 | 594601 |
|
|
| Shapeshifter.level | 22823811 | 269307 |
|
|
| Thief 1.level | 550579 | 196731 |
|
|
|
|
The levelpack ZIP:
|
|
|
|
* Filename: builtin-100-FirstQuest.levelpack
|
|
* Original: 50M (52369408)
|
|
* New size: 1.8M (1838542) 96%
|
|
|
|
## Tutorial
|
|
|
|
| Filename | Orig Size | New Size | Reduction |
|
|
|--------------------|-----------|----------|-----------|
|
|
| Tutorial 1.level | 186K | 111K | 40% |
|
|
| Tutorial 2.level | 680K | 229K | 66% |
|
|
| Tutorial 3.level | 409K | 148K | 64% |
|
|
| Tutorial 4.level | 901K | 376K | 58% |
|
|
| Tutorial 5.level | 3M | 645K | 78% |
|
|
| Zoo.level | 2.8M | 226K | 92% |
|
|
|
|
In raw bytes:
|
|
|
|
| Filename | Orig Size | New Size |
|
|
|--------------------|-----------|----------|
|
|
| Tutorial 1.level | 190171 | 113568 |
|
|
| Tutorial 2.level | 695936 | 233880 |
|
|
| Tutorial 3.level | 418490 | 150565 |
|
|
| Tutorial 4.level | 921781 | 384775 |
|
|
| Tutorial 5.level | 3059902 | 659487 |
|
|
| Zoo.level | 2925633 | 230712 |
|
|
|
|
The levelpack ZIP:
|
|
|
|
* Filename: builtin-Tutorial.levelpack
|
|
* Original: 7.8M (8119658)
|
|
* New size: 1.6M (1650381) 79%
|
|
|
|
## Azulian Tag
|
|
|
|
| Filename | Orig Size | New Size | Reduction |
|
|
|---------------------------|-----------|----------|-----------|
|
|
| AzulianTag-Forest.level | 17M | 312K | 98% |
|
|
| AzulianTag-Night.level | 702K | 145K | 79% |
|
|
| AzulianTag-Tutorial.level | 3.4M | 185K | 94% |
|
|
|
|
In raw bytes:
|
|
|
|
| Filename | Orig Size | New Size |
|
|
|---------------------------|-----------|----------|
|
|
| AzulianTag-Forest.level | 17662031 | 318547 |
|
|
| AzulianTag-Night.level | 718345 | 147612 |
|
|
| AzulianTag-Tutorial.level | 3508093 | 189310 |
|
|
|
|
The levelpack ZIP:
|
|
|
|
* Filename: builtin-200-AzulianTag.levelpack
|
|
* Original: 21M (21824441)
|
|
* New size: 525K (537345) 97%
|
|
|
|
# Doodads
|
|
|
|
Spot check of random doodad filesize changes:
|
|
|
|
| Filename | Orig Size | New Size |
|
|
|--------------------------|-----------|----------|
|
|
| anvil.doodad | 2.7K | 1.3K |
|
|
| azu-blu.doodad | 8.1K | 5.2K |
|
|
| azu-red.doodad | 8.1K | 5.2K |
|
|
| azu-white.doodad | 8.1K | 5.2K |
|
|
| box.doodad | 29K | 4.1K |
|
|
| boy.doodad | 30K | 8.1K |
|
|
| crumbly-floor.doodad | 15K | 3.3K |
|
|
| door-blue.doodad | 18K | 2.7K |
|
|
| electric-trapdoor.doodad | 9.5K | 2.8K |
|
|
|
|
Total file size of all builtin doodads:
|
|
|
|
* Original: 576.8 KiB
|
|
* New: 153.7 KiB (73% reduction)
|
|
|
|
# Game Binary
|
|
|
|
* Filename: sketchymaze
|
|
* Original: 105M
|
|
* New size: 30M, 71% smaller |