Skip to content

explosivose/isodig

Repository files navigation

isometric digging

TODOs for poc

  • 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

first poc goals

  • view controls
    • move up and down layers
    • move center x/y
  • edit controls
    • add block to layer
    • remove block from layer

next poc goals

  • 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

voxel notes

Query return types:

  • 3D arrays

Queries might look like:

  • get_cube(pos, size)

3D array

Probably the simplest approach.

Sparse voxel tree

Another memory efficient approach.

rendering notes

The scene hierarchy could look like this:

  • root
    • World
      • View
        • Layer
        • Layer
        • Layer

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.

View ideas

Horizontal slice

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.

Vertical corner slice

Like taking a quarter of a layer cake and seeing all the layers inside. This view is for visualising verticalities and connections between layers.

X-ray cube

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.

Reachable cubes

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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors