- add dig mode
- audio
- indicate block being dug (cracking sprite?)
- tried having the player class responsible for 'digging' effect
- doesnt feel right code gets messy
- instead: have player notify world that digging is starting or stopping somewhere. make separate class for digging effects which listens to digging signals
- the key_hold timer can be a repeater that emits start_dig periodically while key is held, then stop_dig when key is not held
- add fill mode
- as dig mode but fill instead
- display player mode somewhere (dig, fill)
- smooth movement
- add some 'budge' when cant move
- animate the character
- fixme:
- after digging some tiles change color. maybe related to layer modulation?
- tiles not updated on adjacent layers when digging or filling
- can climb and can descend logic seems inconsistent
- some hints dont make sense
- build for web, publish online
- view controls
- move up and down layers
- move center x/y
- edit controls
- add block to layer
- remove block from layer
- player command mode
- mark blocks for digging or filling
- marking blocks:
- "walk" a marker block around using move controls
- marker block can change size: 1x1, 2x2, 3x3
- spacebar to mark
- shift + spacebar to unmark
- npc follows commands
- digs block marked for digging
- can carry single block. cannot dig while carrying
- deposits blocks in designated areas
- pathfinding: simple a-star for now using godot AStar3D
- build & publish
Query return types:
- 3D arrays
Queries might look like:
- get_cube(pos, size)
Probably the simplest approach.
Another memory efficient approach.
The scene hierarchy could look like this:
- root
- World
- View
- Layer
- Layer
- Layer
- View
- World
Where there are several views that each manage their TileMapLayers. The World node contains the voxel data and provides a query interface for the Views.
We see a layer and it's surrounds. There's a quick UI for going up or down to neighboring layers. It could be clipped to a square, beyond which the vertical faces could be seen (like the edge of a RCT map). The view square could have a UI for changing the size.
There could also be a transparent preview for routes entering neighboring layers.
Like taking a quarter of a layer cake and seeing all the layers inside. This view is for visualising verticalities and connections between layers.
Similar to the vertical corner slice by way of having solid a xyz back plane. The difference is that in the volume of the fore-cube we also show the intersecting tunnels.
For example, showing all floors and walls with transparency within the volume.
Show all cubes that I can walk to (if I were spiderman) inside a bounding box.
For occluding walls we could draw a transparent sprite of just the wall touching the empty cube.