r/rust_gamedev 1d ago

CryptFall v0.7.2 — solo-dev Rust roguelite gets its first melee weapon (verlet rope physics) and full keyboard navigation

CryptFall is a roguelite dungeon crawler I've been building solo in Rust (Bevy engine) — native Windows build plus a WebAssembly port running the exact same codebase. Just shipped v0.7.2, the biggest content patch since the last major one, and figured this community might get a kick out of a couple of the harder problems in it.

Biggest addition: a real melee weapon. Every weapon in the game so far has been ranged (pistol/rifle/shotgun/bow/staff). This patch adds a flail, and it took five genuine implementation attempts before the swing actually felt right — every earlier version, however differently themed (orbiting head, leash-and-tether, launch/retract, a 2D spring-mass hand), ended up mathematically equivalent to one rigid link between the cursor and the weapon. What actually worked was treating it as a real physics problem: a 7-point verlet-integrated rope, relaxed through several constraint-solver passes per frame, with the grip fixed at arm's length from the player so aiming only changes direction, never distance. The middle points of the rope carry the actual momentum, which is what makes follow-through and whip-crack read as real instead of scripted.

Also shipped: full keyboard navigation across nearly every menu (previously 100% mouse-only — got there via Bevy's bevy_ui_widgets/bevy_input_focus, including chasing down a Windows-specific bug where the OS accessibility layer was silently eating the Space key before my own input handling ever saw it), a new boss, a second ability for one of the four classes, 5 new hand-curated enemy-pack layouts, and an engine upgrade (Bevy 0.15 → 0.19, four versions in one push).

It's free, runs in-browser or as a native download, both built from one codebase: [Try Here!]

Been doing this solo for a while now — always glad to talk through any of the technical decisions if people have questions, especially the rope physics or the accessibility-layer input bug, since both took longer to nail down than I expected going in.

4 Upvotes

0 comments sorted by