2024-10-06 00:57:24 +02:00
|
|
|
# marble machinations
|
|
|
|
(working title)
|
|
|
|
|
|
|
|
logic mostly like https://git.crispypin.cc/CrispyPin/marble
|
|
|
|
|
2024-10-06 12:39:36 +02:00
|
|
|
## todo
|
2024-12-18 21:31:05 +01:00
|
|
|
- comments
|
2024-12-17 15:40:27 +01:00
|
|
|
- accessibility
|
2024-12-20 23:14:40 +01:00
|
|
|
- ui scaling
|
2024-12-17 15:40:27 +01:00
|
|
|
- background colour setting
|
|
|
|
- hotkeys for everything
|
2024-12-08 12:10:14 +01:00
|
|
|
- more levels
|
2024-12-18 21:59:47 +01:00
|
|
|
- scroll output bytes
|
2024-12-14 17:30:37 +01:00
|
|
|
- make direct power (comparator -> machine) work, (needs storing power direction in machine tiles)
|
2024-12-08 13:01:20 +01:00
|
|
|
- cut selections, copy to system clipboard
|
2024-12-08 12:10:14 +01:00
|
|
|
- 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?
|
2024-10-06 12:39:36 +02:00
|
|
|
|
2024-12-08 22:52:13 +01:00
|
|
|
# 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
|
|
|
|
|
2024-10-06 12:39:36 +02:00
|
|
|
## file hierarchy
|
2024-10-06 00:57:24 +02:00
|
|
|
```
|
|
|
|
- assets/
|
2024-10-10 17:48:27 +02:00
|
|
|
- levels/
|
2024-12-22 18:03:52 +01:00
|
|
|
- chapter_01.json
|
|
|
|
- chapter_02.json
|
2024-10-13 17:00:59 +02:00
|
|
|
- sandbox.json
|
2024-10-10 17:48:27 +02:00
|
|
|
- user/
|
2024-10-06 00:57:24 +02:00
|
|
|
- solutions/
|
2024-10-13 17:00:59 +02:00
|
|
|
- output/
|
2024-10-06 00:57:24 +02:00
|
|
|
- solution_0.json
|
|
|
|
- solution_1.json
|
2024-10-13 17:00:59 +02:00
|
|
|
- copy_input/
|
2024-10-06 00:57:24 +02:00
|
|
|
- solution_0.json
|
2024-10-10 17:48:27 +02:00
|
|
|
- solution_3.json
|
2024-10-06 00:57:24 +02:00
|
|
|
- blueprints
|
|
|
|
- blueprint_0.json
|
|
|
|
```
|
2024-12-22 18:03:52 +01:00
|
|
|
|
2024-10-10 17:48:27 +02:00
|
|
|
|
|
|
|
## levels
|
|
|
|
### intro, basic mechanics
|
2024-12-24 22:43:21 +01:00
|
|
|
- output a zero (marble, output)
|
2024-10-10 20:51:19 +02:00
|
|
|
- output multiple numbers in sequence (digits)
|
2024-12-24 22:43:21 +01:00
|
|
|
- output zeroes forever (looping/arrows, button, silo output)
|
2024-10-10 20:51:19 +02:00
|
|
|
- copy the input (input)
|
2024-12-24 22:43:21 +01:00
|
|
|
- increment every number (math tiles)
|
|
|
|
- copy only odd input numbers (comparator, flipper)
|
2024-10-10 17:48:27 +02:00
|
|
|
### 0-terminated list processing
|
2024-10-10 21:28:55 +02:00
|
|
|
- copy the second list
|
2024-12-12 23:06:06 +01:00
|
|
|
- calculate list length (math, silo input)
|
2024-10-10 17:48:27 +02:00
|
|
|
- count instances of 5 in a list
|
2024-10-10 20:51:19 +02:00
|
|
|
- reverse a list (bouncing)
|
2024-12-24 22:43:21 +01:00
|
|
|
### text
|
|
|
|
- convert text to lowercase
|
2024-10-10 17:48:27 +02:00
|
|
|
- convert a number to decimal ascii
|
|
|
|
- parse an ascii number
|
|
|
|
### advanced list processing
|
|
|
|
- index a list
|
2024-12-24 22:43:21 +01:00
|
|
|
- reverse and return the first n elements of a list, with n given first
|
2024-10-10 17:48:27 +02:00
|
|
|
- add two lists element-wise
|
2024-12-24 22:43:21 +01:00
|
|
|
- sort a list
|