# Marble Machinations (working title) logic mostly like https://git.crispypin.cc/CrispyPin/marble ## todo - comments - accessibility - ui scaling - background colour setting - configurable hotkeys - hotkeys for everything (no mouse needed to play) - font selection (possibly a lot of work) - more levels - scroll output bytes - make direct power (comparator -> machine) work, (needs storing power direction in machine tiles) - cut selections, copy to system clipboard - timestamps in solutions and blueprints - lock tile types for early levels to make it less overwhelming - display tool variant more clearly (it's not obvious there are more states) - option to use 8-bit marbles? - blueprint rotation? ## file hierarchy ``` - assets/ - levels/ - chapter_01.json - chapter_02.json - sandbox.json - user/ - solutions/ - output/ - solution_0.json - solution_1.json - copy_input/ - solution_0.json - solution_3.json - blueprints - blueprint_0.json ``` ## levels ### intro, basic mechanics - output a zero (marble, output) - output multiple numbers in sequence (digits) - output zeroes forever (looping/arrows, button, silo output) - copy the input (input) - increment every number (math tiles) - copy only odd input numbers (comparator, flipper) ### 0-terminated list processing - copy the second list - calculate list length (math, silo input) - count instances of 5 in a list - reverse a list (bouncing) ### text - convert text to lowercase - convert a number to decimal ascii - parse an ascii number ### advanced list processing - index a list - reverse and return the first n elements of a list, with n given first - add two lists element-wise - sort a list