Today was a shockingly productive Sunday. Last night before bed, I was thinking about how a fight about "stances" could work in a turn-based game. Woke up, discussed it with a friend for an hour or so, and it quickly evolved. Within 2 hours..
The Shade of Kristoff was born! Mind the placeholder background, was just a screenshot from testing the mechanics of the fight, which are now fully implemented.
Kristoff's place in the main story of the yet-to-be-named Project Babel is minimal to none, but he's of great importance to the second area, Transyl, and it's central themes of fear and doubt. His place in the "lore," if you will, is going to be major. As a side boss, I don't want to force him, or his story on the player, but it will be there for players to explore if they wish to, and in doing so they will get more context for what makes the citizens of Transyl the way they are.
From a sheer development point of view, this is
insanely fast development time for me. Jellordos, the first sideboss took close to 3 weeks to make from start to finish, and the first major boss, the Court of Bones took 2 major rehauls and close to a month of development time total to nail down the mechanics.
So, how does it work? Well, the initial concept was you have 2 phases. An attack phase, and a defense phase. During the attack phase, he would continually up his attack by a percentage amount every turn. Something the player controls would trigger him to change phases, and when done, all the attack buffs would drop off. Then, during the defensive phase, he'd up his defense by a percentage amount every turn. Again, players would choose when to trigger the change.
Originally, the hope was that by having this "management" of phases, it would allow the player to adapt the fight to their specific strategies, but I had no real way of giving the player a way to interact with these phases, and trigger the change, in any meaningful way. Discussion was had, and now the fight works like this:
At the beginning of the fight, the boss will enter a defensive stance. Every turn, he'll cast a stack of this defensive buff on himself, in addition to doing whatever it is that he does. At 50% health, he'll begin to channel a heal, which will take 2-4 turns to cast. When he's done, he'll heal himself back to 100% health, and change stances to a neutral stance, where he increases his attack and defense, but by half the amount he previously increased them. At 50% this time, he'll channel again, and change stances to an aggressive stance, focusing on an all out attack style of play, and finally when he hits 50% for the third time, he'll trigger my mechanic that is on all bosses (which I'm not quite ready to reveal to the world yet). Worth noting he doesn't fully heal on this last one, in fact he doesn't heal at all.
With any luck, players will find the shifting play style fun, as I've tried to give them adequate breathing room to prepare for phase changes, which is why he channels the heal. The hope is that while on an initial fight, the player may not understand what's happening, on subsequent attempts they'll be able to identify clearly "this is when I can do X thing." It's very guided, but I believe the challenge will come from not knowing for certain how much time you'll have to adapt, and certainly part of it will be the thrill of figuring out each phase and how it works. You don't want to be transparent with information, but you don't want to be too opaque, either.
Anyway, sorry for typing your ear off, IndieGAF. Just super excited about this fight, and I hope my testers this week enjoy it as much as I think they will.
Edit:
A screenshot for the game? Uh... Nothing yet, probably will make one when I make my first real tileset. But I've run into an issue and seek help from those using Game Maker themselves...
I've booted up the game as 1080p and it looks like this: I have no idea why the sprites are being morphed.
Someone correct me if I'm wrong here, but I think this has to do with you using odd number spritesheets vs even number spritesheets. 1920x1080 can be scaled to intervals of 32x32, for example, pretty cleanly. However, if it's say 31x31, then some guess work may be requires for "does this one-pixel wide area become 2 pixels to fit the screen resolution?"