Day 6 - (Not so) Paralysed Promises
This was a really productive day. Taking a day off from work, I was able to get a lot done, and so the “main gimmick” of the game went in, as well as a few other items of polish and other features along the way. I feel good about where I am as I roll into the final day.
Day 6
Day 5 ended with a barebones but fairly functional roguelike, and it only took a bit more to make it a “feature-complete” game, at least as a minimal platform for other projects. I reached this point pretty fast. The time-boxing I described yesterday was fairly effective for some of the smaller tasks here:
- Adding a title screen, in a fairly standard style across my recent games.
- A win condition. Currently, this is triggered by defeating a boss monster, but we could change it.
- A generic “pane” as well as a text-rendering dialog for the Game-End messages. This can be repurposed for other messages too.
- Some preparations for multi-tile enemies. Most creatures are 1x1 tile, but larger ones would add to the tactical challenge.
- Larger creatures do pose some technical challenges as well. The most pressing one is that all my pathfinding code currently assumes you are 1x1, but you can’t apply that to 2x2 and beyond as it’ll get stuck in walls and corridors.
- I got a little lost in the weeds fixing some aspects of how the turn loop runs at the very start of the game. I realised that the game would start, and then everything would take an action except the player, so you’d start the game a turn behind, essentially. I wanted the player to go first on any given floor as it feels better.
(At this point, I felt comfortable marking the code as “core-complete”, and it makes for a good template for the future if you wanted)
With the core roguelike systems in, it was time to start adding my particular gimmick to the fore: Oaths. At the start of the game, you’re assigned at least one oath, which represents your character’s code of honor. Each one grants you a “boon” of some kind. The benefits of this aren’t always readily apparent. However, if you break the code of conduct enough times, the oath is broken and you lose the boon.
Implementing this was actually a lot easier than expected, although I had been planning on it for the whole event. My framework is set up so that every time an action was performed, events would be emitted (this is actually part of what drives the game UI, due to a hard separation of game state and UI). All I needed to do was add an extra “world system” which can listen for various events and pass that on to each oath. Individual oaths handle tracking the necessary things to decide if it’s broken or not.
For example: “Pacifism” watches for “Kill” events. If you are the source of the Kill event, you break the oath. There’s some leeway built-in: Most oaths have a number of “strikes” before you break it, but there’s also a mechanism for a “hard strike” which just breaks the oath straight out. So for “pacifism”, you might get a strike for knocking an enemy unconscious, but a hard strike for killing them outright.
The above also alludes to a change in how combat works, which I was expecting to make once the oath system was implemented: When you reduce a creature to 0 HP, it becomes unconscious, rather than being killed. You can then take an extra step of killing it (coup-de-grace) style. If it remains unconscious for a while, it may recover to 1HP and become active again. It could theoretically also be healed by allies.
Unconscious bodies introduced new problems: They were originally solid - you couldn’t walk through them. This meant that you might block yourself into a room, unable to progress until the creature recovers, leaving you to kite it out of the way. It’d also block other creatures coming for you. In the end, I decided to make them passable, so you can step over them. This has an interesting side-effect that if you (or an enemy) attacks something stood on top of a body (or pile of bodies), you hit everything in the same tile, killing the unconscious creatures in the process.
With the core of Oaths implemented (you can also view them in the character display window), I moved on to “piety”. I wanted some measure of how devoted you are to your deity, indicated as piety. I’m still figuring out exactly how I want this to work, but it’s impacted by the breaking of an oath, as well as praying at altars dotted around the dungeon (one per floor).
I left things last night with the beginnings of some extra creature behaviours, to make for a more interesting cast of enemies, rather than every single creature bee-lining for you the moment the game begins.
What’s Left
With a little less than a day remaining, I need to be really focused about what I work on now. I wanted some kind of magic system, but I’ll probably leave that for the end.
Mostly, we’re entering a content and polish phase of development.
- Doubling down on my gimmick, I should try to make more oaths.
- More items to find, with better placement across levels to cope with difficulty
- More dungeon generator techniques to vary the terrain.
- Diverse enemies to make combat interesting - A final boss would be great
- Music/SFX - this would be neat but unlikely (a friend has offered to make music for me, we’ll see what comes of it.)
If I can get all that done, there’s some extension tasks in my plan, but I’m not optimistic on my chances:
- Merchants - NPCs you can talk to, barter with or ignore.
- Magic - Spells and divine rites
- More detailed terrain features - puddles, moss, other structures
- Making everything look good - graphics enhancements might need to fall by the wayside, but if I can put tiles in, I’d like to, as an optional mode.
- Subtle “juice” - animations to give more energy to the game
Files
Get Acolyte's Pledge
Acolyte's Pledge
Hold fast, Honour the Code
Status | Prototype |
Author | Aviv |
Genre | Role Playing |
Tags | Seven Day Roguelike Challenge, Dungeon Crawler, paladin, Roguelike |
Languages | English |
More posts
- Day 7 - Flourishes and a Furious FinishMar 12, 2023
- Day 5 - Twisting Tunnels and ToolsMar 10, 2023
- Day 4 - Trips, Slips and FireballsMar 09, 2023
- Day 3 - Rainbow WritingsMar 08, 2023
- Day 2 - Taking StockMar 07, 2023
- Day 1 - RebirthMar 06, 2023
Leave a comment
Log in with itch.io to leave a comment.