
How To Fail at Writing A Game in 7 Days
Also, lots of Tunnels & Trolls-adjacent stuff.

Also, lots of Tunnels & Trolls-adjacent stuff.

7DRL is over. Most everyone has turned in their games. After several hours of last minute changes to improve balance, I submitted “You Are the Amulet” at the end of Day 6. This is the retrospective on the project; what went well, what went poorly, and what I will do differently next time. The last map before the boss fight What went well Integration with Tiled. This was a last minute addition to the game engine, but I felt it was vital that I be able to play on nice looking levels. I didn’t finish Tiled integration, as it has some quirks, and the open source tile sets I was using had their own quirks. I would want to double down on Tiled for another project, and allow mixing tile sets in one map. Tiled supports this; my engine can’t handle it yet.- Trinket.io. I knew that having the game work in a browser would be important. I don’t think anyone has run my game from the command line, and I don’t know that anyone will. I hope the judges do. A lot of the decisions I made were entirely based on whether it would work in Trinket. They don’t seem to support sound or transparency. When I wrote my Layout Manager, I made sure I could switch between Trinket and Native layouts.- YAML. My decision to program the game in a YAML file that was executed by the Python game engine was a literal game changer. As it stands now, I could write an entirely different game just by rewriting the YAML. There’s some things I still need to put in the YAML, but that wouldn’t take long to do.- Level generation. I was planning to spend Saturday creating levels by hand, but I thought of a way to do procedural generation to generate Tiled maps and populate them with critters. The level generator just adds to the YAML file and added no new Python code, proving again how import YAML was to finishing this.- Pathfinding. I really like how pathfinding worked in the game. Advent of Code gave me the opportunity to really lean into it and make the proper choices of algorithm and stuff.- I thought the prologue screen went well. I think it tells you up front what the game is going to be like, and I think it looks graphically interesting. It was the first map I did for the actual game, and I think it clearly shows why moving to Tiled for map generation was the correct choice, compared to the maps I was generating before I integrated it. I haven’t even come close to unlocking all the cool things Tiled can do. Prologue ...

It may seem like I’m not making a lot of progress, but I have a checklist for each night, and I really am doing what needs doing. Last night, I added a lot of new systems and fixed some crazy bugs, clearing the path for today’s “jam”. I’m not gonna apologize for my love of Blue Öyster Cult. Here’s “Damaged”, a song that should have been a hit off an album that should have been a hit. They been done wrong. ...

Halfway through the 7DRL and I have finally finished the major building blocks for the game by introducing the main game mechanic (finally)! But it *is *the halfway point, and a good time to wonder if this was the correct game to write for 7DRL? After 7DRL 2022 is done, I’ll be trying out as many of the other 7DRL games as I can, and write about them here. There’s been a few that I really want to play, and I really want to play them because they have a central new idea, and they build a small game around that idea. You’re hitting that new gameplay mechanic from the first second, and it builds from there. ...

I reached an important milestone, though a day late as I lost a day integrating the new tile set. As I added targeting and combat, I began to realize what kind of game this was becoming, and I think that understanding is going to let me finish 7DRL with an actual game that is, maybe, fun to play? Once you get through the Plotro, you’re tossed into the training room with a Sprite who can’t fight back. That’s because she’s using imaginary weapons. Unfortunately for her, you are using a very real saber. ...

The GIF here is basically all I got done for day 2 of 7DRL 2022. It doesn’t look like much, but it’s something. Also, by the “Berlin Interpretation”, is my game even going to *be *a “Roguelike”? To GET to that GIF, I had to do a LOT of coding. I loved the tileset I found, but each tile was in its own file, and each tile was 256x512 pixels, which was way larger than the 64x64 I’d used for the “outside” room and for the OG tile system I’d written before I decided to move to Tiled for creating rooms. ...

Yesterday was the day I officially started the 7DRL 2022 “Build a Roguelike in 7 Days” challenge. I can now reveal the game concept…. 7DRL officially started Saturday, but the rules say you can choose any seven days, as long as the submissions are in by the 13th. So I spent Saturday working on the game concept some more and started the official coding on Sunday. The game is “You Are the Amulet”. The original Rogue game had the adventurer delving through fifty levels of a deadly dungeon to wrest the fabled Amulet of Yendor from the evil grasp of the Wizard. They then ascend the dungeon and escape, becoming an “Ascended”. ...

I really thought I had more time. I thought I had a week to integrate the new Tiled-based map creation tools, and to make a workable combat system. I did not. I am entirely out of time. 7DRL starts tomorrow. I honestly, 100%, thought that 7DRL started on the twelfth. I thought that I would just barely be able to get the engine in rough shape by then, but it turns out I didn’t have any time at all. ...

The last element of the 7DRL engine’s “must haves” – a win condition for the player. With that out of the way, let’s talk about localization, combat, and making the game look a little less like crap. Win Condition Determining win conditions without using code is a challenge, and it’s a challenge I don’t yet know how to solve. It’s similar to the behaviors attached to weapons – I can define behaviors in the Python code and then select them in the YAML, but I can’t define them entirely in the YAML without writing some code in the YAML that knows about the game state somehow. ...

Working through my checklist of “must have” features for the game. I have a checklist of the bare minimum features I need to implement in the game engine before I can even think of implementing a real combat system. They are: The game must begin- The game must have a win condition- The game must let you lose- The game must let you defeat enemies- The game must let you be defeated by enemies Yesterday’s update covered the introduction to the game, and how I wrote a dispatcher to bring the player from the introduction and into the main game. At that time, the introduction was written entirely in code, but that was a problem. ...