calculations:research:card-level

Card Level (Research)

How To Test Card Level

Since all stat values at all levels are hardcoded in the game, we can verify formulae by simply comparing its results with what the database says. Unfortunately, it's impossible to see these in-game (unless you level a card one by one without any Skill Tree or Bond bonuses), but the Kirara database allows you to get all of them via their API.

Get a card's data from https://allstars.kirara.ca/api/private/cards/ordinal/X.json, where X is the School Idol No from the game (or the database pages). The stats array will contain the exact stats for every level, up to the unused Level 100. — Suyooo 2020/10/07 18:16 UTC

Autumn Hanayo's Appeal

The Appeal of Autumn Hanayo at Level 1 is 1304, and at Level 80 it's 2173. The difference is 869 - even divisible by 79 to result in a gain of 11 stat points per level! Wow! Since these are scaling linearly, that means it should just be 11 more Appeal every level right?

Nope. Going to Levels 6, 11, 21, 41 or 46 increases Appeal by 12, and Levels 7, 12, 22, 42, 47 only increase it by 10. This is the only even division in the entire game right now, and it's dumb as hell. Thanks Krab? — Suyooo 2020/10/07 18:08 UTC

Exact Function For URs

def ur_stat(x, stat_80):
    if x <= 80:
        stat_diff = floor(stat_80 / 2.5 + 0.6)
        rounding_correction = 1 if stat_diff / 79 % 1 == 0.0 and (x == 6 or x == 11 or x == 21 or x == 41 or x == 46) else 0
        return stat_80 - floor(stat_diff * (80 - x) / 79) + rounding_correction
    else:
        return stat_80 + ceil(stat_80 * (x - 80) * 0.02)

Why does stat_diff need a magic value 0.6 added to it? Why is the only even division in the game full of rounding errors? Who knows, but this function gives the 100% correct values for all stats at all levels for all URs as of now (horribly breaks on SRs though) — Suyooo 2020/10/07 18:08 UTC

Update: Still 100% correct and I hate it — Suyooo 2021/01/07 09:23 UTC

Other Approaches

Starting from Level 80 stats doesn't seem to work that well, so here's some other ideas:

  • Start from unused Level 100 stats? (doesn't seem right - $\frac{5}{7}$ and $\frac{3}{7}$ are kind of awkward fractions) — Suyooo 2020/11/30 20:21 UTC)
  • Stat distribution is always in full percent, no decimals needed… this is probably what's being designed. Is there a way to get a full count of available stat points and correctly distribute it from this distribution? (this is looking good — Suyooo 2020/11/30 20:21 UTC)

Suyooo 2020/10/25 23:48 UTC

Material Dump

Testing spreadsheet: unit_level_test.ods

Comes preloaded with Autumn Hanayo data. It's designed to work by doing the basic math in the interp/X_guess columns, and you can play with rounding in the corr_interp/corr_X_guess columns. You can also changed the corrected stat distribution in the header if you don't want whole percentages, and the range of the interpolation as well. Cell G4 can be edited if you believe the lower end of the interpolation should be rounded in some way.

Helper script to get level data: get_level_data.py

Grabs level data from the Kirara database and outputs it as CSV, so you can just paste it into cell A4 to overwrite the values and test other cards. Use it by executing python get_level_data.py [id] with [id] being the School Idol No. from the game or the URL on Kirara.

Suyooo 2021/01/07 09:23 UTC


Contributors to this page:
calculations/research/card-level.txt · Last modified: 2021/02/18 17:06 by Suyooo