Designing Chasm, a procedurally generated Metroidvania
James Petruzzi had given up game development until he had the idea for Chasm, a procedurally generated take on Metroidvania platformers that will be released on Steam and PS4 in 2017.
Petruzzi got into programming because he wanted to make games, but for a while he was making them in his spare time while working in software engineering. After partnering up with his high school friend Tim Dodd, they created the multiplayer platformer Take Arms, a game for the XBLIG marketplace. While Petruzzi thinks it did pretty well, it wasn't "a big hit or a life-changing phenomenon" like they had hoped it would be. He stepped away from development for six months, but a eureka moment brought him back to it.
"I was playing Symphony of the Night for the umpteenth time," says Petruzzi, "and thought it would be cool if details about the game were different each time you played. For instance, the order of the rooms, what drops from a particular candle when you break it, items received, which enemies were in a room, etc. I decided to make a quick prototype with some basic room shapes, and found that it was indeed possible to assemble sections of the game together from pre-made pieces."
Although Chasm is procedurally generated, the developers want the game to feel handcrafted. "Each area features a large repository of hand-made rooms. When you start a new game, it essentially creates paths between known points using rooms from those repositories," Petruzzi says.
This means that the order you fight the bosses and get powerups will always be the same, but the room-to-room experience in getting there will always be different. "We have a very fine level of control over distance between checkpoints, types of enemies that can spawn in certain sections, he says, "so our goal is to make it feel as well-paced and hand-designed as possible."
Getting the procedural generation right has been the biggest challenge they've faced. "It's easy to just throw a bunch of rooms together, but getting it to feel directed, well-paced, with a steady difficulty curve is a whole other matter," says Petruzzi.
"We've found that it's less about total randomness and more about possible variations," Petruzzi explains. "For instance, the rooms are all hand-crafted so there's no random generated terrain in them to worry about. But even the rooms placement in the world isn't completely random. Each one has a section assigned to it that it would work well in, and it helps keep the difficulty curve steady.
"Now you may see that room twice, but things can be different about it each time," he adds, "like which enemies are spawned in it, how many lanterns or crates it has, and also if shrines appear. Another example of variation over randomness, though, is the enemy spawns in the rooms. For each spot we mark which enemies work well there, and then when the room is picked for a dungeon the enemies are also picked according to the difficulty of the area its placed in and what works in those spots."
They've also taken steps to prevent the game from choosing the same room too many times in a row, so that the game feels more random to players than true randomness would be.
When asked how long a full run of the game will take from start to finish, Petruzzi admitted that he doesn't know because the developers know the rooms inside and out and can get through them quickly. "Personally, I'm hoping for a good 8 hour experience for a first playthrough," he says, "but we'll see once we finish up the core content and have our first playtesters check it out."