2024-10-06 00:57:24 +02:00
|
|
|
# marble machinations
|
|
|
|
(working title)
|
|
|
|
|
|
|
|
logic mostly like https://git.crispypin.cc/CrispyPin/marble
|
|
|
|
|
2024-10-06 12:39:36 +02:00
|
|
|
## todo
|
2024-10-08 21:51:31 +02:00
|
|
|
(more levels)
|
|
|
|
story/lore
|
2024-10-12 19:00:02 +02:00
|
|
|
copy/cut/paste selections
|
2024-10-10 16:58:50 +02:00
|
|
|
timestamps in solutions and blueprints
|
|
|
|
multiple input/output sets
|
2024-10-10 20:51:19 +02:00
|
|
|
undo/redo
|
2024-10-10 17:48:27 +02:00
|
|
|
tooltips
|
2024-10-13 17:00:59 +02:00
|
|
|
show level info in editor
|
2024-10-10 17:48:27 +02:00
|
|
|
lock tile types for early levels to make it less overwhelming
|
2024-10-13 00:55:28 +02:00
|
|
|
display tool variant more clearly (it's not obvious there are more states)
|
2024-10-08 21:51:31 +02:00
|
|
|
make marble movement more consistent (`>o o<` depends on internal marble order)
|
2024-10-06 12:39:36 +02:00
|
|
|
decide on marble data size (u32 or byte?)
|
2024-10-10 16:58:50 +02:00
|
|
|
blueprint rotation?
|
2024-10-06 12:39:36 +02:00
|
|
|
|
|
|
|
## file hierarchy
|
2024-10-06 00:57:24 +02:00
|
|
|
```
|
|
|
|
- assets/
|
2024-10-10 17:48:27 +02:00
|
|
|
- levels/
|
2024-10-13 17:00:59 +02:00
|
|
|
- 01_intro/
|
|
|
|
- 01_output.json
|
|
|
|
- 02_cat.json
|
|
|
|
- 02_lists/
|
|
|
|
- 02_parse.json
|
|
|
|
- sandbox.json
|
2024-10-10 17:48:27 +02:00
|
|
|
- user/
|
2024-10-06 00:57:24 +02:00
|
|
|
- solutions/
|
2024-10-13 17:00:59 +02:00
|
|
|
- output/
|
2024-10-06 00:57:24 +02:00
|
|
|
- solution_0.json
|
|
|
|
- solution_1.json
|
2024-10-13 17:00:59 +02:00
|
|
|
- copy_input/
|
2024-10-06 00:57:24 +02:00
|
|
|
- solution_0.json
|
2024-10-10 17:48:27 +02:00
|
|
|
- solution_3.json
|
2024-10-06 00:57:24 +02:00
|
|
|
- blueprints
|
|
|
|
- blueprint_0.json
|
|
|
|
```
|
2024-10-10 17:48:27 +02:00
|
|
|
## formats
|
|
|
|
### level
|
2024-10-06 00:57:24 +02:00
|
|
|
`00_zeroes.json`
|
|
|
|
```json
|
|
|
|
{
|
2024-10-13 17:00:59 +02:00
|
|
|
"id": "output",
|
2024-10-10 17:48:27 +02:00
|
|
|
"sortorder": 5,
|
2024-10-06 12:39:36 +02:00
|
|
|
"name": "Zeroes",
|
|
|
|
"description": "learn how to output data",
|
|
|
|
"init_board": null,
|
|
|
|
"inputs": [],
|
2024-10-10 17:48:27 +02:00
|
|
|
"outputs": [0, 0, 0, 0, 0, 0, 0, 0],
|
2024-10-06 00:57:24 +02:00
|
|
|
}
|
|
|
|
```
|
2024-10-10 17:48:27 +02:00
|
|
|
### solution
|
2024-10-06 00:57:24 +02:00
|
|
|
`00_zeroes/solution_0.json`
|
|
|
|
```json
|
|
|
|
{
|
2024-10-10 17:48:27 +02:00
|
|
|
"level_id": "00_zeroes",
|
2024-10-13 01:23:56 +02:00
|
|
|
"solution_id": 0,
|
2024-10-06 12:39:36 +02:00
|
|
|
"name": "unnamed 1",
|
|
|
|
"board": "oo\nP*\n|-",
|
|
|
|
"score": {
|
|
|
|
"cycles": 8,
|
|
|
|
"tiles": 6,
|
|
|
|
"area": 6,
|
|
|
|
}
|
2024-10-06 00:57:24 +02:00
|
|
|
}
|
|
|
|
```
|
2024-10-10 17:48:27 +02:00
|
|
|
### blueprint
|
2024-10-06 00:57:24 +02:00
|
|
|
`blueprints/blueprint_0.json`
|
|
|
|
```json
|
|
|
|
{
|
2024-10-13 01:23:56 +02:00
|
|
|
"id": 0,
|
2024-10-10 17:48:27 +02:00
|
|
|
"name": "zero_printer",
|
|
|
|
"board": "o -B I\n> * < \n"
|
2024-10-06 00:57:24 +02:00
|
|
|
}
|
2024-10-10 17:48:27 +02:00
|
|
|
```
|
|
|
|
|
|
|
|
## levels
|
|
|
|
### intro, basic mechanics
|
2024-10-10 20:51:19 +02:00
|
|
|
- output a zero (marble, io)
|
|
|
|
- output multiple numbers in sequence (digits)
|
|
|
|
- output zeroes forever (looping, trigger, bag output)
|
|
|
|
- copy the input (input)
|
2024-10-10 21:28:55 +02:00
|
|
|
- copy only odd input numbers (comparator, math, flipper)
|
2024-10-10 17:48:27 +02:00
|
|
|
### 0-terminated list processing
|
2024-10-10 21:28:55 +02:00
|
|
|
- copy the second list
|
2024-10-10 20:51:19 +02:00
|
|
|
- calculate list length (math, bag input)
|
2024-10-10 17:48:27 +02:00
|
|
|
- count instances of 5 in a list
|
2024-10-10 20:51:19 +02:00
|
|
|
- reverse a list (bouncing)
|
2024-10-10 17:48:27 +02:00
|
|
|
### 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
|