Register

Author Topic: Division Ranking Algorithm: The Final Frontier  (Read 1925 times)

Dhyerwolf

  • Mod Board Access
  • Denizen
  • *
  • Posts: 4746
  • Here it comes, the story, of mankind's final glory
    • View Profile
Division Ranking Algorithm: The Final Frontier
« on: February 26, 2025, 05:24:49 PM »
In 2018, I wrote

"In doing these, I found myself kind of tempted to compile all data for damage and speed data for all DL characters in a database because many CSH characters are just checking whether someone has done sufficient damages in a set number of turns. "

So did do that. I included stats, turn 1 to turn 5 damage (breaking out by physical, magical or mixed) and various other things. Then I wrote some code to rank people and to run very naive matches. But I hated the naive matches that were just based on damage and so I expanded it so it factored in...well, basically almost everything by the end. And now that I have reached the end of the project, so it's time to share. I'm keeping these descriptions mostly high-level while touching on major points. My apologies if there are things that don't make sense; summing up all this work did prove to be a challenge.

First, a roadmap to how to navigate this topic. The following are the sections you can navigate to. To navigate to a section, search for # + the name of the section
Building Process
Lessons Learned
Included Games
Equip Changes
Boss Changes
Rankings!
Missing Games
Accuracy and How Moves Relate to Each Other
Functions
Data Storage
Considerations
Analysis

#Building Process
I started with a set of just slightly better than naive comparisons that factor in only damage. I thought that it might be interesting to see how adding in different features would affect win and losses. So I added in run order:
'Base', 'Def', 'ITD', 'AtkBuff', 'InnateElem', 'Acc' and 'Eva'. Each time I would create the basic options of how a character would kill their opponent the fastest. Of course, the time came when I wanted to throw in everything. I ran the following in succession:
'FullDamage', 'Counter', 'Healing', 'Drain', 'Speed', 'Defenses', 'Evade', 'Fatal', 'Disable', 'Disarm', 'Minor', 'Evade', 'Effects', 'Debuffs', 'Status_Res', and 'Equips'.
So I started with just damage and added different layers of potential moves. I would basically take the winning strategy from the last comparison type and feed it into the next one, so these were iterative. Going iteratively helped because if I threw in everything at once, it would mean I'd need to run all defensive strategies instead of just focusing on the ones that would stop the previous best strategies.

For Equips, there was an extra level where many comparisons might be run because a character with equips would need to run through each potential equip combination that might be useful and see if it would let them win. Then the other character would run through their equip combinations and see if they could flip it back. There were two levels of equips: Weapons and Other.

I tried to have as little hard-coding as I could get away with, but there was a fair amount by the end because there were some characters where putting together algorithmic strategies didn't work very well.

Generally, I start with determining the base strategy of what damage kills the quickest. I then create lists of strategies by adding in draining, buffs, effects, status...etc. Duellers would start on the first strategy and whoever lost would then add considerations that might impact how they acted. If they exhausted all the possible considerations, then they would move onto the next strategy in their list. If someone hit their last strategy and still lost, then they lost the match. A key check occured to see if a character was about to die at every turn so that they could try and avoid that as well.

There are many other things I could say about the building process and it's many facets, including selective rerunning of matches, analyze match outcomes for tailoring, multiprocessing and a lot more. But this at least gives a solid quick overview.

#Lessons Learned
First and foremost, I overestimated the effects that any secondary feature of damage (or some status) mattered. The number of turns that someone kills (or disables) on average is the most important thing. Even if they have limited shots of Fire or Thunder evadable physical attack, it doesn't matter that much. Most people won't block the element, evade (or evade enough) or have healing or some other strategy to run them out of MP. There are some duellers I massively underranked due to this. I gave Iyona in Brig 2 a 2.25 when she scores a hair above 3.00. There are a lot of examples of this! Granted, this was also impacted by changes in some views that I discuss in the equip changes section.

Second, I think sometimes I was quite poor at determining the importance of durability in both directions. So take FF6. I think I underestimated how big an effect Locke's durability would have, so I put him higher than he should be. And I put Celes too low (good call NEB) because of this but also because a lot of times, it's not her damage that determines how many turns she needs, but rather her status (going back to the first lesson). Of course, since rankings were done at different times, this mattered a lot more in some games than in others.

For durable bosses in lower divisions, I definitely underrated them conceptually (I didn't really give them rankings). Vinsfield was ranked Light and I didn't think that unfair in the past, but he scored low Heavy. Doubling average PC HP and having status resistance can go a long way if you can still 4HKO (well, with my boss changes, more like a 5HKO but above average speed, a 4HKO against magically frail and often a 4HKO against physical fighters).

Also, I underrated "full packages". Granted, there aren't many examples of full packages, but the one that I did a lot of review on early was Tim. Tim is above average speed over time, durable in all ways and has good status resistance and good damage. Not having a flaw was really, really useful, and he almost hit Godlike when I didn't even rank him in Heavy (granted, that also goes back to the first issue as well). It also helped that he was hitting the damage point where it's rare to not 2HKO, which was also a factor.
...into the nightfall.

Dhyerwolf

  • Mod Board Access
  • Denizen
  • *
  • Posts: 4746
  • Here it comes, the story, of mankind's final glory
    • View Profile
Re: Division Ranking Algorithm: The Final Frontier
« Reply #1 on: February 26, 2025, 05:25:14 PM »
Roadmap (Include a # in front and search for)
Building Process
Lessons Learned
Included Games
Equip Changes
Boss Changes
Rankings!
Missing Games
Accuracy and How Moves Relate to Each Other
Functions
Data Storage
Considerations
Analysis

#Included Games
The initial games I ranked were the following (including some notes about challenges that each game posed). All these games I felt pretty clear on all the way stats worked.

BoD7- Fairly straightforward as far as things go. The big decision (shared with CSTW) was what to do about matches that ran longer (I ended up applying a 10% damage taken penalty for each time healing was used and for every action taken after the 5th one). Also fairlyquick to run, minus when I threw in Sara's Stun (basically a 1 turn Stun trying for a double is a good way for things to take a long time!).
BoF3- A nice choice to ensure that I had some status protection equips to get into the mix. Some of the specifics of Sleep, Rei's transformation (and enforcing what can't be used after transforming), Nina's Debuffs and buff stacking are all features that needed some really detailed work. Haste-healers take forever to run and Momo is one the worst. There end up being so many permutations of what they can do, Momo especially! Momo definitely needed some fine-tuning. I skipped Ryu 3 because Rei already took enough work for all that it wouldn't be horrible now.
Brig2- Included because I wanted counters to be represented in some matter, as well as some balanced elemental resistances/weaknesses. Although technically, the way I did accuracy for the game doesn't fit how I would see it now, so there is a little warping. I decided that on turn 1, DontMove can't be used without ceding initiative (unless the opponent cedes the initiative back, which is so that it doesn't go slower healer->DontMovex2 as a kill). There was a fair amount of work getting the counters up and running correctly (since it meant I needed to create a method for duellers to try and avoid counters as well as strategies to try and maximize counter use). MagicNull also took some work, but nothing crazy. Iyona took some hard coding. No one here takes too long to run.
CSTW- Fairly straightforward, although not as much as BoD7. Dacre was probably the worst haste healer to run time wise (oh god, especially bad when I introduced Suiko games and the healing/status healing that Dacre can't stop. Running through Dacre v S4 was lengthy and that was without Wind Rune users).
CT- Due to the MP issues the game has, I really needed to have a way to play with mixes of different damage combos against healing (Brig 2 isn't great here with mages, but basic physicals there are normally solid so it wasn't a big issue). Frog and especially Marle took some time.

Then
S1- So blessedly easy and quick. Gave me a lot of clean elemental fighters and was good for fodder, plus nice smash from Tir.
S2- Speed changes on some moves really led to some work, since that basically needs to be checked every turn and needs to ensure that even makes sense to use the moves in question. Also, that makes any healer effectively a haste-healer on top of it! Worth noting that I dropped Dark and Wind resistances, which was a nice initial feature for inclusion. Wind is rare in game and when you see it, it really doesn't matter and Dark is even worse (3 Dark moves in the game! One of them ignores elemental resistance! The best of the other two is 5HKO and you are happy to see it because it means the bosses isn't using something decent).
S4- I ignored Wind Rune users since no status tests, so otherwise it was very easy! Just needed to decide to how to take the ITD part of magic damage (which wasn't exactly how it works in game, but decisions had to be made).
FF6- I wanted to start including some elemental equips, so I landed here next. Plus is felt like a very DL core game. Terra took some work because there was no moves with a Recharge Time/Charge Time at this point (I gave Morph a very short Recharge time). Getting Terra to use strategies correctly meant some hard coding. Locke and the Valiant Knife also took some work. Strago (due to not having a great way to deal with FF 6 Bad Breath), Setzer (random variance), Umaro (randomness, although could smooth this out to include if I wanted to), Gau and Mog were not included.
Saga- I was not anticipating including Saga, but at this point I saw that it had a whole lot to offer, such as a host of decent diverse Godlikes, elemental strengths and weaknesses, status resistance/weaknesses (oh those human fighter lolzy weaknesses) and a lot of interesting duellers. Rouge's Psychic Prison, dealing with moves that use all MP and get weaker with less MP, Overdrive, and GlassShield all stand out as challenges. Of course, Riki/Cotton had speeded up healing; I could use the same structure as I did for S2, but they still took forever to run! Robots sometimes could also be slow because they don't always kill quickly, but last quite some time. Emilia is the only gun user I included; I couldn't deal with gun users that might have 3 different speeds (in fairness, I flattened Emilia's speed) plus the move that used all bullets at once. Sorry Roufas, Mei-Ling, Capt Hamilton and Doll (although I could probably swing Doll). Also, I merged JP and WP since I didn't have a second non-Charge resource type coded up and really didn't want to do that. Since the one thing I never dealt with was MP Damage, so there were no concerns there. Luckily, there's basically no one that uses both types and in those cases, I found other ways to deal with it (generally with Charges).
FF4- I really wanted more elemental resistances, did a lot of work figuring out FF4 stat topic wise and was happy to include more FF. If I could go back, I would rethink this choice. CHARGE TIMES WERE ABOMINATIONS. I've mentioned haste-healers were already bad enough due to how it kind of throw off turns, but charge times were so much worse. Is someone going to start charging a move that looks good at first, but is pointless when it lands? Charge Times took so much effort and not just the strategic part, even just getting it working right. When you need to create variables based on when the next couple of turns for both duellers will process, having things that can constantly throw those off are not fun. Also, FF4 and TAY took the most hard coding by far. PerfectEvade that dissipates based on being attacked needs a lot of specificity! Also, so many different equip combinations!
FF4TAY- I already had 4 in, so I thought to go at least throw in most of TAY (I ended up ignoring Ceodore, Rosa and Porom because my will go through the level of hardcoding and match checking that would have been needed was destroyed after Leonora). Not to mention that unlike FF4, Haste actually would have mattered. Also shoutout to TAY Edge, who is like the only Godlike that surprised me (although if I look at it again, it seems kind of obvious).
FF9- After I cut the elemental resistances from S2, Wind, Holy and Dark had no one really resisting them except rare cases, so in came FF9. Bad Breath needed a little tailoring, but I had to decide what equip combos I'd find kosher, but really nothing here was too bad. I never actually checked Eiko or Amarant's results though.
FE7/8/10- For all that I've had historical issues with FE in the DL, I had a lot of the framework ready to go and it felt like there should be some representation. There were some features about counters that I needed to add, but it really wasn't bad.
Grab Bag of Bosses and a few other assorted PCs- Around FF9, adding characters really had less and less to do with characters themselves, but when I looked at the overall roster, it was screamingly obvious that the lack of high tier bosses was really warping results. So my goal was to grab a bunch of Godlike and especially High Godlike bosses (although after I changed how I view bosses, not all initial Godlike bosses landed there). So False Althena, Fou Lu, Yuna (faked it so that she just had massive, massive unstoppable damage), The Dark One, Myria 3, Teepo, Kefka, Rubicant, Lloyd, the SoA bosses (useful for boss ID representation), Dehaui, Wugui, Lloyd, Lunar 1 Bosses (making it so Ghaleon's double acting was treated as 1 move) and then WA 2 bosses since I thought that lower divisions needed more boss representation (I thought about Zog/Sara but between Dheart and my new boss views they would be horrible). I did use a lot of youtube videos to understand their patterns (discussed more in my boss section).
...into the nightfall.

Dhyerwolf

  • Mod Board Access
  • Denizen
  • *
  • Posts: 4746
  • Here it comes, the story, of mankind's final glory
    • View Profile
Re: Division Ranking Algorithm: The Final Frontier
« Reply #2 on: February 26, 2025, 05:25:36 PM »
Roadmap (Include a # in front and search for)
Building Process
Lessons Learned
Included Games
Equip Changes
Boss Changes
Rankings!
Missing Games
Accuracy and How Moves Relate to Each Other
Functions
Data Storage
Considerations
Analysis

#Equip Changes
Unfair and unbalanced effects from equips is definitely something that has stuck in a few craws before. I decided that just like I did with status hit rates, I could use in-game features of equips to rate them. Basically, an equip that resists elements or status no longer keeps the effect indefinitely in a match; it will resist a certain number of actions that check it's resistance (so an armor that blocks Fire might block 1 Fire attack or 3 or how ever many).

Available duration of the equip was the most prominent feature that determined how long an equip effect lasted. The other parameters are ease of obtaining, part of a comprehensive blocking system, viable at endgame, true unique, unique in concept, similar early equip and tradeoffs. The typical duration is 2 or 3 attacks, which still is potent enough to delay enemies sufficiently to win, but not always (Suiko Thunder mages lost about ~25 matches on average when equips come into play, which is about 10% of all matches. They probably lose to most with Thunder defense, but sad FF4 Kain and such still exist so it's less of an auto-loss).

#Boss Changes
I initially only had a few bosses (like 2), but when I started thinking about adding bosses I really had to sit down and think. Using Jade as my example because he's the one that always had a screamingly obvious issue. Jade has a 12.5% chance of using Bolt X each turn, so letting him spam it felt off to me forever. But it didn't make sense to just kind of gut check things and apply penalties like that when I could try and come up with some kind of metric for spammability. I basically decided that if there wasn't a greater than 50% chance of using a move in the first 2.5 turns, it's not turn 1 to me and I went from there. Basically there's the first turn a boss could use a move and then the cooldown until they could use it again.

Basically it was
Turn 1: 25%+
Turn 2: 13%+
Turn 3: 9%+
Turn 4: 6.7%+
Turn 5: 5.4%+
Turn 6: 4.6%+
Turn 7: 3.9%+
Turn 8: 3.5%+

Cooldown
40%+- 0 (50.7% Chance of seeing this in two 2.5 turn breaks in a row. .712 * .712 chance of seeing move in each 2.5 turns)
18.7+%- 1

Now for bosses where I had the exact chances, this was easy. Of course, the chance of using moves might chance as HP changes so I had whole structures to deal with that. For someone like False Althena that used set moves, Ray was turn 5 in game, so that was turn 2 and then every other turn. For many of these bosses, I had not played their games in an eternity, so I looked at a lot of Youtube videos to try and get a sense of how moves are used (like SoA bosses; some bosses will spam great things early and some bosses are Ramirez; also of note, Ghaleon AI?!! He loves to basically spam one combo for 5-6 turns but the combo was not consistent between different playthroughs I saw on youtube although I seem to remember someone losing and getting the same combos, so they may be consistent for any particular save). Since bosses were really less about any specific boss being 100% correct and more having the representation, I didn't overly stress about it.

So already some bosses were pretty unhappy with this change, but for some it may have gotten a lot worse! Boss AI is often stupid in game. They might be in position to kill someone and instead hit someone with full HP and kind of waste the turn. I introduced a mathematical equation for a focus penalty. A boss depending on a lot of ST damage that is poor at killing is going to unfocus in game (unless you are like Lani and like to rabidly attack a target) and I factored in the chance of killing straightout, the chance of a kill as a follow up blow, the area of the move and the number of Pcs faced to factor when a move wouldn't hit in a duel due to unfocusing. This is why some bosses that seemed like clear Godlikes at first fell into High Heavy.

Oh right, one more illustrated by Myria/Fou Lu. It's great you have these status attacks that face PCs where the default is everyone is resisting status, making the actual in game rate you see much worse than the max rate. Yeah, I'm factoring that into status hit rates or elemental damage. Generally not the largest effect (Rubicant for example has 1.3 PC HP damage to me; he's much unhappier about how I see his HP), but most bosses got at least a little penalty on something.
...into the nightfall.

Dhyerwolf

  • Mod Board Access
  • Denizen
  • *
  • Posts: 4746
  • Here it comes, the story, of mankind's final glory
    • View Profile
Re: Division Ranking Algorithm: The Final Frontier
« Reply #3 on: February 26, 2025, 05:25:59 PM »
Roadmap (Include a # in front and search for)
Building Process
Lessons Learned
Included Games
Equip Changes
Boss Changes
Rankings!
Missing Games
Accuracy and How Moves Relate to Each Other
Functions
Data Storage
Considerations
Analysis

#Rankings!
Here are the scores (pre and post equip) mapped onto a 2-5 range. If I was to make an edit, I'd make an intermediate stage with just the weapons (Zidane wins 68.5% of his matches based on equip choices and I'd like to know which of those were based on armors)

Godlike
CharacterGameFinal RankPre Equip Rank
The Dark OneATL24.9764.976
YunaFF104.9164.892
MyriaBoF34.9044.904
Fou LuBoF44.8924.892
PiastolSoA4.8924.904
TirS14.884.88
False AlthenaLunar4.8574.857
DehauiSH4.8574.869
GhaleonLunar4.8094.809
RoyceLunar4.8094.809
TedS44.7734.809
T260GSaga4.7674.779
TimeLordSaga4.7494.749
RiouS24.7254.761
TeepoBoF34.7014.737
LeonardSaga4.6654.677
RudoBrig24.6534.653
EdgeFF4TAY4.6294.582
DhesigneaFE104.6184.618
Dr NusakanSaga4.6184.725
XenobiaLunar4.6124.624
BossBeatrixFF94.5944.594
JowyS24.5944.594
GolbezFF4TAY4.5464.402
KefkaFF64.5464.546
SephiranFE104.544.54
TerraFF64.5224.486
RedSaga4.514.51
RabbitSaga4.5044.54

Heavy
CharacterGameFinal RankPre Equip Rank
RubicantFF44.4984.582
KainFF4TAY4.4864.295
SierraS24.4744.498
TimBrig24.4624.474
NaesalaFE104.4444.456
RikiSaga4.4384.462
WuguiSH4.4324.456
NailahFE104.4144.426
MomoBoF34.4024.271
LizaSaga4.4024.414
RamirezSoA4.3784.402
GarnetFF94.3674.175
CainaWA24.3614.373
GalcianSoA4.3554.402
ZEKESaga4.3194.39
MazusS24.3134.42
BossKanonWA24.3074.307
LloydLoD4.2834.283
StellaBrig24.2654.301
ZidaneFF94.2592.203
PtolomeaWA24.2534.253
EileenS14.2474.355
ElizaBrig24.2414.325
RubinoBrig24.2114.271
CelesFF64.1873.984
FlikS14.1874.426
FlikS24.1754.402
SteinerTinFF94.1333.966
TanaFE84.1274.139
ShadowFF64.1273.996
KyleBrig24.114.133
YangFF44.1044.092
PzKwVSaga4.084.104
SonyaS14.084.104
DellaBrig24.0684.104
LucS24.0564.104
Mu'ahBrig24.0444.271
Lo FongS44.0384.205
RosaFF44.0323.9
WarlockS44.0144.122
PoromFF44.0023.859
GarlandFF94.0024.205
ReiBoF33.9963.936
UrsulaFF4TAY3.9963.363
AdieuBrig23.9844.116
RydiaFF4TAY3.9483.518
EmeliaSaga3.9483.936
SlashCT3.9363.936
UmiCSTW3.94.032
EdgarFF63.93.96
LaniFF93.93.924
AlenS13.94.032
ColmFE83.8883.912
SabinFF63.8883.805
TengaarS23.8884.044
KikaS43.8883.9
VinsfieldWA23.8883.888
GrensealS13.8654.104
JoshuaFE83.8413.853
PalomFF43.8353.811
TaliaBrig23.8293.876
SteinerFF93.8293.542
FreyaFF93.8173.805
SigurdS43.8173.865
YangFF4TAY3.8053.829
EikoFF93.7693.673
AntenoraWA23.7633.799

Middle
CharacterGameFinal RankPre Equip Rank
LavosCT3.7453.781
GekkouFF4TAY3.7453.494
TsukinowaFF4TAY3.7453.602
RougeSaga3.7273.775
ZozmaSaga3.7213.733
GingerBrig23.7153.823
CthulhuCSTW3.7093.757
StallionS23.7093.793
AylaCT3.6973.578
JewelS43.6973.721
DEMBoD73.6613.685
CecilFF4TAY3.6613.434
ViviFF93.6613.327
SheenaS13.6613.9
WhiteRoseSaga3.6493.625
CleoS13.6493.793
OctoberCSTW3.6373.685
IzayoiFF4TAY3.6373.064
SorenFE103.6143.661
CrowleyS13.6143.685
JeaneS43.6143.924
ZangetsuFF4TAY3.6023.661
KenethS43.6023.865
MillieS23.5963.93
MarleCT3.593.482
AmarantFF93.593.303
MedessaBrig23.5843.679
CamusS23.5843.715
JiuBrig23.5783.637
FrogCT3.5783.422
RebeccaFE73.5723.608
CronoCT3.5663.53
MizukiS43.5663.59
UmimaruBrig23.5543.578
ValeriaS13.5483.584
DartFE73.5423.59
SinBrig23.5183.602
PalomFF4TAY3.5183.446
AsellusSaga3.5183.53
HectorFE73.4943.53
SaraBoD73.4823.59
KilleyS23.4643.584
SelmaS43.4583.494
NinaS23.4463.566
FuseSaga3.4343.482
EmmaBrig23.413.506
EdgeFF43.413.267
RonnieBellS13.4043.44
AlsinBrig23.3863.446
HellionS13.3863.518
RydiaFF43.3633.303
GinnyBrig23.3513.41
VigoroSoA3.3273.422
KatarinaS43.3213.548
SharpeCSTW3.3153.398
SidBrig23.2793.398
BobS23.2793.315
GeorgS23.2793.315
GijimuS23.2673.303
VincentS23.2673.315
SheenaS23.2613.297
JudeccaWA23.2613.285
KasumiS13.2553.279
LoWenS23.2553.279
DaltonCT3.2433.279
DacreCSTW3.2313.434
PawsCSTW3.2193.267
SeiSaga3.2193.1
TobyBrig23.1833.195
OswinFE73.1833.219
KylinSaga3.1713.118
LeonoraFF4TAY3.1473.076
QuinaFF93.1473.016
L'ArachelFE83.1413.333
RoboCT3.0823.034
CecilFF43.0762.884
LitaBoD73.0643.183
PecoBoF33.0583.064
GenSaga3.0523.088
KahnS23.0523.1
HarleyFF4TAY3.042.741
KateS43.043.124
IyonaBrig23.0343.297
TommyBrig23.0043.028

Light
CharacterGameFinal RankPre Equip Rank
SnoweS42.982.992
GrahfXG2.9682.968
KonradS42.953.058
HawkeyeFE72.9322.992
MegS22.9322.968
LeoLunar2.9082.932
EdwardFF42.8962.418
UgetsuS42.892.902
ReiSaga2.8612.837
LuciusFE72.8552.902
KurthnagaFE102.8492.896
PesmergaS22.8492.908
LuccaCT2.8432.544
ElenaBrig22.8372.944
Lo HakS42.8372.944
ReinbachS42.8252.837
FukienS12.8012.837
HerveyS42.8012.813
FranzFE82.7952.819
LucS12.7892.849
PickBrig22.7832.89
IldonSaga2.7532.753
RinaS22.7532.825
ErikBoD72.7412.753
KirkusS12.7412.753
ShinS22.7112.723
LuteSaga2.6932.705
CottonSaga2.6572.705
NinaBoF32.6222.502
PalmerFF72.6222.681
AkaghiS42.6222.633
GilliamBrig22.5862.598
InnesFE82.5562.58
PahnS12.5262.55
LucaFF4TAY2.5142.347
RonfarLunar2.5142.526
LockeFF62.492.406
EugeneS42.492.502
ViktorS22.4842.508
HumphreyS22.4782.502
SlimeSaga2.4542.466
KwandaS12.4542.478
MiklotovS22.4422.454
ReinholdS42.4242.448
Tai HoS12.4182.442
CidFF4TAY2.4062.263
ChiepooS42.4062.418
KuromimiS12.3822.394
GarrBoF32.3592.299
RelmFF62.3352.251
KasimS12.3352.347
LepantS12.3352.347
MilichS12.3112.323
TalS42.3112.335
MiliaS12.2992.323
Yam KooS12.2992.311
OulanS22.2992.311
NanamiS22.2752.287
PabloS42.2752.347
KoyuS22.2632.275
LinoS42.2632.275
KainFF42.2452.161
EmberCSTW2.2272.239
CidFF42.1792.108
ViktorS12.1792.203
AxelS42.1792.179
DarioS42.1312.155
SylvinaS12.0962.096
FreedS22.0482.048
GremioS12.0362.036
KrinS12.0362.036
MariaXG2.02.0
...into the nightfall.

Dhyerwolf

  • Mod Board Access
  • Denizen
  • *
  • Posts: 4746
  • Here it comes, the story, of mankind's final glory
    • View Profile
Re: Division Ranking Algorithm: The Final Frontier
« Reply #4 on: February 26, 2025, 05:26:19 PM »
Roadmap (Include a # in front and search for)
Building Process
Lessons Learned
Included Games
Equip Changes
Boss Changes
Rankings!
Missing Games
Accuracy and How Moves Relate to Each Other
Functions
Data Storage
Considerations
Analysis

#Missing Games
If I was to throw in even more duellers, this is about the order that I would consider (WNR means would need replay)

Various FE duellers- Some of these are ready to go (mostly FE 10). Some others I would consider need some work on setting up options (mostly related to changing evasion levels; there is some setup for that, but the others that fall under this category need something more expansive).
Various Brig 1 duellers.- They are 100% ready to go.
Phantasy Star 4- WNR, but when I get the steam deck that wouldn't be a big deal, there are a lot of good duellers and it would be relatively straightforward
Breath of Fire 4- I'd need to redo some stats (some Masters, Double Blow or something allowed since it's the third worst addable physical move after Super Combo and Shadowwalk). Also, a few other things here and there like stackable Magic buffs and some effect for Ursula's guts. Maybe also do Ryu 3 at this point.
FFT- Ramza, Agrias, Mustadio, Orlandu, W8, Beowulf, Archer, Geomancer, Ninja, White Mage, Black Mage, Time Mage. Representing more good equips!
Xenogears- I would probably just ignore the limit effect. Of course, in that case, I could move it up the list perhaps
Missing FF4TAY duellers (Ceodore, Rosa, Porom)- I didn't rank them because the charge times plus the tweaking needed plus the perfect evasion would take more time than I wanted to put in at that point
Breath of Fire 2- I'd need to determine if Mdef functioned as Status Res in any way for the Pcs, but I believe literally everything else needed exists and I have a firm handle on (minus a Guts effect, but BoF4 would cover that).
A few ATL2 duellers- I'd do nearly everyone, but I never dealt with MP Damage (which wouldn't be bad conceptually, but I'd be more concerned with that I don't have MP averages for games and games like Suiko would be a bit painful to quantify. As such, there would need to be some type of weird decision making).
Final Fantasy X- Although truly most of them wish I wouldn't. The only Celestials I now see as legal are Yuna, Rikku and Auron, so a lot of them look very notably worse. But also, limits exist and I'd need to code them.
Final Fantasy VII- I have a conceptual way to deal with limits (just call them "Equips"), but still a bit weird. But doable!
Final Fantasy VIII- Not too much to offer, but doable.
Pokemon- A lot of to offer. A variety of dueller, elements, elemental weaknesses. Had thought about putting it in, but I suspect that there are a lot of little things I would need to include. Also, would probably just limit them to 5 moves, but would allow all 5 at once.
Valkyrie Profile- Only this low because WNR but I have wanted to replay it forever and certainly will one day hopefully soon. Would play around with the weapon choices a bit since there's another level of insane weirdness regarding progression that I would love to fit in and VP would be a good test case for thinking about it (although it would probably be the only game I might apply it to)
Atelier Iris 1- Perhaps. I wonder if I have enough status notes existing that I don't really need to go any testing. If so, this could be easy but I also suspect there are a lot of weird effects that might be a pain to put in.
Shadow Hearts 1- WNR, but very doable.
Radiata Stories- Wide variety of duellers. Might need to determine speeds a bit though. Including because this is one I would enjoy replaying.
Persona 3- Cleanest Persona game (albeit the weakest). Would need to dig in a little into an old save (which I would hopefully have)
Shining Force 1/2- I did actually prep the stats for this. WNR parts of them, but it does make good fodder.
Disgaea 1- Dead easy, just doesn't offer much.
Breath of Fire 1- Certainly feasible and really doesn't even need much testing except for maybe Deis. But also, not a lot of dueller to care about and someone like Nina would need a lot of tailoring.
Final Fantasy I- Would need stackable Evade buffs and other testing, but it's not undoable.
Dragon Quest 4- Would need to replay or get Super to. But which version?!!?!!! No, that's actually a valid question, but it's pretty clean.
Dragon Quest 11- Would need some testing, but probably doable. The thing is I only played a little and watched Super for the most part. But playing the 2D isn't a bad option.
ATL 3- I never beat the game, but there are a few characters (non-status using ones) I could pull out. Velhart is an interesting thought.
Dragon Quest 8-Would need some testing, but perhaps not a full replay (which I don't see myself doing). But relatively clean (characters would be locked into 1 build though).
Lunar games in full- WNRs and would need to figure out what to do with L1 speed averages, but very clean.
Shadow Hearts 2- The RT issues make it a little bit more challenging, but I suspect that the game is more viable in that regard than many other games with RT.
Digital Devil Saga- Well, moves costing HP aren't something I really dealt with (danced around it with Mazus), but workable. WNR which is not something inconceivable one day
Radiant Historia- WNR, not super interesting duellers
Star Ocean 1/2- Would need to do some notable testing to update some stuff, but I certainly do love the games.
Super Mario RPG- Very doable, just not a fan of the game and WNR
Disgaea 2- Would need testing to deal with new views on acc/evasion and the buffs are headachey, but it's doable.
Xenosaga 3- WNR
Persona 4/5- Would need more testing than P3, but partially doable perhaps but probably overrating that
Final Fantasy V- Would need to likely finish the replay I stopped when I realized that I just didn't really like the game at all. A lot of cleaning up to do.
Lufia 1- WNR but doable.
Other Fire Emblem games that I have played and have the stats on- Mostly doable?
Star Ocean 3- I'd need to go something about turn 2 speed and it would need a lot of testing.
Xenosaga 1- I have the notes, but I just don't really care. If only I saw S-Chain as turn 1 (in that there's no way I'd see KOSMOS being able to use it on turn 1 when it competes with the best game in the move) this would be higher.
Jeanne D'Arc- Yes, there are limits, but ones that I might be able to easily deal with. WNR
Eternal Poison- Lots of good stuff here. Elements and weaknesses, lots of variety. WNR and do testing and testing would be much more painful than most other games on the list.
Phantasy Star 2- I could, but I don't care.

I'd likely never consider
ATL4- I'd have to replay it to get status resistances from enemies, don't see that ever happening
Bravely Default- Won't do multi-acting and this is the worst version of it.
Breath of Fire 5- Testing enemy resistances seems painful beyond belief + Multi acting
Chrono Cross- Would fit into the designed system very badly
Earthbound- Needs status testing, won't be replaying it.
Final Fantasy 3- Because just general no the game. Would never touch it again.
Final Fantasy 13- Quickened turns by cutting them short would not be doable.
Any Grandia game or Child of Light- The speed variances with both CT and RT would be a nightmare. Also MP and SP for Grandias.
Golden Sun- The changing stats from using summons is not undoable, but WNR which I can never see happening.
I Am Setsuna- Limits
Legaias- The number of potential combinations of moves would be...well...what's the correct description here? Okay, I bolded this and I'm unsure of the right word very good reason. So, tangent  time. In 2018/2019, I made a Legaia 2 stat topic. Now obviously, getting everything nailed down in Legaia is a massive task, but I did it. Yes, I got the mults for all the moves, figured out hit bonuses, got the defense effects, did a deep dive on equip effects...etc. Everything! Well, except status hit rates. There was very clearly some totally secret enemy effects. And it didn't apply to single status (like all Sleep attacks), but rather individual attacks. I did enough rounds of testing to realize that something was definitely happening, but I didn't have a shred of insight into it. Now, in retrospect, the correct answer would have been to just average the hit rates across the endgame enemies and call it a day, but oh well.

But when I say I did everything else, I REALLY mean it. Because what does everything else cover? It covers determining strategies several turns ahead based on current AP and maximizing damage over any number of turns. I created an algorithm that could apply to all 5 characters where it could run through literally all the combinations of options to determine the best damage strategies over time. But I thought it would be super unfair to then take this literally for a 3 turn average because in most games, that involves picking 3 moves off a relatively small list, but this involved picking dozens of moves from an option list that effectively could span *checks notes* over a quadrillion combinations.So I came up with Legaia Information Criterion. Below are the notes I would have had in the topic if I had finished it.

LEGAIA INFORMATION CRITERION: This is super critical. Legaia more than any other game took extreme measures to determine how to maximize damage. There are a multitude of moves that can be linked in in up to hundreds of thousands of ways (in 1 turn! Not counting using excessive numbers of basic physicals or basic physicals at the end because you ran out of space for something better. You want a 3 turn and you might be looking at over a quadrillion combinations. That’s 10 to the 15th power combinations) all with different mults, hits…etc. It feels very unrealistic to take the maximums at face value since even if you stumble across the best combo in game, you can’t save it (except in your memory!). In order to determine what the best 3 turn actually was, I had to test all mults (which are less consistent across AP usage than one would suspect), figure out chaining bonuses, program a system that could create every valid combination (properly accounting for moves that chain into each other) over 3 turns and then determine the best one.

It feels wrong to take best damage numbers at complete face value because no human will ever be able to do this in game. My solution is LIC, or Legaia Information Criterion (Information Criterion are used in statistical models to pick the best model by penalizing models with excessive complexity. Not to say that mine works in the same manner, but same spirit).

The following all factor into LIC:
--How many valid combinations exist. For simplicity’s sake, I am using the number of valid combinations available at 100 AP (Note that if Lang uses Ruler’s Legging, I’m doubling this number since getting a last second item that completely rearranges all your combos practically doubles the amount to learn- and even worse, gives you a very short time to learn to maximize)
--How much variation in damage exists in a 3 turn average (less deviation = more likely to see the best damage consistently)

For comparison, in the old DL topic, Lang’s best turn 1 move generates 84 AP off a 18.79 mult, but he can actually get one combo with a  23.08 mult (same AP) or a 22.39 mult for 96 AP. However, with over 60,000 turn 1 options (over 30,000 of which I’d consider categorically viable), it’s easy to see why getting a move that did 20% less damage and generated 12 less AP than ideal was still a really good option!

Legend of Hereos: Trails Games- Similar to Grandia in terms of the headache of varying CT and RT plus MP and SP where SP is also limiteseque. Listing separately because in some of the earlier games the CT/RT stuff could maybe be collapsed and be close enough (But Cold Steel would be a chaotic disaster, probably the worst game I can think of).
Lufia 2/3- Limits
Mana Khemias- Heavy on differing RT creates too many options
MMXCM- Would not replay to get a sufficient sense of the game plus limits
Ogre Battle-  Won't do multi-acting plus other weird issues
Octopath Traveller- Would love to throw this in, but dealing with BP would need several additional levels of work
Persona 2- WNR, can't really see that happening. I like it, but it's not a game to revisit these days.
Shadow Hearts 3-Limits
Skies of Arcadia- SP
Soul Nomad-Love you, but that typing would need a whole nother level of data.
Suikoden 3-  Too much speed variance
Suikoden 5-  Mages have speed variance, fighters need too much testing to fully get right.
Suikoden Tactics- Somewhat doable, but the elemental system would take work. Although maybe overestimating how much.
Suikoden Tiekreis- The challenge of actually getting the stats out and status testing on top of that.
Tales games-  If I want ARPGs, I at least have Star Ocean speeds more nailed down and Radiata Stories offers a much better range of duellers and these games tended to get too complicated to fit in easily anyways.
Triangle Strategy- More needing to deal with BP. I mean, I could use make it MP (and I do have an MP Regen effect), but I imagine this would need to be very, very tailored.
Valkyrie Profile 2- Lots of testing would be needed I bet.
Wild Arms 1-5-  Limits. Some of these are more viable than others though where perhaps the limits in 5 don't really even matter?
Wild Arms XF- There's so many weird little effects
Wizard Oz- No to any multi-acting
...into the nightfall.

Dhyerwolf

  • Mod Board Access
  • Denizen
  • *
  • Posts: 4746
  • Here it comes, the story, of mankind's final glory
    • View Profile
Re: Division Ranking Algorithm: The Final Frontier
« Reply #5 on: February 26, 2025, 05:26:37 PM »
Roadmap (Include a # in front and search for)
Building Process
Lessons Learned
Included Games
Equip Changes
Boss Changes
Rankings!
Missing Games
Accuracy and How Moves Relate to Each Other
Functions
Data Storage
Considerations
Analysis

#Accuracy and How Moves Relate to Each Other
So one of the big challenges in this system is that literally everything needs to be considered and operationalized. So many decisions to make! Accuracy helps illustrate some of the details that need to be considered.

A move hits when it's processed accuracy is greater than 50%. If a 70% move is used twice, the second has a processed accuracy of 49% and won't hit. In thinking about accuracy, I had to decide how different low accuracy moves should interact each other. I didn't want moves to just stack because then a 40% bad status, followed by a 25% good status would mean that the 25% good status would hit turn 1. I eventually decided that moves needed to clear 2 checks: one check related to the specific move and one check related to the cumulated accuracy of the move type. So take a 60% acc move followed by an 80%. The 60% would hit, but the 80% would miss because the cumulative effect would cause a miss. There could be a little complex tailoring I could do here, and sometimes this interacted weirdly with elemental resistances wearing off, but it felt at least fair enough.

#Functions
These are the functions to give an idea of all the pieces that needed to be written

apply_def
apply_eva
apply_elem_resistance
turns_to_hit
proc_hit- Alter the acccuracy storage features
create_turn_options- Come up with the quickest option to end a match via damage
run_turns- Run the naive damage only matches
run_turns_complex- The backbone
proc_speed_change- Change the speed stat when a move is used that changes something or an effect wears off
adjust_damage
check_successful_hit- Yes or no will a move hit
reset_stat- When an effect wears off
change_stat
proc_upcoming_ct- Oooof. Okay, if a character checks if using Haste is a good idea, they actually need to know how this will impact turn order going forward. This function deals with creating the looking forward turn order with and without an effect so that I could check if Haste (or Slow) made sense. This function was a painful one to write.
check_initial_strat_fatal
change_status_rate
choose_healing
check_for_upcoming_death- I should have written this function so much sooner than I did. I had some stupid stand in at first. Obviously, if a character is about to die, this will likely change how to act (either to prevent dying or perhaps using a better damage move to at least get closer to killing the enemy). There are a lot of things that go into this function (especially turn order; a character might die in the next hit, but if they are about to double, they had an extra turn to figure out what to do)
...into the nightfall.

Dhyerwolf

  • Mod Board Access
  • Denizen
  • *
  • Posts: 4746
  • Here it comes, the story, of mankind's final glory
    • View Profile
Re: Division Ranking Algorithm: The Final Frontier
« Reply #6 on: February 26, 2025, 05:27:03 PM »
Roadmap (Include a # in front and search for)
Building Process
Lessons Learned
Included Games
Equip Changes
Boss Changes
Rankings!
Missing Games
Accuracy and How Moves Relate to Each Other
Functions
Data Storage
Considerations
Analysis

#Data Storage
Storing various facets of data to keep track of a myriad of things was really critical. Here are some of the data types and some the key storage items

DataFrame (Tables)
base_framework- Store the effect of what happened each turn (d1/d2HP, MP, ct...etc)

Dictionaries (Not comprehensive, just the more important ones)
acc_general- Store the cumulative accuracy of move_types (Damage, Status, Debuffs)
acc_specific- Store the cumulative accuracy of individual mjoves
alter/weapon_alter- Use to modify stats or move effects based on different equips
alteration_framework- Store any buffs/status/debuffs/effects that characters had, including the information on the effect and how long it would be in play
boss_general/specific- Like acc_general and specific, but instead totals accuracy being on the focusing parameters I set up (see boss changes)
charge_dict- Store if any moves are being charged and if so, when they would go off so that I could keep upcoming turn order and strategies correct.
considerations- Store any items that alter how characters act
consideration_storage/reaction_dict- Store any items that might be added to considerations after a match was over (so if a character might need extra healing, that would get put into the storage and then if they lost, it would get added to considerations). Reaction_dict is for more complicated items that are often based on reacting to what the enemy was doing
counter_status- Store whether each potential counter move could actually counter based on the qualifications (so if a counter qualification was facing:st_sr&using:healing, this would split into 3 conditions of true or false)
delete_dict/defender_delete_dict- Store any items that might need to be removed from the current actor/defender's alteration_framework
dueller_opt_ct/dueller_weapon_ct- Store which armor/weapon was currently being tested for "Equips"
dueller_opt_link/dueller_weapon_link- Store the current information about the equips being run
equip_storage- Store all the potential equips to be iterated over
move_block_dict- Store if a move had a cooldown and how many turns it would be until the move could be used again.
next_ct_dict- Store when the next_ct for each character to get their next attack would occur
stat_link- Store critical stats and features tied to a character (features might be like d1HP for dueller 1 so I knew which
store_results- Store the results of each sub-match so that I could then pick out which one should be the final result. This included data on the winner, remaining_HP, turns_needed, winning_strat, loser_strat, features_checked, how many versions_run, final_version, winning_percentage, winner_statuses and more!
store_alters- Store the results of store_results for each equip combination so that I could choose which one was the correct "final" version
strats- Store the strats that needed to be iterated over until I get to the last one to see who won overall. A few other dictionary feed into this.
strat_counts- Store which strat each dueller was on
turn_count- Store how many moves in the current strat had been processed
valid_purpose- Store the purpose each equip had so that I could check if it was actually relevant so I wouldn't run every combonation.
wait_count- Store how many turns if any someone has waited
...into the nightfall.

Dhyerwolf

  • Mod Board Access
  • Denizen
  • *
  • Posts: 4746
  • Here it comes, the story, of mankind's final glory
    • View Profile
Re: Division Ranking Algorithm: The Final Frontier
« Reply #7 on: February 26, 2025, 05:27:21 PM »
Roadmap (Include a # in front and search for)
Building Process
Lessons Learned
Included Games
Equip Changes
Boss Changes
Rankings!
Missing Games
Accuracy and How Moves Relate to Each Other
Functions
Data Storage
Considerations
Analysis

#Considerations
Considerations are features that change how a character acts on successive iterations of a current strategy after they lose. I think most of these are conceptually self-explanatory, but I think it provides a nice list of understanding of the various ways I needed to modify default behavior.

AvoidCounters
AvoidCounters+
AvoidCountersUntilMPisGone
AvoidFutureCounters
AvoidSR
BetterHealing
ConserveMP
DelayFieldStatusToLockDownHealing
DelayStatusUntilLiftingElemRes
DontDamageUnderStatus
DontPhysicalUnderStatus
DontUseDontMoveTurn1
DontUseMPonDamage
DontUseStatusTurn (Plus the turn number)
EnforceBetterDamage
EnforceShutdown
GoForBreakthroughNotIgnore
LetBrigGoFirst
LimitToBasic
MaximizeCounters
OvercomeHealing
ProceedOnDouble
ProceedWithMissing
ReallyAvoidCounters
ReapplyBuffs (Plus the Buffs code to reapply attached)
ReapplyEffect (Plus the Effect code to reapply attached)
ReapplyStatus (Plus the Status code to reapply attached)
SaveMPForDouble
SaveMP:Damage- (Plus code of move to save MP for)
SeeIfDoubleOccurs: (Plus the turn number)
SpamHealingBasic
SpamHealingAgainstMP
SpamHealingForChange
SpeedChangeBuffTurn1
SwitchFirstMoveToCounter
TryBestDamage
TryBestDamageAfterTurn99
TryBetterDamage
TryBreakThrough MagicNull/Reflect/PerfectEvade/AntiST
TryBuffingDefensesUnderStatus
TryDefensiveBuffVersusAttackBuff
TryDefensiveBuffVersusDefenseDebuff
TryDifferentStatus
TryDispel
TryEnsureCounters
TryFaintFirst
TryFewerHits
TryFreeDamage
TryLesserOfSameElement
TryMagicNullFirst
TryMoreDrainToAvoidMissingUntil (Plus a turn number)
TryMoreHealingtoBreakDouble
TryMoreStatusAgainstRes
TryNonElem
TryNullingEnemyValid
TryOtherEffects
TryOverdrive
TryOverdriveMag
TryOverdriveStatus
TryPerfectEvadeAfterAntiMagicStatus
TryPerfectHit
TryReapplyStatusFurther
TrySilenceAndBlind
TryToAvoidHPThreshold (Plus the threshold)
Turnx:Heal (Where x is a turn number)
WaitIfNeeded
WaitIfNeeded+
...into the nightfall.

Dhyerwolf

  • Mod Board Access
  • Denizen
  • *
  • Posts: 4746
  • Here it comes, the story, of mankind's final glory
    • View Profile
Re: Division Ranking Algorithm: The Final Frontier
« Reply #8 on: February 26, 2025, 05:27:37 PM »
Roadmap (Include a # in front and search for)
Building Process
Lessons Learned
Included Games
Equip Changes
Boss Changes
Rankings!
Missing Games
Accuracy and How Moves Relate to Each Other
Functions
Data Storage
Considerations
Analysis

#Analysis
There is a lot of different types analysis I thought about (individual character analysis comparing what moves they used in wins versus losses, ranking them in all stats and movetypes, seeing differences between equips and non-equips, seeing what the first three moves each character used most frequently, running unsupervised ML to group people into different buckets to see what it came up with...etc). But I need to move onto other things! I might revisit some if I ever end up making an RPG in full so that I can use some of that as potential patterning for some wicked AI. I still had written some code to start playing around so, here are some stats.

The numbers below are the average of a move type being present in winning matches (among everyone and among those who had that move type present in wins). This isn't perfect as a move with multiple effects will be included on both even if one effect doesn't matter (for example, Vinsfield has a 100% rate on Fatal status because of the trivial ID rate!)

Damage: 95.4%/95.4%
Buffs: 6.5%/40%
Debuffs: 0.8%/14.7%
Effects: 4.2%/22.8%
Healing: 9.1%/37.6%
Status: 16.2%/45.1%

Magic Damage: 41.8%/71.7%
Physical Damage: 65%/69.1%

Speed Buffs: 3.6%/53.6%

Disabling Status: 6.9%/39.7%
Disarming Status: 2.6%/22%
Fatal Status: 7.3%/47.2%
Minor Status: 0.9%/21.2%

Dark Damage: 5.9%/70.8%
Earth Damage: 3.4%/42.5%
Fire Damage: 11.3%/62.2%
Holy Damage: 11.1%/90.3%
Ice Damage: 5.2%/46.6%
Thunder Damage: 14.2%/70.6%
Water Damage: 0.9%/31%
Wind Damage: 3.6%/62.3%

And here is a sample of the top 10 character use rates for a selection of move types[/u]

Effects
                Rank  Percent
Ildon-Saga       1.0     90.5
Hellion-S1       2.0     81.0
Dacre-CSTW       3.0     80.6
Leonora-FF4TAY   4.0     72.9
Edge-FF4         5.0     57.6
Rei-Saga         6.0     48.6
Rosa-FF4         7.0     42.9
Umi-CSTW         8.0     39.6
Eileen-S1        9.0     37.8
Sheena-S2       10.0     36.2

Fatal
               Rank  Percent
Vinsfield-WA2   1.0    100.0
October-CSTW    2.0     99.3
Rei-Saga        3.0     97.2
Kylin-Saga      4.0     94.9
Garland-FF9     5.0     94.6
Ramirez-SoA     6.0     94.0
Lita-BoD7       7.0     93.3
Wugui-SH        8.0     92.1
Dehaui-SH       9.0     88.7
Edgar-FF6      10.0     86.8

Speed
                Rank  Percent
Bob-S2           1.0     98.1
Marle-CT         2.0     94.7
DEM-BoD7         3.0     90.6
Leonora-FF4TAY   3.0     90.6
Fuse-Saga        5.0     87.5
Umi-CSTW         6.0     84.9
Momo-BoF3        7.0     59.2
Asellus-Saga     8.0     52.8
WhiteRose-Saga   9.0     52.2
Rouge-Saga      10.0     52.1
...into the nightfall.

Dark Holy Elf

  • Moderator
  • Denizen
  • *
  • Posts: 8178
  • Well-behaved women seldom make history
    • View Profile
Re: Division Ranking Algorithm: The Final Frontier
« Reply #9 on: March 09, 2025, 04:48:22 AM »
Ooh, this is a very cool read! I kinda toyed around with the idea of something vaguely like this... probably around two decades ago, during the RPGmon days, so kudos to you for actually doing it. Sounds like a lot of work.

All sorts of random thoughts:

-Are there any places where you think the results you got are essentially "wrong", or do you generally trust the results more than your intuition? I'm very skeptical about Vinsfeld being that high, because I just can't hardly ever see him champing a Middle field, though I do agree he's probably a touch underrated historically. Dehuai's another one that jumped off your list to me as "wait, what?". There's no world where he should be above Ghaleon, and that's speaking as someone who views Ghaelon as a slug in a CTB sense. Speaking of which, Ghaleon and Royce also obviously shouldn't be in the exact same place; it's interesting that they never faced anyone who differentiated them (even if you view their offence as effectively identical, surely Ghaleon's significantly higher HP should tilt some fights).

-The lesson about "complete packages" is also an important one. The most memorable example for me is still Rika, who a lot of us (including me) at first thought was borderline H/G material (at best?). And it makes sense, because she's a got a H/G-borderline-level buffing/healing game and a also very fast ID, which is also is often enough to get someone to H/G. It wasn't until later that we figured out that the two strategies are effective against very different types of opponents and it's the combination that pushes her to straight G. Another good example of being a more complete package is status immunities being far more valuable to folks who are hard to defeat with damage (e.g. good healers/buffers or just people who are already very durable). Giving status immunities to someone

-I'm still a bit surprised that Tim is that good though. To some extent almost all the Brig 2 fighters are a bit higher than I'd have guessed, and I'm not sure if I'm underrating them or if you scale them in a nicer way than I would (monsters in the averages?), but yeah I would have assumed Tim's lack of status resistance or overwhelming durability combined with lack of answer for durable bosses starts losing him a bunch of fights in the upper half of Heavy. Maybe not!

-The idea of holding move rarity against bosses is interesting. One thing I've toyed around with is punishing bosses with rare moves more if there's a valid in-game reason for them to use others. Like... if a boss has a move that does 80% ST which is relatively rare, it would matter to me what the boss is doing otherwise. If most of their other turns are taken up with 40% MT, or status moves, that's fine! There are valid reasons for the boss to fight that way. But if most of their other turns are 40% ST, then I start to wonder if there is a reason they don't use the move more (e.g. it's secretly a random activation on an otherwise weaker attack, similar to a crit). But I think your way sounds pretty elegant.
One place I might disagree with you though is that in general, the harsher I get on boss AI, the more I'd want to dial down how much I scale their HP. I've long been of the view that "being nice to their AI, for simplicity reasons" (i.e. not knowing the probability of the moves) is one of boons bosses get in exchange for losing a lot of their HP.

Erwin Schrödinger will kill you like a cat in a box.
Maybe.

DjinnAndTonic

  • Genie and Potion with Alcoholic Undertones
  • DL
  • Denizen
  • *
  • Posts: 6950
  • "When you wish upon a bar~"
    • View Profile
    • RPGDL Wiki
Re: Division Ranking Algorithm: The Final Frontier
« Reply #10 on: March 14, 2025, 03:35:26 AM »
This is really fascinating! My programming knowledge isn’t quite high enough to follow all of the details, but it’s pretty interesting how you managed to like… create an entire list of every viable DL strategy in the process of writing this.

I noticed that you left off Limits as something you wanted to factor in. This strikes me as the most common DL effect that isn’t being covered so I’m wondering why you deemed it too troublesome to work with. Does it really add that many more layers of complexity?

Are there non-DamageTaken Limit styles that might be easier to work with?

Dhyerwolf

  • Mod Board Access
  • Denizen
  • *
  • Posts: 4746
  • Here it comes, the story, of mankind's final glory
    • View Profile
Re: Division Ranking Algorithm: The Final Frontier
« Reply #11 on: March 16, 2025, 07:03:38 PM »
I'm glad people enjoyed reading this!

To NEB

I don't think there is any categorical place that the results were "wrong" and I definitely don't trust my intuition (too many anchor points of bias still plus I got to review a whole horde of ways my intuition was wrong in many ways; granted, there were already enough inconsistencies my rankings that I wasn't super surprised especially when I ranked a game with a lot of duellers and I wasn't even consistent within a game). I checked basically every match result except for the last couple of games and the boss rush to be sure that everything was working as I would expect (although there are some matches where I just didn't bother to make corrections; generally, when it really just effected 1 match and there was too much to do). I did make sure that bosses were working the way I wanted them to and did check a good chunk of their matches to be sure. Since we scale bosses differently, I could definitely imagine that if Ghaleon and Dehaui were under your views, that Ghaleon would do better. I think that would make Vinsfield worse as well under your views. I agree that thinking about Vinsfield as a Middle champion is weird, but at the same time, my rankings aren't quite the same as DL ranking since mine factor in facing literally everyone and the DL rankings aren't necessarily linear in the same way (although if I look at my rankings around division borderlines, they do seem generally reasonable). It's possible that someone like Vinsfield would sweep Light and low Middle basically and grab some unexpected wins against against people who rank a lot higher than him, and is a little worse against high Middle duellers than the number suggests (or not! I'd really have to run some type of analysis to be sure). Granted, we've also seen some DL champions that just got a very favorable run, so you never know. To some degree, it's basically a question of whether he runs into a healer or not. Having looked over the match results, I do conceptually understand why Vinsfield placed so high; he's someone where it's easy to focus on the screaming weakness without always seeing some the strengths might overcome that.

Ghaleon and Royce actually aren't identical in wins/losses, they just happened to get the same numerical rank. Royce a good chunk of better damage for me, which is what makes up the difference of the HP.

Yes, we do have different scaling for Brig as I do factor in monsters to some degree (my rule for inclusion of generics is when they make up more than half your party).

I do definitely agree that it should matter what else the boss is using. I just wanted to stick to some "clean" formulation (for all that if you don't know exact percentages and how/why bosses use moves, it's not necessarily very clean and I just had to hope that whatever use rates I witnessed were accurate enough. Then there are question marks like what is Ghaleon's AI doing???????). I find the HP scaling to be a separate issue personally. HP scaling is to balance out facing only 1 enemy, whereas the the AI control is to try and limit them to something resembling the in game patterns/performance. So the two parts together hopefully model their total in game performance a bit better for all that Tal's boss view would be better than HP scaling (but also a total non-starter for this system). At least, I did have some way that boss MT moves now have some importance if obviously not as important as under Tal's views.

To Djinn's note on limits, yes, they often would be a bit headachey (not always). So MP generally works one way. You have all of it to start, you use some portion of it, maybe eventually you use so much and you don't really have any left. I craft general strategies to try and make a dueller use less if they lose and are basically out of MP, but only in very rare cases does it go up (Umimaru, Vivi, Leonard for included duellers who have actual move choices that raise it; Amarant too, but that's more a secondary effect) and in would general, I only needed to have it go up when they were basically all out or unable to use a move because of it. Limits add on a whole new layer of strategy. An HP-based limit is doable, but if it's building up a bar (which extend to things like Grandia SP), then there can be an additional layer of strategy about building the limit itself. Even worse if it means that there's an additional layer of strategy on both sides of the match (so limits where doing and taking damage might build the bar). Also, there are so many places where resources are checked that adding more code to all those places wouldn't be fun. Definitely some limit games are doable with a minimal pain level. FF8 would actually be straightforward, FF7 and VP (limit bar is basically an automatic function) I can fudge, although it's possible I would need to write new strategies for HP limit avoiding (maybe...it's possible that the work I did when checking Slash's results and making sure duellers didn't mindlessly attack him into his more dangerous HP phase when they could chip and avoid would extend perfectly). I just wanted to deal with simpler stuff first (or what I thought would be simpler as limits clearly would have been simpler than charge times) and then I just needed to move on before I fell into this hole forever. Also, whenever you start writing new strategies, it can sometimes push-out/override other strategies, so it can mean a lot of tailoring even it seems like it will initially be straightforward.
...into the nightfall.