Name is a placeholder. The concept is a survival crafting game, where when the tide is low, you explore a set of caves for resources and treasure. When the tide rises, you need to get out before you get trapped. The core fun of the game, should be navigating procedurally generated caves with a varity of movement options. Jumps, dashes, grappling hooks, gliders, etc.
- [DECIDED]: The game is a survival crafting game, but mining is not the focus. The focus is on fun platformer movement
- [DECIDED]: The game is not a roguelike. Basebuilding, and returning to your base is a core gameplay component
- [DECIDED]: Tools have duribility, broken tools can still be used.
- [DECIDED]: Farming? No. Only fishing and forging
- [DECIDED]: Eating food to heal, must be at base
- [DECIDED]: Clock on HUD. Crafted by items. Sounds indicate rising water.
- [OPEN]: How to implement water? Static? Cellular automata? Water that rises independent of terrain? Smooth particle hydrodynamics? Simple springs for waves?
- [DECIDED]: Should there be boss battles? Unique boss per layer. Probably wont get to this
Note, many of these tasks can and should be broken up into smaller tasks
Things required for the games core concept
- Infinite worldsize
- Basic player physics (Jump, climb, walk, swim)
- Basic character animations (Jump, climb, walk, swim, idle)
- Basic Tileset
- Raycast for player tools
- Cave generation
- Dynamic Water
- Tidal cycle
- Screen Management System
- Item and equipment system
- Inventory UI
- Player health/HUD
- Tool - Dash
- Player Breath hold
- Tileset variants
- Load map from file
- Stala(gm/ct)ites
- Tool - Pickaxe
- Ore generation
- Map tile loading
- Crafting system
- Crafting recipes
- Physics Overhaul
- Crafting only when near crafting table items
- Save/load/new game
Things that I would really like to have
- Dynamic lighting
- Tool - Lamp
- Torches cast light
- Colored lighting
- Tool - Grappling Hook
- Tool - Glider
- Boots
- Tool - Fishing rod
- Forageable foods
- Fishing. Maybe like Stardew Valley?
- Animated tiles (furnace, anvil, torches, eg)
- Parallax backgrounds
- Overlay block breaking animation
- Multiple tile layers, allow placing blocks in foreground/background
- Few opening in tunnels, more in caverns
- Ore can generate in background layers
- Maybe replace tideblocks with places water flows in from
- Proximity sound effects for torches
- Layering music as you go deeper
- Flooding caverns music intensity
- Sound effects when things happen
- Looping sound effects for things like mining
- Dynamic wooshing, and thuds for falling and impact
- Improved hitbox/collision handling
- Tide clears building items
- Bombs explode
- Ladders
- Chests store items
- Tool repairs/upgrades
- Tool colour swapping on animations
- Death screen/respawn
- Tide clock ui
- Permenatly save block placement on surface
- Breath bar fills slowly out of water
- Bat enemies
- Mole enemies
- Tool - Spear
- Crouching
Things I will get to if there is time
- Additional game modes
- Hardcore mode. Dead is dead
- Relaxed mode. No tidal pressures
- Creative mode. Infinite of all resources
- Decorative tiles for base building
- Message in a bottle hints for gameplay
- Improve water simulation to support natural waves
- Dungeons. Sets of connected handmade rooms to find important items
- Day night cycle
- Multiple cave biomes as you get deeper
- Multiple cave generation types
- Boss battles
The project includes several binary tools for working with map tiles:
-
generate_map_variants: Generates 64 map variants by combining edges from two template images- Run:
cargo run --bin generate_map_variantsfor horizontal maps (64x32) - Run:
cargo run --bin generate_map_variants -- --verticalfor vertical maps (32x64) - Takes
template_cavern_h.pngandtemplate_tunnel_h.png(or_vversions) - Produces
gen_h_XXXXXX.pngfiles where each X is either C (cavern edge) or T (tunnel edge) - Each map has 6 edges (left, right, top-left, top-right, bottom-left, bottom-right)
- Only samples the middle 30 pixels of each edge for compatibility checking
- Run:
-
countmaps: Analyzes all maps in theassets/mapsdirectory- Shows statistics about horizontal and vertical maps
- Groups maps by their edge patterns (Cavern, Tunnel, or Unknown)
- Useful for verifying that generated maps have the expected edge types
Generated map variants are gitignored (gen_h_*.png and gen_v_*.png). Files need to be renamed to be pushed.