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