No description
Find a file
2024-12-15 00:38:53 +01:00
assets redraw digit tool icon to match digit tiles 2024-12-14 23:57:26 +01:00
levels support using strings directly as level input and output data 2024-12-05 14:23:21 +01:00
src stop cloning strings for every tile texture name lookup, general clippy fixes 2024-12-15 00:38:53 +01:00
.gitignore makefile with linux release 2024-10-13 13:34:33 +02:00
Cargo.lock set window title and package name 2024-12-09 12:42:50 +01:00
Cargo.toml set window title and package name 2024-12-09 12:42:50 +01:00
Makefile makefile with linux release 2024-10-13 13:34:33 +02:00
README.md rename gate to comparator 2024-12-14 17:30:37 +01: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

  • undo/redo
  • more levels
  • make direct power (comparator -> machine) work, (needs storing power direction in machine tiles)
  • cut selections, copy to system clipboard
  • timestamps in solutions and blueprints
  • multiple input/output sets
  • 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)
  • option to use 8-bit marbles?
  • blueprint rotation?

physics

  • find direct bounces (todo consistency)
  • execute direct bounces
  • mark tiles as Claimed, ClaimedIndirect, BlockedIndirect, Blocked
  • direct movements can move to any but Blocked tiles
  • indirect movements can only move to ClaimedIndirect
  • Claimed + ClaimedIndirect = BlockedIndirect
  • ClaimedIndirect + ClaimedIndirect = BlockedIndirect
  • Claimed + Claimed = Blocked
  • BlockedIndirect + Claimed = Claimed

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, button, silo 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, silo 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