Fantasy Conquest Tactics

Welcome to the devblog of Fantasy Conquest Tactics, a Fantasy Advance Wars game in development for PC/Tablet/Console!

Premise

You are the Lord of the Kingdom which has lived in peace and prosperity for generations, but is now under attack by an unknown force from beyond your castle walls, and from within!  Discover and defeat your foe by learning new knowledge, building your arsenal, and defending your lands by recruiting from among your loyal subjects and commanding them in strategic deployments and tactical turn based battles.

Core Design Pillars

  • Feeling of fear, tension, and desperation.
  • Deep but accessible combat.
  • Exploration and sense of constant discovery/reward.
  • Streamlined, intuitive visuals, controls, indicators, and interface.
  • Highly replayable.
  • Visually distinctive, production efficient art style set on traditional fantasy setting.

Read More

Dev Log 010 – Outlines, Shadows, Cursor Icons, Rotation Confirmation, Arrows, ShowAllRange

New this week, shadows have finally been added to the game, and also outlines!

I’d tried to add shadows before to help anchor the characters to the world a bit better, but because I’m using separate cameras for the different layers to get Units standing on terrain features, the shadows from the characters layer wouldn’t show up on the terrain layer.

Fantasy-Conquest-Tactics-Start-Screen-Background

 

I could have always used static blob shadows directly under the characters, but before I resorted to doing that I decided to check the Asset Store for anything that could help.  Much to my delight, I found a free shadow projection asset that can cast shadows across the whole level with just a single projector and texture!  The max resolution of the shadow is 512×512, but since the camera isn’t that close to the ground, it looks just fine.

Fantasy-Conquest-Tactics-Shadow-Projector

 

About the outlines, the temporary characters models that I’ve been using have them as a shell mesh.  When I created the Catapult and Ballista without them, the details and different pieces didn’t read as well, and those Units didn’t stand out against the background as well as all the characters.  The models are such low poly that adding a few more isn’t really going to hurt that much, especially on PC or console.  Some of the outline colors are all currently consistent, but I think when I do final models, I’ll color them differently per piece.  For example in this image, the flag will get a dark red outline as opposed to the same gray outline as the rest of the structure.

Fantasy-Conquest-Tactics-Shadows-And-Outlines

 

As I’ve been doing a bit more playtesting, I found that in the mire of combat when you’ve got a whole gob of units smacked together, you tend to lose track of what or where you are selecting.  To remedy this, I’ve created a bunch of cursor models that hover above the cursor when selecting certain things or performing certain actions.

 

Here’s the model for selecting Units.  This finger might look familiar.

Fantasy-Conquest-Tactics-Select-Icon

 

For movement, a boot.  The animation is kinda wonky, so I’ll probably turn it into 2 boots walking in step.

Fantasy-Conquest-Tactics-Move-Icon

 

For setting Unit rotation, a little spinning arrow.  I also changed the set rotation facing to be a click select, click confirm selection.  I’ve also filtered out buildings as a possible rotation direction, since there’s no reason you’d ever want to face a building and expose your back.

Fantasy-Conquest-Tactics-Rotate-Confirmation

 

And the model for attacking.  Anyone who’s played Final Fantasy Tactics may recognize the inspiration.  This gif also shows that Arrow projectiles are now finished, and also implementation for team projectiles is in.
Fantasy-Conquest-Tactics-Archer-Arrows-Attack-Icon

 

Lastly, I added the option to show all tiles in range of all enemy Units.  Fire Emblem had this, and it really stream-lines the user experience when you don’t have to go and check ranges on each unit individually and try and remember which tiles were in range.  Its currently quite slow because it checks every tile in movement range of every unit, and then every tile within attack range of that movement tile, so I might run the calculations in the background during the team change animation and income gathering, or make an attempt to optimize the calculations a bit somehow.

Fantasy-Conquest-Tactics-Show-All-Range

 

Read More

Dev Post 009 – Ballista, Team Change, Income, Coins, Camera Focus

Another productive week here for the game, and despite a lot of code refactoring, there was still a lot accomplished.  I realized that I had 2 separate ranges for characters for attacking and for abilities, but one of the tenants of the design is that each Unit needs to have only 1 singular purpose or action in the game, so that means one of them, and all the associated methods and lists were all extraneous.  I removed that, and also condensed all the combat calculations into 1 script and merged some of the Unit Attacking and Unit ability actions, along with the Building capturing, and condensed all the separate overlay code into 1 file.  I also broke off Unit movement into its own script as the file was getting quite long.

Now, onto new visuals and animated gifs!  The Ballista Unit is now completed!  The Ballista is a direct fire Unit.  That doesn’t mean anything right now, but eventually there will be proper Line-Of-Sight and things like other Units, along with terrain features like forests, mountains, and buildings, will block projectiles, so the Ballista will be unable to fire over them.  It also has a shorter range than the Catapult, and doesn’t do quite as much damage.  Its advantage over the Catapult is that it can attack flying Units.

ConquestOfTheRealm-Ballista

 

 

The firing and projectile code needs some extra support for Team colored versions.

ConquestOfTheRealm-Ballista-Action

 

 

Camera focusing is now implemented, which was pretty simple to add.  I’ll make this an option on selecting units later on.

ConquestOfTheRealm-Camera-Focus

 

 

When buildings generate money, there’s now an effect that plays.

ConquestOfTheRealm-GoldSplash

 

 

You can see this effect applied, along with a new Team Change bar was added that shows up between turns, and also showing the Camera focusing.  It should now be plenty clear who’s turn it is with the completely color coded UI and bar.  The health hearts also pulse when being healed, and I’ll probably also add some floating heart particles too.  Also note the pause menu is in.

ConquestOfTheRealm-TeamChange-GoldSplash

 

Lastly, I got Villagers able to heal Catapults and Ballistas now.  The new overlay supports coloring and can be resized as well, for later status effect messages.

ConquestOfTheRealm-Villager-Healing-Catapult

Read More

Damage Effects and Recruiting Units

ConquestOfTheRealm-There-Will-Be-Blood

Hit effects and the resulting blood splatter are now in.  The size of the impact effect, and the amount of blood drops that spurt are directly related to the amount of damage done, same as the camera shake.  This is something that’s so easy to implement, and I wish that more games would do this kind of thing.

 

ConquestOfTheRealm-Buy-Menu-Working

Unit Recruitment is now possible from Keeps and Villages, with only Villagers being able to be recruited from Villages, currently.  The list and Unit information is mostly dynamically populated, meaning it will be very easy to add other units in the future.  The menu scales to fit the screen space, so on a decent sized screen you shouldn’t have to scroll much to choose Units.  As you can see you’re able to place units in one of the 4 adjacent spaces to the building.  By default Units you recruit will be unable to activate this turn, but that’s something that still needs to be set.

Read More

UI Updates, Projectiles

The past few days have seen quite a few UI updates.  The SelectUnit / End Turn button in the bottom left now properly updates on non-activated Units, selects through the list of un-activated units, and ends the turn if all Units have been activated.

ConquestOfTheRealm-Unit-Selection-End-Turn

 

I finally got the color changing HUD backgrounds working depending on which team’s turn it is.  You can also see the healing hearts pulse when units are healed by Villages or take damage.  I will later stagger the healing via villages so they happen in succession, along with camera focusing on each Unit.

ConquestOfTheRealm-HUD-Team-Change-Building-Healing

 

The Tile and Unit info panel is now working, and is color coded depending on which team’s units you select, or buildings.  The icons representing Movement, Attack, Defense, Vision, and Range are still temporary, and look pretty shitty.

ConquestOfTheRealm-HUD-Unit-Tile-Info

 

Another feature that’s implemented is projectiles, currently only for the Catapult.  I was searching and searching for good trajectory code reference, but none of them took into account inertia, or properly handled rotation for an arrow’s rotation as it arched through the air.  At first I started to implement my own, but then realized that would take hours and hours.  Fuck that, KISS! (Keep it simple stupid)

ConquestOfTheRealm-Catapult-Projectile

 

The projectile class now just translates the projectile straight at the target Unit.
ConquestOfTheRealm-Catapult-No-Animation

 

And an animation handles all the upward movement, rotation, and potential scaling as it ascends and then descends.  Way easier, faster, and with much more control.

ConquestOfTheRealm-Catapult-Projectile-Animation

Read More

First finished Unit model – Catapult

ConquestOfTheRealm-Catapult-Attack

So far, all the Units shown have been temporary stand-ins to test gameplay, and help get a feel for the final model scale and such.  Well, the first actual Unit is now complete, the Catapult!  The Catapult will act as you would expect, very slow moving, long range, extremely high damage, but no CounterAttack and a minimum attack range.  They are unable to attack Flying Units. They will get a bonus movement if moving on Roadways, which is still to be implemented.  Since they are a machine, they won’t be healed by adjacent Villages or Clerics, but can be repaired by Villagers.

 

 

ConqestOfTheRealm-Catapult-Model-Details

The goal is to keep all the Unit models under 500 tris, and under 10 bones whenever possible.  The reasons for this are because the game is probably going to be played at a scale where any more detail is pointless anyways, there’s also potentially going to be a good number of units on screen at once,  and also to save from having to do an optimization re-do of all the units for an eventual mobile release.   The texture style is going to be flat shaded like the environment, which saves time in creation, saves from extra rendering passes with fancy materials, and can downsize extremely well without banding artifacts or becoming muddy.  It also allows means the game will take up less space, which some people care about.

 

 

ConquestOfTheRealm-Catapult-Attack-Animation

A little bit of bone scaling to emphasize the attack.

 



ConquestOfTheRealm-Bonus-Range-On-Hills-Mountains

Another somewhat related development is that Hills and Mountains now give a +1 and +2 square range bonus for ranged attackers.  Because Catapults will be unable to move on Mountains, the most they can ever get is the +1 from Hills, so that should keep them getting too powerful.  This is also the reason that Buildings go neutral first before being required to be in melee to be captured, otherwise it would be too easy to roll up with Catapults and capture everything from afar.  I’ve also changed Capturing to be based off the capturing Unit’s hitpoints, so that a super buffed Unit isn’t able to capture a building all in 1 turn either.

ConquestOfTheRealm-Capture-Damage-From-Hitpoints

Read More

Pathfinding, Terrain Movement, Building Changes

Big update this time!  After getting the basic combat working, I added in the ability to click target an enemy, and have auto move to a tile within attack range.

GuardiansOfTheRealm-Move-And-Attack

 

You can also select move, select attack from a specific tile.

GuardiansOfTheRealm-Move-And-Attack-Select-Tile

 

The next thing that’s new is that I changed how buildings operate in the game.  Previously I had units rendering on another camera that rendered on top of the buildings and everything else.  This worked great for units standing on buildings, but when a unit was standing behind a building, it would get rendered in front of it and that looked really weird, especially when the camera lined up right.

GuardiansOfTheRealm-Rendering-Order

 

After researching online, I found there’s no way to really custom sort 3d geometry in Unity, so what I decided to do is also put the buildings on the same camera layer as the units, and changed the game design such that units no longer move on top of them to capture, but instead “attack” them from the sides like Lost Frontier.  What I didn’t like about the way that Lost Frontier handed capturing buildings though was that if an enemy started to capture your own building, there was nothing you could do to undo the capture damage they’d done.  You would have to wait until they captured it, and then recapture it yourself so it was back at full health, or hope you could kill all the enemies.  Also, once a building on a team is damaged to 0, it first becomes neutral again before being able to then be captured for the other team, so this will limit the amount of flip-flop occurring with buildings.  Also, Villager units will be able to repair buildings of their team, undoing the damage done by the other team.  Any unit that can attack will be able to damage enemy buildings, but only melee type units will be able to capture a neutral building.

GuardiansOfTheRealm-Building-Attack-Ranged

What else I like about this system over the previous standard Advance Wars system of capturing is that effort towards capturing a building is not completely lost when the unit on top dies.  Also, since the buildings all have a health value, that can be used to affect other things in game, like making the amount of hitpoints healed to adjacent units be based on the building health value.  Also, I want to try making buildings with a lower health value only produce units of strength equal to the building health, which will make Villagers and keeping buildings repaired very important!

GuardiansOfTheRealm-Move-To-Attack-Building-Heal

 

The last big thing in this update is that I got terrain movement modifiers working with pathfinding!!  Woo!!!  I wasn’t sure I’d be able to handle this myself, and it did take quite a few hours to figure it out, but its in and working.  I also updated all the attack range displays to use the terrain modifiers as well so they indicate properly.

GuardiansOfTheRealm-Pathfinding

Read More

Waves and Death

GuardiansOfTheRealm-Waves

The water in the level was looking quite dead compared to everything else that’s moving and bouncing, so I decided some shoreline waves would break that up nicely.  I spent many, many hours trying different approaches, from particle effects to animated UVs, to scaling textured geometry.  The geometry route was the one that I ended up choosing, and went with just the corner pieces because doing the entire shoreline looked too straight edged, and also too busy.  The middle part still looks a bit lifeless, but most levels probably won’t have this much open water in them anyways.   I might add some clouds in later that could be used to break these areas up, or a whirlpool or some other animated object.

GuardiansOfTheRealm-Waves-Closeup

 

GuardiansOfTheRealm-Straight-To-Heaven

Death functionality is now finished off.  I wanted dead Units to sink into the ground after dying, but the way Units are rendered on top of everything else means that they just look like they are sliding down the screen.  Making them disappear in a puff of smoke is probably better because it can be used to hide the spawning of Undead Units when they are killed by Necromancers.  The puff also works to hide the spawning of an angel to take the dead Unit up to heaven.  Dunno if this will make it into the final, but I thought it was kinda funny.

Read More

GuardiansOfTheRealm-Combat-WIP

Mortal Kombat!

GuardiansOfTheRealm-Combat-WIP

Very pleased to announce that basic combat is now working.  Terrain modifiers are not calculated, and neither are multiple attacker bonuses, but flanking bonuses are applied.  There’s still no hit FX functionality yet either, but that can come much later.  Aside from the flanking and multiple attackers bonuses, the damage formula is very similar to Advance Wars, but with one distinction that a Unit’s defense isn’t altered by its Hitpoints.  I felt that this would keep injured units from becoming completely tinfoil once they take a few hits, and because I want Units to last a little longer in general compared to Advance Wars, since you’ll probably have less of them.

The other big distinction is that there’s no randomness in the calculation.  Why?  I’m hoping that the straightforward and simple feedback makes the game more approachable, and that the removal of the uncertainty of killing a unit decreases the deliberation on whether or not to take the action, hopefully improving the overall flow.

 

GuardiansOfTheRealm-RotateFix

I also made a bunch of other minor fixes and tweaks.  One of them is that map rotation now rotates around the selector.

Read More