Fred's game tech articles

Reverse engineering, retro game archeology and speedrun research

Home

Shining Force CD: stat gains

2024-03-17

Shining Force 1 handled stat gains by using the character's level to interpolate between points in a stat curve and adding some randomness. This way, you'd never get too far ahead or behind the intended stat curve, while still making level ups feel different every time due to the randomness.

Stat gains in Shining Force CD work in a simpler manner: depending on which level a character reaches, there's a random chance to gain some stats. Relying on chance to hand out points might sound bad, but the end result is not so different from SF1, as we'll see.

SF:CD is based on the SF Gaiden games that came out for the Game Gear which, with it's simpler Z80 processor (compared to the M68000 in the Mega Drive), can't do hardware multiplication and division for example. The lower spec hardware could possibly explain why the stat gain system was simplified.

Details

A simpler system doesn't have to mean it's going to be primitive, though. Let's dig into the details!

Each stat gets assigned an overall growth curve out of seven available.
Growth curves consist of four rates (chance and stat amounts, details below), each rate covering a level span: 2-5, 6-10, 11-15 and 16-20. This means that a character's stats will experience different growth rates over the course of the game.

Let's visualize the average stat gains of these growth curves. The X axis represents the level reached and the Y axis the accumulated average stat gain.

Low, Low+
The least valuable curves. Both have a good chance of giving +1 until level 10, after which the chance drops significantly.

Average, Average+
These stay fairly consistent throughout the game. Handing out solid +1-2s at levels 2-10 then tapering off slightly but still going strong at 11-20. Average+ does especially well, ending up having the highest potential of all the available curves.

Early
Starting off strong with many +3s, then sinking to +2 and later +1. Levels 16-20 have a very low chance for any stat gains.

Late
+1-2 gains at levels 6-10 and +2 (and a rare +3) at 11-20. Has similar potential as the early game curve but being backloaded instead.

Mid
The midgame curve might give +1 early followed by +1-2 (especially +2) and ending at a very low chance for the final levels. Only outpaces the low and low+ curves.

Rate and curve details

These are the actual stat gains and the chances to get them for the seven rates, here labelled A (best) to G (worst). As you can see, even rate E has a good chance of giving a stat point!

  | 0     | 1     | 2     | 3     |
  |-------|-------|-------|-------|
A |       |       |  5/32 | 27/32 |
B |       |       | 15/16 |  1/16 |
C |       |  7/12 |  5/12 |       |
D |  5/58 | 42/48 |  1/48 |       |
E |  1/ 6 |  5/ 6 |       |       |
F |  7/12 |  5/12 |       |       |
G | 17/20 |  3/20 |       |       |

The curves are constructed using four rates, like so:

Low      | E E F F
Low+     | D D F F
Average  | C C D D
Average+ | B B C C
Early    | A B D G
Late     | F C B B
Mid      | F B C G

Level 20 and beyond

After promotion, it's possible to keep leveling up past level 20. The growth mechanics here are different, though!

The maximum level is 99. Additionally, each stat has a maximum amount it can reach. For example, Nick's max HP is 90.
The following calculation is done (with a small amount of randomness applied): (max stat - current stat) / (max level - current level).

In other words, the stat points that are needed to reach the maximum amount are divided by the remaining levels.
The resulting value could be interpreted as a stat gain rate per level, something like "the amount of stat points needed at this level to reach max stats by level 99".

This means that any given stat will always reach its max value... eventually!

Ending

Even though SF:CD's "random stat gains" sounds less reliable than SF1's "follow the stat curve" on the surface, it ends up doing a very similar job! The random stat gains aren't totally random after all, but rather weighted towards certain values, and the weights change every five levels.

A list of the stat curves for each character can be found here!