Until Death October 16th 2023
There's a video of me as a child, sitting before a Yamaha keyboard (before my parents got divorced). My dad was filming, and my mother was standing next to me. I played a melody that I thought of, I turned to the camera, grinning and checking if dad was "getting this". My mother would then ask me if I wanted to play something from a note sheet book. I declined and just kept jamming my own stuff. Then mother would just put the book in front of me and sort of "suggest" that I play that.
I gracefully wound down my track with an "end" button (which caused the percussion to play a sort of fill-in), and begrudgingly played what mom told me to play. After that was done, I played another melody that I found interesting. Again mom would ask me to play something from the book.
When I accidentally saw that clip recently, I was stunned. I couldn't remember it, but I vaguely recalled the melodies I played from memory, and I sort of still understood why I liked them. And I realized that I'm still that kid.
I absolutely hate being told what to do. That is simply not what I'm here for. My mind is full of ideas, all of which are asking me to be turned into reality. And believe me, they won't shut up, not even in my dreams. Thankfully, I've found a compromise that allows me to live an adult life and still have time for my own projects.
But as time slips away from me, I'm trying to hold it closer. Knowing that my time is running out, I'm longing for even more to call my own. And I know this has been an on-going theme on this website, because I kept mentioning it ten years ago.
I'm using productivity tricks, I use lists, motivation hacks, time audits, but all that does is burn me out, so I have to take it slow and steady. At least one hour per day, that's been my motto for over 15 years now. And that is what I will keep on doing until the day I die.
Will it be enough? Probably not. But realistically, with an infinite amount of ideas, could it ever be? No, but I have to learn to be okay with that.
Sacrifice - Faith in Despair Devlog #9 October 16th 2023

There's a new event called Sacrifice, which lets you sacrifice cards for life/mana/gold. Currently, that's the only option to remove cards from your deck, not sure if there will be more options in the future, as it's usually not that much of a problem to have more cards in this game.
Normally in other games a card is fixed, so you can have bad cards and the need to get rid of them. In Faith in Despair, you can change your cards, so it doesn't really matter.
Charm
Cards can now be charmed, which makes them attack their allies. This adds more importance for clearing debuffs in general. Another new debuff is Parasite, which doubles its growth every turn and deals damage equal to its growth value. I realized there are a lot of debuffs compared to buffs, so I also added Stoneskin.
Stoneskin replaces the spell "Increase Max Health", which originally was a permanent increase. In testing that turned out to be way too powerful though. When I made it temporary (until end of combat), it felt more like a buff, but it wasn't an official status effect, which felt confusing. With Stoneskin, it's a status effect now, it's still stackable, and it's another Final Fantasy reference.
Stoneskin was incredibly important in Final Fantasy 11 (and 14 before they removed it), it was a mandatory buff (alongside Protect and Shell) before entering big fights.
The lacrima "Increase Attack" was removed because it was also temporary and not a status effect. Warcry does the exact same and it's stackable.
Queuing actions
Playing card games (or games in general) should allow the player to play as fast as they want. Slay the Spire does this by allowing spells to be queued while another spell is still being played. Faith in Despair now also allows you to queue ending the turn, creatures and spells. As soon as the current spell chain reaction or the drawing of cards is complete, the queued actions are acted upon. It makes for a much smoother experience.
Bosses & Blessings
New bosses have been added for a total of 10 now. I think my favourite so far is Buné who starts on the board alone, but resurrects six demons once he's at half of his health.
I also added new blessings, resulting in a total of 15. One of them is Blood Pact, which lets you exhume a creature from your graveyard whenever one of your creatures is dealt damage from a friendly source.
Lots of other new lacrima have been added along with the new bosses and blessings, but since we're already talking about Exhume...
Enemy graveyard
Enemies now also have a graveyard, which persists throughout the run. This means that when you encounter a demon that has an Exhume lacrima, they can bring back enemies that you've defeated before. This actually caused some performance issues, because it kept all cards in the graveyard and they piled up pretty quickly.
I fixed those performance issues by turning off cards in the graveyards altogether. In addition to that, I now also turn off the front of all cards when they're facing down, which unlocks even more FPS.
Next Up
This week I'll add a few more blessings, and then I'll make a list of all the sounds I'm going to need. If I'm lucky, I'll even be able to add the first few sounds into the game too.
I also keep playing the game and noticing issues here and there, but overall I'm having fun, and that was the whole point of the project. I still haven't beaten it in its current state, but that means that I get to keep trying.
I'm honestly so excited to work on the game at the moment, it's absolutely clicking with me. I haven't felt this good in quite a while. Hopefully I can keep this up for the next few months because I know it's still going to be a lot of work.
But it can't hurt to be optimistic, right?
🧙♂️ To be continued...
Keywords - Faith in Despair Devlog #8 October 10th 2023

If you have a card with "Incinerate", then you probably want to know what that does, so it needs a description. Having descriptions for keywords is very important when the game has hundreds of different abilities.
So, I added these to the game. This meant that I had to write down the keywords for each lacrima that's already in the game, and then fetch the description from the localization spreadsheet.
Currently the keyword description gets displayed when hovering over a card. Still not sure if it's too much info for a simple hover, but on the other hand I don't want the info hidden behind an additional click or some other obscure action. When playing a round it felt okay, so I may leave it like that for now.
New Bosses
I added five new bosses and the new lacrima that they needed. This is a much needed update for the game because bosses can now be quite devious. :D
New lacrima include:
- ThunderStrike - inflicts Stun and does 15% additional damaged when Drenched
- WaterCannon - inflicts Drenched, removes Burn
- Incinerate - inflicts Burn, spreads to adjacent creatures, removes Drenched
- Summon Lesser Demon - adds another creature to the board and it has FirstStrike.
And so on and so forth.
Working Lacrima Rarity
Lacrima rarity is now fully implemented (not just in a json file somewhere). While playing, it felt... fine? I didn't notice that much of a difference just yet, but that'll probably become more apparent when I add more rare lacrima later on. It may just be that it actually Just Works™.
Blessings in JSON
Just like bosses, lacrima rarity and relations - blessings are now also stored as JSON. This is so much easier to handle than scriptable objects, especially because you can't trust the order of enums. This also allowed me to make it so that you can only get unique blessings (until you've gotten all blessings at least once, then the blessings pool gets shuffled and you can get duplicates).
Can't wait to add many more blessings now.
Miscellaneous
Other than that - as usual I fixed more bugs, and Auri played the latest version for about two hours. We actually forgot that so much time had passed, which - again - is probably a good sign. We discovered around 10 new things that I need to fix/change, but nothing too difficult or time consuming. Auri also won a round, which I hadn't been able to do in the latest version.
With the latest changes I feel like I took a huge step towards getting a demo out. Slowly but surely I can transition to adding sounds and music, which I'm very excited about.
🧙♂️ To be continued...
Boss Fight - Faith in Despair Devlog #7 October 03rd 2023
Boss fights are now slightly more curated. For this I once again chose to create a json file, which gets read at the start of the game.
Once the map gets generated, the map chooses a random boss from the json data, and generates the required lanes, minions, boss cards and boss lacrima.
At the top of the post you can see the first boss, he's called Paimon and he has two minions. The minions are randomly generated, the boss isn't. In this case, it caused quite a chain reaction on first turn, because Paimon buffed the minion on the right, which cause him to weaken all of my creatures and steal gold from each of them too.
Rarity
Lacrima now also come in different rarity. Just like bosses and lacrima relations, I stored this data in JSON. I decided to have 4 rarities: common, uncommon, rare and ultrarare. Ultrarare will be things that should change the game drastically. Not sure what exactly yet, but I already have some crazy lacrima ideas on my list that wouldn't make sense if they were common. Things like "remove lane", or "flip card", etc.
Dividing up all existing lacrima into these categories felt very good, it made a lot of sense and I believe it will lead to a more balanced experience when going through the levels.
Splash Screen
Since I want to get the game out to players soon, I added a splash screen. The only option right now is to start a new run (button not pictured), more buttons will follow.
Making this screen has felt incredibly motivating. I believe I've seen the first glimpse of the soul of this game. I already want to make music for this, for which I instantly got a bunch of ideas. And I feel like it informs the rest of the game, what it wants to be.
Things are going to get interesting from here on out.
Roadmap to Playtest
Here is a list of things I need to do before I can let you playtest it:
* 20 blessings: I have about a dozen blessings implemented, I want to have at least 20, and I also want to change them to json data. Right now they are stored as scriptable objects, which isn't working so great with enums. When you change the order of values inside enums, the options in scriptable objects don't change accordingly.
* 5 event types (fight, shop, sleep/rest, pray, altar/exorcism): I still need to add the altar/sacrifice/exorcise event that lets you get rid of cards for a reward. Other than that, all events are done.
* Balanced enemy materia distribution (for elite/boss fights, specific patterns): I want to have at least 10 bosses implemented, right now there's only one.
* Sounds: I can't wait to add sounds to this game, I already have a bunch of ideas. Music will play an important part as well, but for the playtest I may only add a maximum of two.
* UI update: There needs to be an actual rewards screen instead of just a popup. Shop and inventory need better UI as well, maybe even different backgrounds.
A rough estimate suggests to me that this will take another 2 months, which feels incredibly slow. I could try to speed up, but I'm not sure my health can take the hit. We'll see how it goes.
As I said previously, I've also begun playing FF7 again, I'm about 4 hours in and it's great (and frustrating in some ways, but that's old games for you). Also still reading Ask Iwata, and learning more about roguelikes.
My wife also playtested the current version again, and this run took us a bit more than an hour. We had a discussion afterwards about story and music for it. There are different versions of the game in my head, depending on how much time and money I want to spend overall. But we agreed that the soundtrack will be incredibly important, just like usual with my games.
🧙♂️ To be continued...
Shadows - Faith in Despair Devlog #6 September 25th 2023

Once the game was in 3D, I quickly noticed that something was missing: Shadows.
To add shadows to all cards, I needed to convert the background image from a Sprite to a mesh with a texture. Then I added a directional light, but nothing happened yet.
Sprites can't cast shadows, so each card needed a mesh as well, at first I tried just using a rectangular shape, but that looked fairly strange, because the cards have rounded corners.
Luckily, I learned to use Blender before Faith in Despair, so I created my own card mesh based on an imported card sprite for reference. Here it is, in all its glory:
It has 76 triangles, which is probably a bit too much. I tried just having a two-sided plane (no back culling), but apparently that's more expensive than a copied plane with real edges, so I did just that. I did use the lowest possible bevel for the corners, so that it still looked okay when the shadow is cast. I doubt this will ever be a problem for performance either way.
Once finished, I added this mesh to the card prefab, and voilà, all cards now cast a shadow:
Drag & Drop
The next thing I wanted to tackle was dragging and dropping cards. Up until now, you could only click a card, and then click the target. But for a mouse user it may be a bit more natural to drag cards around, so I implemented that as well.
It was a bit weird to add it to my existing UI system, but I managed to do it in a mostly non-invasive way. The code definitely didn't change that much, and it still works with controller and keyboard without having to drag & drop.
Lacrima Relations
Shops can offer lacrima now that are related to the ones you already have. This can lead to better synergies, as I've talked about before. For example: If you already have "Gain Gold", the shop now offers you "Steal Gold", "Block Damage With Gold" or "Turn Excess Damage To Gold".
Enemies can also now carry lacrima that work against you, i.e. if you have Weak, they can spawn with a "On Weak" trigger to react. This is not something low level enemies do, but elite and boss fights definitely have this.
The implementation works with a JSON file that looks like this:
When starting the game, the card manager imports that JSON file and creates a dictionary from it. That way, I can simply look up an entry with the key "OnHeal", and then check for Synergistic or Antagonistic, depending on who's asking (enemy, shop, treasure chest, etc.). Then I just pick a random one from the array, and return it. The returned string is then converted into the respective enum of the lacrima, which can then be used by the game's systems.
This is currently only used very sparingly, because I'm not too sure of the effects it will have on the game, but from what I can see, the few times it already triggered correctly, it did result in some pretty fun situations.
Bugs and Features
Once again, I fixed a handful of bugs that aren't really worth mentioning (lots of fine details or edge cases).
Apart from those, I also made it so the cards are now a bit rotated when facing down. This creates a more natural feel, I believe. You can see it here on the map screen and if you look at the deck in the lower right (I got this idea from Aces & Adventures).
Poison and Regeneration deal damage like in other deckbuilder games now, that is, they use their remaining turns as values, instead of percentage of max health. I originally wanted them to be like in Final Fantasy 7, but the overall values aren't high enough to merit a percentage (i.e. in FF7 poison deals 1/32 of a creature's max health every turn, which is not a lot if your creature has 30 hp).
Speaking of status effects, they are now shown on the right side of the cards, which feels a lot better. They also still needed to be turned into Images (instead of SpriteRenderers) to work with the new canvases. They still require individual icons, but that's something for later.
And finally, Blessings now have names, but they aren't used yet. Need to make sure they aren't too long for the card header.
Starter Packs
I'm not sure if I have mentioned this before, but Faith in Despair will have different starter packs, which come with different starter blessings. The current one now has a blessing with "Gain Mana 1" at beginning of turn, so basically a low mana regeneration.
I don't know how many starter packs I will add in total, but 5 sounds like a good number to aim for. Each pack will require to be balanced carefully though, so it will take a while to get to 5.
Next Up
This week I will finally be able to add the first boss demon, and I can't wait. It's going to be interesting to see how the game changes with a fixed boss encounter, my hope is that it adds a bit of a handcrafted touch to it.
I keep reading articles and watching videos about roguelikes and balancing, and I also started reading Ask Iwata, which already had some good insights, although not directly game-related. It's still very motivating though. Iwata just wanted players to have fun, and it's such a good reminder.
Everything I do in Faith in Despair is about making sure the player has fun. And I hope you'll be able to experience that yourself once it is playable.
🧙♂️ To be continued...