# Overview
My second entry with Boxman (The artist behind Monster Girl Chaos), a diving game with loot, upgrades, and a story!
![]() |
![]() |
As always, the LD entry page can be found here
# Design
Carpathian started life with two ideas in mind: Blast movement and grappling hooks. As we iterated, blast got changed into a “thrust” kind of move, and grappling hook got changed from movement to more of an attack that was unlocked via upgrades.
# Level generation
I’m kind of proud of how the level gen turned out in this one. Hand crafting levels is always a pain in jams, and doing randomly segmented levels would still create problematic layouts that needed resolved unless we were careful and did a lot of testing, so I went with procedural. However, I wanted an organic “cave diving” feel.
This lead me to a multistep process that turned out pretty well
- Generate a base map with perlin noise. This creates a nice, organic feeling starting point. We have a target “shade”, eg how many tiles should be solid, so if we’re over or under our threshold, re-generate the map with an adjusted threshold (Perlin noise generates a FP value so we can just change our cutoff)
- Scan the map line by line, making sure we have at least one valid route down. If we can’t find one, carve a tile down, and try again. We keep a “cursor” that can move horizontally but never back up, so we ensure holes later on don’t trick the algo into creating an impossible skip. While we carve, we have a chance to randomly wiggle left or right to keep these shafts organic.
- Scan the resulting tilemap, and remove any tiles that aren’t orthogonally connected. This helps smooth out the map and removes “jagged edges” or single tiles floating in space, producing a more organic feel.
- Finally, we go through and place loot and enemies. I thought about adding deeper logic here to prevent placing loot in impossible to reach spaces, but later felt that it actually was cool seeing loot you couldn’t reach. Whether or not that’s good design is a question left to the reader, but during Jams, snap decisions get made with little to no testing, and often the “least resistance” choice gets a lot more weight.
# Play
The latest version can be found here