No description
Find a file
2024-10-13 17:00:59 +02:00
assets cleanup 2024-10-12 23:27:28 +02:00
levels add some ascii levels 2024-10-13 17:00:59 +02:00
src show version in corner of level list 2024-10-13 13:34:08 +02:00
.gitignore makefile with linux release 2024-10-13 13:34:33 +02:00
Cargo.lock initial level selection gui 2024-10-06 12:39:36 +02:00
Cargo.toml initial level selection gui 2024-10-06 12:39:36 +02:00
Makefile makefile with linux release 2024-10-13 13:34:33 +02:00
README.md add some ascii levels 2024-10-13 17:00:59 +02:00
rustfmt.toml init 2024-10-03 22:59:49 +02:00

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],
  "input_is_text": false,
  "output_is_text": false
}

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