update file description in readme, add level plan

This commit is contained in:
Crispy 2024-10-10 17:48:27 +02:00
parent d92c5a2c25
commit 6365af0111

View file

@ -8,6 +8,9 @@ logic mostly like https://git.crispypin.cc/CrispyPin/marble
story/lore
timestamps in solutions and blueprints
multiple input/output sets
tooltips
lock tile types for early levels to make it less overwhelming
make a gui alternative to pressing R to rotate between tile variants
scroll level list
scroll blueprint list
make marble movement more consistent (`>o o<` depends on internal marble order)
@ -17,40 +20,43 @@ blueprint rotation?
## file hierarchy
```
- assets/
- storage/
- levels/
- 00_zeroes.json
- 01_cat.json
- 02_parse.json
- 99_sandbox.json
- levels/
- 00_zeroes.json
- 01_cat.json
- 02_parse.json
- 99_sandbox.json
- user/
- solutions/
- 00_zeroes/
- solution_0.json
- solution_1.json
- factorial_194726/
- 01_cat/
- solution_0.json
- solution_1.json
- solution_3.json
- blueprints
- blueprint_0.json
- custom_levels/
- factorial_194726.json
```
## formats
### level
`00_zeroes.json`
```json
{
"id": "00_zeroes",
"sortorder": 5,
"name": "Zeroes",
"description": "learn how to output data",
"init_board": null,
"inputs": [],
"outputs": [0, 0, 0, 0, 0, 0, 0, 0]
"outputs": [0, 0, 0, 0, 0, 0, 0, 0],
"input_is_text": false,
"output_is_text": false
}
```
### solution
`00_zeroes/solution_0.json`
```json
{
"level_id": "00_zeroes", //redundant, useful if sharing solution files?
"level_id": "00_zeroes",
"solution_id": "solution_0",
"name": "unnamed 1",
"board": "oo\nP*\n|-",
@ -61,11 +67,34 @@ blueprint rotation?
}
}
```
### blueprint
`blueprints/blueprint_0.json`
```json
{
"name": "fast printer",
"board": "oo\nP*\n|-"
"id": "blueprint_0",
"name": "zero_printer",
"board": "o -B I\n> * < \n"
}
```
```
## levels
### intro, basic mechanics
- output a zero
- output two numbers in sequence
- output zeroes forever (looping)
- copy the input
- copy only odd input numbers
### 0-terminated list processing
- calculate list length
- count instances of 5 in a list
- copy the second list (ignore input until first zero)
- reverse a list
### user-friendly numbers
- convert a number to decimal ascii
- parse an ascii number
- convert text to lowercase
### advanced list processing
- index a list
- search a list
- add two lists element-wise
- sort list