# marble machinations (working title) logic mostly like https://git.crispypin.cc/CrispyPin/marble ## todo cleanup: unpowered texture names x_off -> x sim/speed control gui (option) display input as numbers scroll output default i/o text modes specified per level properly center view make marble movement not order-dependent (`>ooo <` does not behave symmetrically) blueprints scroll level list decide on marble data size (u32 or byte?) blueprint rotation ## file hierarchy ``` - assets/ - storage/ - levels/ - 00_zeroes.json - 01_cat.json - 02_parse.json - 99_sandbox.json - solutions/ - 00_zeroes/ - solution_0.json - solution_1.json - factorial_194726/ - solution_0.json - solution_1.json - blueprints - blueprint_0.json - custom_levels/ - factorial_194726.json ``` `00_zeroes.json` ```json { "id": "00_zeroes", "name": "Zeroes", "description": "learn how to output data", "init_board": null, "inputs": [], "outputs": [0, 0, 0, 0, 0, 0, 0, 0] } ``` `00_zeroes/solution_0.json` ```json { "level_id": "00_zeroes", //redundant, useful if sharing solution files? "solution_id": "solution_0", "name": "unnamed 1", "board": "oo\nP*\n|-", "score": { "cycles": 8, "tiles": 6, "area": 6, } } ``` `blueprints/blueprint_0.json` ```json { "name": "fast printer", "board": "oo\nP*\n|-" } ```