So, I made a game and people seemed to like it. Here are some words about it.
The idea(s)
Dr Ludwig and the Devil was a combination of two separate ideas I’d had that weren’t going anywhere on their own.
The first was a simple gag: a stereotypical mad scientist dealing with a torch and pitchfork mob that acts more like an annoying HOA than anything else. I liked the joke, but I couldn’t think of anything to actually happen, which is obviously kind of a problem.
The second was an idea for a puzzle, and it came from an indie point-and-click adventure game I played a while ago on itch.io that I can’t for the life of me find again to link here. At one point the protagonist had to banish a summoned elder god, only he couldn’t pronounce the banishment spell correctly and the elder god kept mocking him for it. My immediate reaction was, “Oh, I have to trick him into saying the words himself!” …The actual solution ended up being completely different, one that made more sense in the context of that game, but I liked my idea and I resolved to use that somewhere—I just needed to figure out where.
Then I had a flash of inspiration: of course the mad scientist was making a deal with the Devil!
The two ideas meshed surprisingly well. Both allowed for fun takes on classic tropes and jokes about following punctilious legal procedures in absurd situations, which are, of course, the best kind of jokes. I could even do a torch and devil’s pitchfork visual joke in the cover art! And, most importantly of all, once the concept came together the ideas for the rest of the game immediately started flowing.
Writing and designing the game
I knew right away that it had to be a parser game. All the ideas I had for implementing the final puzzle only worked in parser. So I dusted off my vague memories of learning Inform 7 back in 2009 and got to work.
I took a Monkey Island-ish approach to the setting—an anachronistic theme park version of a setting that only ever really existed in pop culture, and yes, of course there are silly grave inscriptions. Dr Ludwig himself is of course the linchpin of the whole thing, the cackling megalomaniacal mad scientist who’s concerned with playing the role correctly just as much as he is with playing god. Of course his character voice needed to seep into every pore of the game—it never would have worked otherwise. I was worried it might be a bit much (the amount of exclamation marks was carefully tuned!), but all the feedback I got was very positive. I think it helps that for all his posturing he never really gets too mean. During the game the only character you actually screw over is the Devil, who completely deserves it.
Oh, and the name ‘Ludwig’ comes from the Team Fortress 2 comics, which also feature a mad scientist making a deal with the Devil.
Hans was probably my favorite NPC to write. He was intended to be much more hostile towards the PC, but as soon as I sat down to write him he decided of his own accord to develop a friendlier personality instead. The option to romance him wasn’t something I’d originally planned, but it felt right. Several players were glad to have the option, even if it wasn’t particularly fleshed out. I don’t know if I’ll ever make a sequel, but if I do he’ll definitely be showing up again.
The Grand Grimoire was a blast to write—the gag of writing modern turns of phrase with archaic spelling is one I’ve always found incredibly funny. I also wrote an off-hand joke about it originating from a Mysterious Disappearing Shop™, which eventually spawned an entire NPC. The Shopkeeper was a fun one to write. My greatest regret is that she’s not more integrated into the plot/puzzles. She’s really only there for the communion wine puzzle. I was honestly expecting at least one reviewer to call me out on that!
As for the puzzles, I knew right away that they’d need to revolve around following the letter but not the spirit of any given instruction. The ink recipe puzzle was a natural way to do that. Overall, none of the puzzles were particularly groundbreaking, but they did their job. There was no specific puzzle that everybody hated, which is just about all I can ask for.
And, of course, there’s the Devil him/her/them/itself. As the most important NPC of the game and essentially the main antagonist, they needed to be the the most thoroughly implemented one, and the persuasion mechanics were of course required by the final puzzle, which meant adding an entire new dimension to interactions with them. Bringing them to life (so to speak) was a lot of effort—almost a third of the code in the game was dedicated to them!—but I think it was worth it. Their dynamic with the PC, each having their own advantages over the other, was an interesting to write, and I wanted to make it fun to get one over them. The final sequence where the Devil starts creatively interpreting all your orders wasn’t my original plan, but the original sequence didn’t have enough oomph. Having the Devil turn all your previous tricks against you felt like a good way to end the game.
I mostly learned Inform as I went along. A few of the game’s features—such as the tense shift in the epilogue and the Devil’s variable pronouns—were things I read about in the documentation and thought would be cool to implement. Of course the issue with learning as I went along is that the game ended up an eldritch mass of code precariously holding everything together that developed as I realized too late that I’d done things inefficiently but didn’t want to tear down the whole thing and try again from scratch. I actually did have to do that with the conversation system because the previous way just wasn’t tenable. Many reviewers actually praised the implementation, so presumably it managed to hold up fairly well when you’re not seeing the guts. (This is were I thank all my testers, whose help was invaluable.)
In the end I learned a lot about Inform and parser design in general that’s going to be useful in future projects, such as the correct way to use check/carry out/report rules and the fact that implementing persuasion mechanics is a bottomless pit of effort-sucking tar.
The next parser game I make is going to be limited parser.
Submitting the game
I wrote about a third of the game in a fugue state over about a week during summer 2022, which was kind of a problem since I really needed to be finishing ALWNS instead. Then I finally managed to get my priorities back on track and I let the game simmer for about a year. It’s not that I didn’t work on it—I just didn’t finish it. Turns out that combing through the ‘responses’ command to write custom responses to unnecessary actions that only two people are ever going to try is an excellent way to procrastinate on writing an ending!
So the deadlines for Spring Thing and Parser Comp whooshed past. As IFComp started looming on the horizon, I decided it was time to get serious—I’d just need to knuckle down and finish the thing. It was mostly done at that point! How hard could it be?
That’s when the universe decided to punish me for my hubris. Over the course of a handful of months I broke my arm, got diagnosed with a serious medical issue that required multiple surgeries, and caught Covid while recovering from the last one. I had to type the entire epilogue one-handed (some of my testers sure saw some typos), and I ended up not doing a second round of testing like I’d planned. I was also pretty much radio silent throughout the whole Comp, and to be honest it’s a miracle that what I typed in the announcement chat was in any way coherent. (I hope it was. I haven’t gone back to check.)
But I made it! I finished and submitted the game in time!
And then I won IFComp.
It’s been a rough few months, and I’m still not doing great to be perfectly honest, but the Comp was a bright spot during the whole thing. Watching the reviews start to come in, all universally much more positive than I ever could have expected was overwhelming. Thanks to everyone who played and gave feedback on the game. I saw and appreciated all your kind words, even if I wasn’t up to actually replying to them.
Seriously, I still can’t believe this happened.
So what next?
I honestly don’t know. Oh god, people are going to have Expectations now.