Log In  


Cart #kingslayers_remastered-2 | 2023-12-05 | Code ▽ | Embed ▽ | No License
24

"Unsettled with the crown, a small group sets off to take the castle by force and defend the throne as their own. Their success will depend on their tactics on the battlefield, and the cunning by which they select their allies."

Kingslayers Remastered is a small tactical RPG. The original Kingslayers was created by Justin Jaffray (@J) in 2015, the early days of PICO8! This is my "remaster" of it (with permission), adding in helpful tactical UI elements (view unit stats, movement ranges, and so on), background music, and various new units, abilities, and levels-- almost twice the game content. I also found and fixed some bugs in the original... but it's possible I've introduced new ones :)

How to Play

Arrows move the cursor, 🅾️/Z selects, and ❎/X cancels

After moving, each unit can attack adjacent units, or use its special ability if relevant.

Maneuver your team to defeat the enemy, but be careful not to expose your weaker units to too many hits, as defeated units die permanently! Note that you can afford to lose some units in pursuit of the greater good-- you'll get to recruit new team members after each level.

The game has a few roguelike elements (partly randomized enemies and ally recruits each level, permadeath, and no save/load: die, learn, repeat), but there a fixed campaign of 8 levels to beat to achieve "victory" (which then unlocks a "hard mode" if you want an additional challenge...)

Development Notes

After finishing a larger tactical RPG project, I was looking to just play others' PICO8 games for a while. One of the games I came across was Kingslayers, which I enjoyed (fitting allied-unit tactical combat into a single PICO8 cart is impressive!), but realized I missed the tactical assistance that comes from "open unit information" (HP, attack damage, movement) in games such as the GBA era Fire Emblems.

I looked in the code to understand how combat math worked, and realized I could print these units stats as an overlay on my local copy of the game. Somehow that spiraled into other just-for-myself(?) UI improvements such as auto-endings turns after all units have gone and palette-swapping enemy sprites to add red to make them easier to distinguish. Then once I beat the game, I was inspired to add a few more unit types and levels until I hit the PICO8 limits. I reached out to the original author to check he was fine with me releasing this modified version, and here it is.

I'm calling this "v0.9" rather than "1.0", as this was a small-scope project over the past two weeks, and I've done only moderate amounts of playtesting (and I only partially understand the original code-- I'm not as familiar with that deeply object-oriented approach), so it's likely there are new corner case bugs I haven't found in testing. I'll fix bugs and tweak balance as I get feedback here (updates below).

Bonus note for reading this far: There is a secret way to warp reality to bypass levels, created for debugging but left in... there's one square on the map with special properties...

Release Log

v0.91 (2023-12-03): first upload
v0.92 (2023-12-03): bugfix (I hope) for crash bug, potentially related to flying units which ignore terrain trying to path-plan a route that takes them off the map...
v0.94 (2023-12-04): improve spinblade UI and flexibility, add "hard" mode (stronger enemy AI, slightly more units), make final boss immune to stun, rare bug fixes

24


Glad to see an updated version of this game. Still see that the enemy does not rest... I'm not complaining.
The choose 4 is a nice balance change.
Healer seem to have gained a lot of mobility and healing power. With exact stats shown, goblin is now super useful.
The new circle fighter was a big disappointment, even killed my own unit... Bat wasn't great either, thought the flying would have been more useful. Is tank gone or are there just so many units now that I didn't get to see it in this play-through ? Stun mage was fun, didn't dare try the assassin.

Would love to see the stats window when looking at potential recruits

Not sure why the game crashed here, didn't do anything special.


Thanks for the feedback! Sorry about the crash bug-- I haven't been able to reproduce it playing that level a few times, but I found a potential cause-- I tweaked path planning for flying units that ignore terrain, and it seems like that crash could happen if the bat is on the very edge of the map and tries to plan a move that starts by flying off the map. That's also a rare level where a bat can spawn on the map edge turn 1 so that seems plausible... in any case, I've uploaded a cart that should prevent fliers from move planning off the map, so if that was the cause that should prevent it...

To your other comments:

  • Yes, I powered up the healer a lot, because I feel in many games like this healers aren't worth it and it's better to just have more attacking units in your party (best defense is a good offense, etc). I wanted to make it more of a choice...
  • I like the idea of unit stats on the recruit screen, I'll add that to the todo list
  • Tank unit still exists, you just never happened to draw it as an upgrade option (sounds like you saw all the other units, though)
  • I agree, the bat is not as useful as I hoped-- I had it with +1 move and attack earlier, but then groups of enemy bats were too destructive / swingy-- you could get a bad roll on enemy ai targeting and it would be impossible to save your weaker units from them. My ideal solution would be to keep the bat as an enemy-only unit and add a rare player flier (pegasus?) with higher move and attack.
  • I imagined changing it so no units (except the bomber for thematic reasons) could damage allies, which would make the spinblade easier to find uses for and reduce feel-bad attack-your-ally mistakes, but sadly that didn't make the cut... maybe buffing spinblade HP a bit would help? Giving it any more attack made it feel too powerful and worth it even as a single-target attacker, which I didn't want-- it's still situationally useful.

About the circle fighter, the problem is that it’s only situational, you can’t use it as part of a blocage wall, and it would actually be more useful with a regular attack instead of a circle one. The best buff I see for him would be to give him a standard melee attack and have the circle one be handled like the bomb one so you get the chance to see the mistake you’re about to make and cancel. For even more versatility the circle could be an arc nd hit 7 squares instead of 8


Ah, good idea, I didn't think of that-- I'm short on tokens but can partly reuse bomb code with a range of zero and allow standard melee vs. spinning attack to be a choice. I made a quick prototype just now and it seems to work, but I'm not going to change the game until I have time to test more and check I didn't break anything else...


Love it! Thank u! I do wish there was an auto-save though


This is sick!! I remember playing the original a lot and wished that there were more TRPG pico8 games. Even in this version, grenadier is still op lol


1

@dtilt_uppercut Ha, I agree the grenadier is fairly OP-- but it's just so fun when you line it up that I didn't change it. With all the new units it's less common, so at least it's unlikely you'll get two of them (which is ridiculous)...


@icegoat Oh definitely! Being able to hit 4 enemies at once is super satisfying (and that 6 damage sweetspot, mm!). It synergizes with a lot of units too!


1

Ok, I've found space to make a few updates based on player feedback. This may become the final update except for bugfixes, we'll see...

  • New "spinblade" unit UI makes it more clear where it will attack, gives you an option to cancel, and has the option to do a basic melee attack if spinning would hurt too many allies.
  • I made the final boss immune to stuns (as that's a bit too easy if you get the right unit).
  • Since some people seem to be very good at this kind of game and cruised through, I've added a new "hard" mode, unlocked on the main menu once you beat the normal campaign once. This adds some enemy units, and also makes the enemy AI tougher: they'll now often seek out and gang up on your weakest in-range units rather than choosing targets randomly each turn.
  • Small bugfixes

@icegoat, Thank you for the update, spinblade is now my favorite mid-tier unit. Who cares about OP grenadier or boring solid orc when you can make your life needlessly complex and difficult :p

choosing targets randomly !!! Now I get why I never could predict the (usually bad but sometimes very good) enemy moves.
Will try hard mode, ability to lure enemies more consistently should be fun to exploit.

Got to play the tank, it's 2 attack combined with precise enemy knowledge makes it a top tier unit. It was already good before as a blocker but is now usable as a fighter as well. I'm unsure but I suspect his life was also buffed a bit ? Or maybe the more precise data makes me use it to it's very limit before retreating.


@RealShadowCaster You're right, I buffed the tank HP by 25% compared to the original-- I wanted it to be really good at its role (and the new Wizard and Ghoul can take it down if 1:1 and the Bat can fly over it, so I felt like it was a bit weaker than in the original, though agreed that having open unit information for the player makes everything easier). In Hard mode I think it's harder to use, though, as enemies usually will avoid it unless you can find a single-unit-wide bottleneck...


1

Wizard : The king is at 1HP, I can finish him with a ranged iceball.
Grenadier : No, freeze the orc instead.
Orc & Wizard : WHAT !
Grenadier : He's a spy from the Orc Kingdom tasked with the recovery of the crown.
Orc : Not true, Barg just wants to squish tiny humans for fun.
Grenadier : Wiz, you can't trust a bloodthirsty murderer.
Goblin : Why not ?
Grenadier : Shut up Gobo, I don't care about you, you've already played this turn.
Wizard casts magic ice
Orc : Barg cold.
King : Even after all these years, I still delight in seeing the gullibility of the populace.
Wizard : I'm not gullible, I'll have you know that Mister Boom promised under magical oath that every survivor would equally share the royal treasure to the best of his ability.
King : And I'm sure he'll honor the promise, ever heard of Loyal Evil ? The last five kings had that profile.
Grenadier steps back and aims at the group
shocked wizard : You can't do that ! I'll freeze you.
Grenadier : you've already played this turn.
Wizard : But you've been talking for ages, surly my magic is ready again.
Grenadier : Nope, talking is free action. King, any last word ?
King : Yup, you're playing with forces you don't understand. You rely on logic when the world had every possible corner cut to fit the token limit. Things won't go as planned.
Grenadier : I'm calling your bluff.
Grenadier Throws bomb
Wizard : Not fair.
Wizard dies
Orc : Barg hot.
Orc dies
King turns orange and goes to -5HP
Enemy's turn
Grenadier : Excuse me ?!?!?!
King kills frozen goblin and turns back to his normal colors
Grenadier : Err, never mind, I'll...
King : I'm not done yet
Grenadier : But you've already played and have negative HP...
King kills other goblin
Grenadier : OK, that's just BS, are you gonna keep playing until tho whole team is dead ?
King : No, that would make too much sense, I'll just remember that I'm dead and let you deal with the teammates you tried to kill. Remember to fairly share the treasure with them...
King dies

CONGRATULATIONS YOU WIN

@icegoat What just happened !!


@RealShadowCaster this has to be the most creative bug report I've ever seen lol.
If I had to guess why this happened, there's a bug tying to grenadier where if they blow up a wizard or goblin, their skills activate on themselves and others surrounding them in the blast. It's more impactful on wizard since it stuns not just themselves, but others as well (where for goblins, they just turn red and die).
I guess that's what happened here, the goblins transferred their skills towards the king, he got to move twice before he died. As for why he was able to live with negative hp... idk lol. Maybe bloodlust has priority over death?


1

@RealShadowCaster This might be my favorite bug (and certainly my favorite narration-- the heroes of your story will be talking about this around the campfire for years). I'm bemused and glad that at least your band of heroes won.

I think it's the combination of a secret ability, a bug I knew about and hadn't figured out how to fix, and a second unknown-to-me bug!

1) The king's mysterious ability "Mighty" means three things: the king stuns on attack, the king has bloodlust and goes again on kill like a goblin, and the king is immune to stun.

2) The checks for whether an attack stuns or triggers bloodlust check whether the "attacker" has those abilities, where "attacker" is the character in the attacking square. As @dtilt_uppercut guessed, this definition of attacker is wrong when there's a bomb, because the "attacking hex" is the center of the bomb pattern (to reuse code to get all the damage animations-away-from-bomb-blast to work). So if the target at the center of the bomb pattern has stun or bloodlust those will be added to all the bomb attacks. I found this late and wasn't able to figure out a token-efficient way to fix it so I left it in, as the rare case I'd seen was a bombed wizard stunning everything around it, which is a bug but also a bit funny (exploding stunwizard goo?).

I'll bump up the priority of fixing this, I probably just need to trim some tokens elsewhere to make room for a separate variable that holds "current attacker" rather than inferring from attack hex.

3) I don't know why the king didn't immediately die at negative hitpoints (but then did a few actions later) which would have mostly made this moot-- I checked and death is tested in the main loop, but clearly there's a bug there with some bloodlust interaction, I'll have to look deeper.

What a combination of circumstances!

My story rationalization is this one king was from a long line of berserkers, raging and swinging his hammer for a last few steps before he collapsed...


I've experienced the stun bomb bug also. I thought it was intentional until I read the above comments. Though I was prepared to deal with the enemies if the bug didn't occur.

Anyways, I've completed this game for first time but I couldn't skip the ending dialogue. Let's see if restarting still allow me to see hard mode.


Thought I was dead, but my last seemingly doomed archer decided he was immortal instead.
Each turn, he gets stunned for just one frame, and turn back to normal, only for the wizard to cast again and the loop restarts.
The Player Turn sign seems to be stuck on the right of the screen. The orc seem to be happy with the situation and doesn't move.


In this screenshot, the blue highlight is correct, but the red arrow can't seem to find the way to the targeted tile. The bug might not come from the arrow computation : it might just work on the sensible assumption that non fliers can't be on walls... and the selected goblin was spawned on one.
BTW, I couldn't resist a turn one 6 hit bomb. Finding a way to save the bombardier after that was pretty fun, but I managed a no death in the end.


Whew, you're good at finding these bugs! I'm going to carve out some time this week to look into all of these. I bet there's something about about "the only living player is stunned" and how "end of player turn?" is calculated, that's probably not a situation I hit in playtesting. And I also remember I changed the statue heads to obstacles late in level design to give more tactical hiding options in that level, and I didn't realize one of the random spawn points was on top of one-- that at least should be an easy fix.


2

this game is awesome! i love tactical battle games even though i don't have very many this one was amazing to see it, i love everything about it too. the new characters, stats and names are shown, the new levels, the new skills, and everything else! truly an amazing improvement upon the oiginal which i already thought couldn't be better!



[Please log in to post a comment]