Combat and Welcome!
Welcome to the first dev blog post for The Day We Fall! This is the first blog post I’ve written, so thank you for checking this out right at the beginning.
So what is this game?
Most of this blog post will be about combat to go along with the combat trailer. But since this is the first time anyone’s hearing about this game, I’ve got a quick summary of what you’re looking at.
The Day We Fall is a 2D RPG featuring rapid turn-based combat that explores the first day after the apocalypse. The game takes place in a small town in the Appalachian Mountains. The player plays as an elderly community man (roughly age 70) who is trying to save his own tiny corner of the world. It is being built mostly from the ground up in Unity 5 (minus a few effects packages and editor extensions).
Okay, combat time.
My overall goal for the combat in this game is to get away from the grindfest of most turn-based RPGs. I’ve never liked boss fights with long middles of whittling the enemy’s health down until you finally get near the end where something interesting happens. Nor did I want the player fighting the same enemy over and over again throughout their travels. I feel like the first time you fight a new enemy is the most fun time, and then the enjoyment diminishes each time after that. I wanted to make the most fun parts of turn-based combat the entirety of this game’s combat. Namely, picking your engagement, fighting a new enemy, fast and tense combat, succeeding (or failing) to kill them, and quickly retrying or moving on.
So, The Day We Fall’s combat is intended to be rapid, constantly novel, and as realistic as turn-based combat can be. Most battles will last only a few turns. Low enemy and player health help make every move consequential. The current story outline involves no repeating enemies. Each new engagement features a new enemy and a new situation.
The crux of the combat system is your Reaction Time (RT). Similar to old Fallout games, Reaction Time represents how much time you have to perform actions before your enemy takes his next turn. When your RT reaches 0, your enemy’s turn begins. RT varies enemy to enemy, as well as player to player depending on the player’s stats.
During your turn, you can spend your RT to perform a variety of actions. Those actions are:
Guns are powerful, long-range weapons whose accuracy is determined by your character’s stats. Using them requires ammo, which is going to be relatively rare. Managing to make a full clip will likely be an accomplishment in itself.
All guns come with two additional actions, accessible by right-clicking the weapon: Aimed Shot and Reload. Reload, of course, reloads. Aimed Shot gives you the option to take more time (RT) to shoot, but with a significant boost to accuracy. In addition, occasionally there will be a third, gun-specific extra action (such as unloading both barrels of a double barrel shotgun in one shot).
Melee weapons are guaranteed damage-dealers. They never break, don’t use ammo, and have a 100% chance to hit when you’re in range. However, in order for you to get close enough to use them, usually that means the enemy will be close enough to hit back.
Speaking of getting close…
Players can choose to move both through the overworld and inside of combat. Moving through the overworld allows you to choose how close you want to start the engagement. Be careful, though. If you get close enough for hostile enemies to detect you, they can react and potentially go first.
However it starts, once you’re in combat, you can still move closer or farther away from the enemy with the Step Forward and Step Backward buttons, but each step will cost you a small part of your turn.
Whether you want to play up-close or far away is up to you. Your decision will probably often depend on what your enemy is capable of. One of the benefits of having no repeating enemies is that it allows us to “hard-art” the enemies. Oftentimes you can see what weapons the enemy has on their overworld sprites, which can help you plan accordingly on how to engage.
Pharmaceuticals are one-time use items that provide temporary but significant buffs. Two are shown in the combat demo video: Dopaquil, which soothes your nerves and increases your gun accuracy, and Butaroid, which sends you into a melee-boosting roid rage.
I personally rarely use consumables in RPGs. Normally I just horde them and tell myself I’ll use them at the final boss, then forget. But here, where combat is decided in a couple of turns, I’ve tried to give the player every incentive to actually use them. Every Pharmaceutical is free to use, meaning they don’t take up any of your RT. In addition, they’re reasonably common, cheap (so you don’t have much reason to horde them and sell them), and will fill up your limited inventory space pretty quickly, so it’s either use them or lose them. In addition, there’s no addiction system. They’re just risk-free buffs that can get you out of a tight spot.
The player has two inventories. The larger is their Backpack with 28 spaces, and the smaller is their On-Person inventory with 6 spaces.
At any time before a battle, you can open up your Backpack and place items directly onto your person via the On-Person inventory. Your On-Person items are represented by the 6 slots at the bottom right of the combat UI shown in the demo video. Any items placed here will be available for immediate use at any point during combat.
During battle, if you find yourself needing an item from your Backpack, you can click the Inventory button to open up your Backpack and place any items on your person that you need. However, opening up your Backpack within a battle takes time. The amount of time depends on your stats, and can vary from hardly any at all to most of your turn. If you’re a slower character, it might help to preplan your battles.
Healing functions like most other games. Smaller healing items like Gauze heal small amounts but quickly (small RT cost), whereas larger healing items like the First Aid Kits heal larger amounts but slowly. The most noteworthy difference is that here the player’s stats provide huge modifiers to items’ healing effectiveness and time to use. This is to help balance medical stats to make them worthwhile.
Healing items will also occasionally have overworld uses, such as healing someone who is wounded.
If you get in over your head, you have the option to Escape. In order to escape, you’ll have to put a minimum distance between you and your enemy before Escaping is enabled. This minimum distance varies between each enemy and can be seen simply by hovering over the Escape button. Usually, the distance is relatively short for enemies with only melee weapons, and much farther for enemies with guns. So be aware of that before you engage.
If you do Escape, you’ll be booted back into the overworld and your sprite moved back outside of the enemy’s detection range.
Thrash is just a get out of jail free card for me. I felt like I needed to give the player something they could theoretically use for combat in a situation where they didn’t have any actual guns or melee weapons. All it does is a 50/50 chance to do a bit of damage to the enemy. Even the weakest melee weapon will deal more than it, and I needed to give it a 50/50 chance rather than 100% so it wasn’t a guaranteed killer when the enemy was at, say, 1 HP (since shooting them twice and then killing them by flailing wildly seems silly).
At any point during your turn, you can Hunker to end your turn. When you do, your turn is ended, but you gain a defensive bonus that will make it harder for the enemy to shoot you on their turn, as well as reduce the damage you take from melee weapons. If you do exactly your RT worth of actions and don’t have time to Hunker, then your turn simply ends and you don’t get any defensive bonus.
In the demo video, it says you get a flat 25% bonus protection against being shot and reduction to melee damage if you Hunker, but I’ve already slated that for change. Instead of giving you the same bonus regardless of whether you had 1 RT left or 10 when you Hunkered, I’m going to make it so the more time you had left to Hunker, the greater your defensive bonus. Probably 5% of protection per RT. That will create a trade-off between making offensive actions and taking defensive measures that I think would make things more interesting.
So those are the basic mechanics of combat. Combat is going to be rapid, dangerous, and constantly novel. I’ve also got a feature planned to let you instantly restart any battle so that getting stuck on a tough enemy doesn’t make you constantly wait for load screens.
Current state of the game
Biggest achievement: combat is functional.
Player-side actions are mostly up and running (meaning melee weapons, firing guns, Aimed Shot-ing guns, using healing items, using pharmaceuticals, stepping forward and back, Thrashing, and Hunkering). I’ve also got all the prerequisites I need done to finish the remaining actions (Reload and Escape).
I think I’ve fully debugged the enemy’s AI, and until it inevitably proves me wrong, combat proceeds as intended without my constant intervention. Well, as long as the enemy doesn’t try reloading.
Player and Enemy stat lists are up and integrated into all existing actions.
The player inventory screen and enemy loot screen are implemented, and populating them/swapping items between them works. I didn’t get to show those in this demo though because I didn’t give the UI artist the final instructions in time, and I just wanted to go ahead and get something out.
Automatic overworld distance calculation. Clicking an enemy to begin combat automatically calculates the Distance between the player and the enemy and sets that right before combat begins. I’ve also got independent X axis and Y axis modifiers for each room that I can use to scale the distance calculation for each room separately (should be useful if I have a background where things are zoomed out more, or if I have a perspective that shows enemies far off in the distance).
Overworld timed events (represented by the timed bar above the demo gun enemy’s head at the beginning of the demo video) and event triggering when the bar hits the end are working. I’ve also set the bar and code together as a prefab, so adding timed events to new rooms should be a snap. The art for the bar was made by me though, which explains why it clashes so badly with the rest of the background. I’ll get someone who knows what they’re doing to make it look decent in the future.
As a tiny thing, I’m fond of that little lantern on the combat UI. The flame tilts closer as you step forward and farther as you step away, blows to the left when you use a melee weapon or fire a gun, and blows away from the direction of the bullet whizzing sound effect when an enemy’s bullet misses. It also affects the lighting on the combat UI when it moves. I still need to make it sputter when it tilts to make it react more like actual fire.
Transitioning between the overworld to combat and back again works, including events triggering upon combat end.
Once I have the art, the pipeline to create a new enemy or weapon is only a few hours.
Goals coming up
Transitioning from room to room. This is the last big implementation I need to make to have the basic framework of a game. I’m looking forward to having that done a lot.
Finishing Escape and Reload.
Implement a number of smaller functions (unloading guns, item dropping, a money system, healing NPCs in the overworld, instantly restarting battles, etc…).
Finish implementing all UI effects. Right now only about half of combat actions have functional UI effects (even if they’re not pretty yet), mostly on the player-side. Also, I need to animate them. Right now, for example, the red Butaroid effects on the edges of the screen just appear in one frame. I need to get them animating or fading or pulsing or something more interesting to make them look better.
Figuring out how I’m going to do overworld animations. This is the biggest challenge for me right now. Boy, that stuff’s exactly as expensive as I was afraid it’d be. My character artist was kind enough to make me some still frames to use for this demo, but I’d like to do true animations for the actual game. I’ve considered using stutter-frame animation, but I’m not sure if that would look ridiculous or not. There’s also an animation program called Spine that I know a lot of people use, and someone told me it’s easier to learn than I’d think. So I’m going to at least try a demo version of it. If it works how I hope it does, maybe I’ll be able to get the art from others and then make the animations myself. If not, I’ll need to figure something else out.
Okay, that about wraps up the first blog post. I’ll be posting more of these pretty sporadically. I’m expecting to do one big one like this roughly every couple of months, with maybe the occasional smaller update between big ones. I’ve got a list of possible topics, so I’ll probably at some point talk more about the setting, the intro and how player stats are set, enemy AI, what you can do in the overworld, and what I’m trying to do with the story.
If you’d like to keep up to date when a new post comes out, you can sign up for the game’s mailing list over here.
Speaking of release, the current goal is somewhere around the middle of 2018. I’ve got a few more immediate implementations that I want to get done, which will probably take about a month. Then I’m going to lock myself in a room for a couple of months and finish up the story. Once I get out, I hope to have a big list of every background, enemy, weapon, etc… that the game will have that I can send out to all of the artists. Hopefully I can get all the art back and pretty much build the game in the next 4-5 months. That would leave a few months for final additions, improvements (like getting a real sound guy to make actual sound effects for the game), debugging, and getting ready for launch.
That’s a moving target, and I’ll definitely update everyone if it looks like that will change. I’m waiting for the dust to settle around the Steam Greenlight reworks before talking about where you can get it, but Steam and GOG are the two obvious targets.
Okay, now we’re done for real. Thanks again for reading. See you in the next post!