Introducing Manley Mann #
I’m working on a new project with the fine folks at Scry Quest.
The game subverts the beat ’em up genre with wholesome themes of community building and positive masculinity. Instead of solving problems with fists, you build things out of wood to help out your neighbours. Rather than a beat ’em up it’s a “build ’em up.”
One of the games we’re using as a reference is the 1989 Capcom arcade game Final Fight.
Biggest Risks: Build System and Schema Matching #
For my part, as the programmer, the crux is the build system. The first thing I did was assemble a quick prototype where the player stacks blocks of wood and uses a hammer and nail pieces together.
With a little bit of moving nodes around and a lot of Godot magic I got a little demo working so I was no longer as worried about that piece.
The next big question, the next big risk from my perspective, is recognizing the builds. Thankfully, the player will select the schema they’re trying to match against so I don’t have to compare the build to every schema, just the one. That alone simplifies things a lot.
But I still need a way to decide if a given build matches a schema closely enough while making sure that schemas are really easy to create. We’re planning to have 10-20 items that the player is gonna try to build so they need to be straightforward to add.
To speed the development of the matching algorithm I created a test scene:
The table in the top-left corner is the schema, the other “tables” are test cases, some of which should be considered a match and others which most certainly should not.
I originally considered a solution where I’d define relationships between the pieces: “piece A will attach from one of its ends to the side of piece B.” It’s kind of like building up a node graph which I’m not surprised is the first idea that came to mind considering my long history with those.
I also considered point clouds and turning functions since I’ve used those recently in the sewing shapes game. (Relevant devlog)
But it’s better to start simple so I’m going with a silhouette.
- Create silhouettes for the schema and the build.
- Normalize the scale and shrink to like 32x32 or so.
- Calculate the difference between the silhouettes at different angles.
- Take the smallest difference as the score.
Would be neat to have blurring in specific places to allow flexibility. For instance, the legs can move sideways a little bit in either direction and it’s still very much a table. I could represent that with horizontal blur.
But not yet. That’s definitely a refinement for the future.