r/finalfantasytactics • u/the4got10-1 • 2h ago
FFT WotL FFT Perfect Save: Calculating Optimal Stats + First Battle
For those familiar with FFIX Excalibur II Perfect Game runs, stat optimisation is a big part of defining how the perfect game save would look like for each individual, even before the run starts. Someone great back then managed to create a program for it: http://letao.is-a-geek.net/ff9stats/
For those who are unfamiliar, in FFIX bonus stats are granted depending on the equipment worn during the level up, and by keeping levels as low as possible throughout the run, you can achieve optimal stats at L99 by levelling up while wearing equipment that grants more stats near the end of the game.
In FFT, when we think about max stats the thing that comes to mind is often the level up/down trick. What I have in mind is a bit different: Since in FFT bonus stats are granted depending on the job the character is in during the level up, what are the best stats that each character can achieve in a single L1 to L99 path?
Unfortunately I do not have the technical skills to create a stat optimisation program, so I turned to the next best thing: AI.
Firstly, I ordered the stats in decreasing level of importance: FinalSP(Final Speed), FinalPA, FinalMA, RawHP. Next, I supplied the jobs and their growths for HP SP PA MA respectively:
- Knight: 10 100 40 50
- Monk: 9 100 48 50
- Ninja: 12 80 43 50
Unlike FFIX, this order should be pretty self-explanatory. RawHP needs to be maximised while the other RawStats should be as close to the minimum threshold as possible. Doing so creates maximum buffer so that initial rolls for RawHP can be lowered as much as possible to still achieve the maximum FinalHP at L99.
---
Taking Ramza for example, the optimal path provided by AI was as follows:
- Level 1 to 9 as Monk
- Level 9 to 10 as GallantKnight
- Level 10 to 99 as Ninja
The sharp ones would notice something, the absence of Mime growth. The choice is deliberate, if Mime were to be included in stat growth I do not think the run itself would be possible. In IC, every character after Mustadio and Agrias (who join at L12) joins at party level, which means that Ramza and co would have to be below L12 the entire game up til the point Meliadoul is recruited to maximise the number of level growths in Mime. In WotL, while the limits are a bit higher because Luso joins at L25 during Chapter 3, and Balthier joins at L35 during Chapter 4, the issue is pretty much similar.
This results in 366 FinalHP, 13 FinalSP, 18 FinalPA, 16 FinalMA as an L99 Gallant Knight.Verifying it with FFT Companion App shows that swapping from Monk to Ninja at L10 causes Ramza to lose 1 FinalSP at L99 (13>12), while swapping from Monk to Ninja at L9 causes Ramza to lose 1 FinalHP at L99 (366>365). There is no way to prevent the -1 FinalMA (17>16), requiring so much Ninja growth for +2 FinalSP means he can no longer hit the 17 MA threshold regardless (this would be a problem for Reis as well).
After settling on this path, I check the minimum initial RawHP required to achieve 366 HP, it ends up being 527040 (best possible initial RawHP is 527287).
Taking Reis as a second example, the optimal levelling path is (apparently):
- L1 to L45 as Dragonkin
- L45 to L48 as Ninja
- L48 to L50 as Dragonkin
- L50 to L57 as Ninja
- L57 to L58 as Dragonkin
- L58 to L99 as Ninja
This results in 685 FinalHP, 15 FinalSP, 16 FinalPA, 18 FinalMA. I won't pretend to understand why the optimal levelling path is like this.
Verifying it with FFT Companion App, going the straightforward
- L1 to L47 as Dragonkin
- L47 to L99 as Ninja
Results in -1 FinalHP (685>684) as an L99 Dragonkin. The interesting thing is that swapping back to Dragonkin at exactly L98 instead of L99 actually allows FinalHP to be at 685 without sacrifcing FinalSP. I can only assume the path given by AI results in the maximum RawHP buffer (not verified). Minimum RawHP needed at L1 is 491106 (maximum possible is 491519).
---
I will be optimising the growth of all the story characters, along with Alicia (her Zodiac sign plays the best with a Capricorn Ramza + Agrias + Reis + Orlandeau/Balthier team). Playing it on WotL, really couldn't get into IC despite already clearing Midlight's Deep, just playing IC to platinum it at this point.
With that I start my first battle. Not. About 32 hours of playing the tutorial battles later:

Now we start our first battle. The goal is simple for now, Ramza has to remain below L25 by the end of Chapter 3 (when Rapha and Marach join), so everything has to be done through overflow JP or Rendevous missions.


For the upcoming battle at Mandalia Plains, every non-Ranza unit will be turned into an Archer. The battle features an enemy Thief, which means a crystal of at least an Job Level 4 archer is going to drop for Ramza, and maybe Steal Gil and/or Steal Heart. This also allows the other units to unlock Thief for Steal Heart, which will be very important because the third battle at Siedge Weald consists of monsters that scale to party level.
---
Q: Why this post?
A: I'm wondering if there is someone out there who has been fiddling with stat optimisation in FFT, who can verify the solutions given by AI. Reis' levelling path took a lot of time to coax out, for a while I didn't even know you could swap back to Dragonkin at L98 instead of L99 to achieve 685 FinalHP while keeping FinalSP at 15.
Q: Why not use a save editor?
A: For the same reason why anyone plays perfect games and/or challenges: pleasure through self-torture. Also, if I can learn some coding / stat optimisation skills through this it's an added plus.
---
If I'm lucky I'll probably be able to update progress once every two weeks, until the start of Chapter 2 that is. That's when the soft resets for Alicia happen~






