Last updated: 2026-03-25
main.py- CLI parsing
- curses bootstrap
- main menu entry
game/engine.py- primary game loop orchestration
- input/update/render sequencing
- save/load, spawning, overlays, water/breath integration
- weapon reach handling, inventory use/equip actions, active-chunk mob simulation
world/world.pychunked storage + block accesschunk.pyruntime-config chunk containergenerator.pyprocedural generation + biomes + blending + lakes/claysave.pyworld/player serialization
entity/player.pyplayer state (health, inventory, armor, breath)mob.pyAI entity behaviormob_registry.pydata-driven mob definitionsphysics.pymovement/gravity/jump/autojump corecrafting.pyrecipe engineitem.pyJSON-driven item registry with weapon range support
render/renderer.pycurses drawing + HUD/panels + underground fog renderingcamera.pyworld-to-screen mapping
input/handler.pyconfigurable key binding mapping
config/- all gameplay/content tuning via JSON
Most tunable content and behavior is configured through JSON files:
- World/physics/water/save timing + underground fog tuning:
config/game.json - Engine pacing:
config/engine.json - UI strings/layout:
config/ui.json - Input bindings:
config/input.json - Blocks/tiers/colors:
config/blocks.json,config/colors.json - Items:
config/items.json - Mobs:
config/mobs.json - Recipes:
config/recipes.json - Biomes:
config/biomes.json - Block mine behavior:
config/block_behaviors.json - Main menu text/header:
config/menu.json
- Start via menu or CLI world settings
- Load save or generate new world
- Tick loop:
- input handling
- fixed-step updates (physics, mobs, water/breath, clock)
- rendering
- autosave cadence
- World-size override at new-world creation
- Directional use model for non-consumables
- Armor slots + mitigation
- Biome transition smoothing
- Biome-configured surface lakes with clay bottoms
- Performance-focused local water simulation
- Entity-aware solidity for player-only door traversal
- Configurable underground fog based on each tile's local surface depth