A while ago I briefly dipped into ranged combat and over time the concept kind of matured after long hours of discussions and debates. Right now our combat system is more unified, so I’ll take some time to talk about how ranged combat works in Splintered Core.
In the past, melee and ranged pretty much operated differently, making it difficult to memorize the details of each without going back to long winded design documents. So we decided to turn it into something more intuitive and easy to understand.
Firstly, we have ditched turn-based combat for tic-based combat. In tic-based combat, a round is defined in a number of tics. Let’s say for now 1 tic = 100 milliseconds. This means that there are 10 tics in a second, and assuming a round is 10 seconds long, you’d have 100 tics per round.
Each action costs a number of tics. Readying a weapon for instance takes 70 tics, which is equivalent to 0.7 seconds. Moving from one tile to another in run mode takes 50 tics per tile, translating to 0.5 seconds to traverse a tile, etc.
Tics are represented as a segmented bar on the top of the window, looking a little like this:
Splintered Core UI prototype
Notice the white dots along the bar. Those are committed actions for the currently selected character. The first dot might be a command to pull out his rifle; the second dot is where he readies the weapon; the third dot is where he runs towards a cover; the fourth dot is where he goes into a kneeling position; the fifth is where he readies a claymore; the sixth is where he plants it on the ground; the seventh is where he sneaks to another cover and the eight is where he readies the rifle again.
Each dot corresponds to an action, and as every action costs a certain amount of tics, the distance between the dots on the timeline varies too. How does the player set this sequence of events up? Well first he clicks on a character to select it; click on a rifle to ready it; press “W” twice to cycle from the walk action to the run action and then to the charge action, then right-click on the map to note the destination; press “SHIFT” and move the mouse down to select the kneeling position; click on a claymore to ready the weapon; right-click on the ground to plant the weapon; right-click on the map to move to a new location; and finally click on the rifle again to ready it.
This is call a commit chain, which is basically the planned tactical movement for that particular character. If a commit chain successfully completes and fulfills a certain criteria (e.g. successfully score hits on the enemy), the character’s rush meter fills up, reducing the tic-cost for his actions. Note that the player can click on the dots and drag them to the right to lengthen the duration of the action, which is similar to the action of having a character wait in between actions. This can be used to coordinate maneuvers between party members.
Once the player completes the commitment, he presses the “GO” button and the game is unpaused. A time marker begins to move from left to right, and all characters in the world performs the actions according to the timeline. Once the marker reaches the end, a new round begins.
The commit chain can be broken if the character is intercepted successfully. This usually happens when a character runs into another’s field-of-fire or attack range, and the other character rolls an intercept check successfully (whether the character is hit or not doesn’t matter – as long as the intercept check is successful, the commit chain is broken). This is called a stumble, which causes the rest of the planned action to be discarded.
When a stumble happens for any player-controlled character, the time marker is stopped, and the player is given the chance for course correction. Note that during this intercept period, only the intercepted character can be chosen and ordered around.
Let’s say the character suffers a stumble when planting the claymore. So happens that when he reached the first destination, and halfway through the act of planting the claymore an enemy steps into view and snapshoots at him, scoring no hits but successfully breaking the chain of action. All further actions are dropped and the game is paused, while control returns to the player, with the intercepted character selected. Now the player can click on the rifle to ready it, and then right-click on the enemy to shoot back.
Note that the player can press the SPACEBAR key anytime when the game is unpaused to pause it, and from there the player can change the commitments of each party character at the cost of breaking the command chain and abandoning previously earned rush points for that round.
As as you can see, the combat model in Splintered Core is pretty much a paused real-time system, with much emphasis placed on streamlining the controls to make it easier to plan tactical maneuvers.
There are 3 kinds of movements that a character can perform, cycled using the “W” key. They are:
On each mode, there’s an engagement option to fire at targets of opportunities along the way. To toggle this, press the “Q” button. If engagement is turned on, the character will open fire along the way if an enemy presents itself as a target of opportunity. This is disabled in the charge mode however.
The difference between the three options is speed, and resistance against stumbles. Walking is the slowest and the most dangerous, as you get virtually zero defenses against intercepts. The advantage however is that in engagement mode you don’t get penalized in accuracy as much as the other maneuver modes.
Run is the middle-ground, where you suffer a moderate amount of accuracy penalty to reach your destination faster and gain a little resistance against intercept, while charge disables engagement mode but gets you to your destination in the shortest time, and has the highest resistance against intercepts.
In ranged combat, stances are extremely important. There are 3 stances available:
The higher the stance the faster one can maneuver as well as the farther one can see, at the cost of a larger target profile. Note that when in prone, the charge maneuver mode is disabled. Pressing and holding down the SHIFT key while moving the mouse up and down changes the stance.
Weapon position refers to how the weapon is used. There are 3 positions available for most ranged weapons:
Having the weapon at hip level allows a fast target acquisition rate, at the cost of lousy accuracy. This is good when you want to fire on the move with the intention of suppressing the enemy. For instance, you have a M240 equipped, and want to pin down an enemy behind a cover so that you can move safely from one location to another. Firing from the shoulder gives a larger accuracy boost, at the cost of slower target acquisition in the sense that your character takes a slightly longer time to shift fire from one target to another. Free position on the other hand, offers the fastest target acquisition at the cost of horrific accuracy. One thing to note about the free position is that you can shoot around corners or cover using this position.
Pressing and holding CTRL while moving the mouse up and down changes the weapon position.
Attack mode determines the kind of attack that you will perform with a weapon, and comes in three flavors for ranged weapons:
- Snap Shot
- Aimed Shot
- Suppressive Fire
Snap shots are less accurate, but has the shortest target acquisition rate. Aimed shot take longer to acquire a target, but has a significant accuracy bonus. Suppressive fire has zero target acquisition rate because you will be firing at a location regardless of the existence of targets or not, but suffers from having the worst accuracy. Pressing “A” cycles through the modes.
In each mode, if the character is carrying an automatic weapon, he can cycle through three fire modes:
- Short Burst
- Long Burst
Single-shots does not incur an accuracy penalty, but provides a low volume of fire too. Long bursts offers a high volume of fire (more bullets flying down the range) at the cost of a high accuracy penalty. Short bursts is the in-between. Pressing “S” cycles through the fire modes.
So in summary, this is how the toolbar might look like:
Toolbar UI layout
I think this would be a great framework to work from. The nice thing about this model is that you can apply the same things for melee combat as well, which I will cover in detail in a future post. In melee you too have maneuver modes, stances, weapon positions (high, medium and low), attack stances (fast, normal and cautious), and attack types (parry, riposte, all-out). This is what I meant by a unified combat model.
Phew, this is a long post. I hope I haven’t been too long winded lately!