Weathering the Plague
How's your quarantine going?
Given recent events, I've been a little less productive than usual (being stuck at home with three kids is no mean feat!), but we still have some DQ2 progress to report. One foot in front of the other and all that.
I am extremely grateful that I still have my contract job at Steam Labs to weather this crisis. I understand that many of you have not been so fortunate, so I'll reiterate our longstanding no-questions-asked refund policy on DQ2 preorders – if you preordered the game and need your bucks back contact email@example.com with whatever details about your order you can find or vaguely remember, and we'll hook you up.
Build version 0.0.9 is up on Steam for our early backers. Windows and Linux only for now. Regarding MacOS Catalina, the good news is we figured out everything we need to meet Apple's new onerous compatibility requirements. The bad news is it requires upstreaming changes into SDL, the base layer of our open source tech stack. The good news is those changes have already been made and released in the latest version of SDL. The bad news is those changes need to be ingested into the latest release of OpenFL before I can use them. The good news is that's probably happened already. The bad news is I haven't had time to check and even so it means I have to update all of my libraries and I've just had too many other things to deal with this past month.
So my apologies to our faithful Mac users, it'll be a bit longer to wait still.
Now let's get to this month's progress. Nothing huge, but still some noteworthy things to talk about.
Nailing the Introductions
The main thing I worked on this month was trying to improve the introduction of each major character. We have two parties of four heroes, each of which is supposed to have a clear and distinct identity. We found that in previous builds it was easy to get through the intro levels for some heroes without really discovering their identity, which sets you up for pain in subsequent levels that assume you know how to use all the characters together.
To this end, we've made a few key changes:
White Hats: Bouncer
Given that Bouncer is a melee unit like Zerk, it might be easy to confuse exactly how they differ and just treat them as slightly different flavors of DPS. We tweaked their stats a bit and added a slight tutorial nudge to point out that Bouncer works best on the front lines, the first to meet a pack of enemies. Bouncer buys you a little time, draws attacks, and lets you get extra hits in. If you fail to learn this lesson than you should find yourself getting consistently overwhelmed in later levels.
White Hats: White Splash
White Splash is a tricky unit to introduce because they have a dual role, and their first two boost level skills are different. White Splash's powers as a healer and buffer seem straightforward enough (though we're still tweaking that), but something that was often getting missed was their utility as an AOE class, which only comes in at boost level 2.
To remedy this we introduced a new enemy type that is incredibly fast, spawns in enormous swarms, and dies in a single hit. This enemy laughs in the face of DPS -- it's all about hits per second. And this is exactly where AOE shines. We don't want to get too lock-and-key with this sort of thing, but it's helping us to give this character a proper role, and it's another neat tool to vary the level design.
Black Hats: Jumper
Since this character has the unique ability to Jump, we made them a little squishier, more of a glass cannon. Fortunately, Jumper has the ability to leap away from danger at will and let their health naturally regenerate. This pairs nicely with Collector's healing units, creating a fun synergy. It also helps contrsat them with Eliminator, who we made a little sturdier. The hope is that this change makes it harder to just let Jumper steal the entire show without having to rely on support from the rest of the Black Hats.
Black Hats: Eliminator
This character had a fairly strong identity already, but we realized we were contradicting ourselves with our design choices. The whole point of this class is to give the player a choice between deploying them early in the maze (to get in long lasting debuffs, poison in particular) and deploying them late in the maze as goaltenders (to take advantage of slay and the double-damage bonus for being near the ship). The trouble was, some levels didn't have any spots you could place near the ship for Eliminator! That was an easy fix – now every level has clear early-vs-late placement choices for Eliminator. But there were still problems in the skill tree. Previously, Eliminator had Slay on their boost-1 attack, but not poison (poison became available at boost level 2). This meant that if you were to deploy Eliminator without immediately boosting to level 2, it only really made sense to deploy as a goaltender. So now the level 1 skill has bonuses for both slay and poison, so that choice comes in right away.
Black Hats: Collector
The projectile nature of this class comes across really well, but the healing units didn't have as clear of a purpose because you didn't always need them. Making classes like Jumper a bit squishier helped give them a use. We also put a small amount of inspire on all of the healing units by default. This way there's always a reason to boost to level 2.
Black Hats: Ultimate
This character is meant to be a much better version of DQ1's dragon class, which was too expensive and too underpowered to be useful until late game play when you had more than enough PSI to spare. The idea is Ultimate should feel like an immediately impressive behemoth that carries an entire lane (or more) all by themselves.
They have both melee and ranged attacks, but the way DQ games are set up is those are separate kinds of attacks, so you need to boost to level 2 to really get the full versatility of this class. However, given how expensive they are, players will likely be tempted to skip the boost, which risks players clearing the Ultimate's introduction level without discovering their true identity.
If you're advertising a unit as a standalone juggernaut you have to go all-in-for, it's a real jerk move to either immediately ask you for money before they live up to their promise, or force you to pair them with other support units.
So we're trying something new out: Ultimate comes in at boost level 2, and the initial summon cost prices that in. Their summon cost is pegged to the amount of starting juice you'll have when you first reach their intro stage, and it should be clear that doing so is the right move. They'll carry the entire start of the battle until you have enough juice to summon your next units.
We could achieve the same thing with forced tutorials (place Ultimate, now boost them), but I suspect summons-at-boost-2 is the way to go instead. It takes some flexibility away from players ("what if I want to just summon them for boost level 1 and use the rest of the juice for some other purpose?") but removing a choice isn't always a bad thing. I like the idea of giving this character this really strong identity. You either go big or go home with this character – there's no half measures to be had.
And here's the regular changelog spew:
- All the stuff mentioned above
- Move haste cannon to a shop
- Fix beastiary display to have consistent chunk size
- Intro level: add dialogue about fronting him
- Intro level: Add attackers to battle to show that Jumper is squishy
- Make Eliminator beefier
- Try putting poison/slay on the first attack
- Intro level: 2nd tier ability is healing, we should tell players
- Make 2nd tier still have inspire by default
- Bring in at boost level 2 & explain this in intro battle
- Intro level: add one square in the lower left for the eliminator
- Intro level: require Ult to be placed first if you want to win
- Intro level: more time before enemies spawn
- White Splash
- 1HP fast enemies to showcase the white splash
- Redesign the kill zone to be in the center
- First boss level
- Make sure we tell players that they can move defenders by recalling them