Reading the numbers
What a comparison can say, the control beside each number, and which battles count in a rate.
Comparisons, and what a battle proves about its own length
A battle row holds both sides, and most of its numbers only mean something
as a difference. me.vs makes them, each as me minus the one
opponent:
| field | what it says |
|---|---|
crowns |
the crown margin |
deck_level |
the level edge in THIS battle, from the cards as played - not a career average |
starting_trophies |
on ladder, what matchmaking paired you with; on river race rows each side's Trophy Road count, which war matchmaking does not pair on |
tower_hp |
hitpoints REMAINING on both sides: a margin of victory only between equal towers |
tower_level |
the tower troop's level edge; a tower one level higher starts with more hitpoints (1,564 more across the three towers at 16 against 15), so when this is not 0, tower_hp carries that starting gap too |
vs is null on 2v2, on duels (whose sides played different decks per
round) and on boat battles (a defense against an attack), and a field is
null where the record lacks one side's value. Read
these before the absolute numbers - a leak, a level or a tower total says
little except against the other side's.
inferred.duration is what the signature PROVES about how long the
battle ran. The log carries no duration; the game's clock supplies the
bound. A King Tower is the only way to end before regulation, and overtime
ends on the next tower, so:
| crown pair | duration | why |
|---|---|---|
| either side has 3 | at_most_s 300, no floor |
a King Tower fell, so it ended then |
| unequal, neither 3 | at_least_s 180, at_most_s 300 |
no King Tower, so regulation ran; 3:00 or overtime is not recorded |
| level | exact_s 300 |
overtime expired without a tower falling, and the tower-hitpoints tiebreaker resolved it |
basis is the rule that fired: king_tower_fell, regulation_ran or overtime_expired. duration is null on duels (crowns sum over
up to three games) and boat battles (no overtime), and set only on
head-to-head 1v1 types. It is a bound, never a measurement: nothing here
times a battle.
The control next to the number
A win rate is not interpretable without knowing who it was earned against, and the record knows. Matchmaking differs by mode: river race battles are drawn from the five racing clans, not from players at your trophies, and a strong player in an ordinary clan routinely meets opponents a level or more below them there (the record has seen gaps past +4), while Trophy Road pairs by trophies and rarely hands anyone a full level. So a deck played only in war looks like a star and a deck played only on ladder looks weak, whatever their quality; that is the default shape of the data for anyone who plays both, not an edge case. Every aggregate that serves a win rate therefore serves the controls beside it:
battles_decksanswers a page at a time: each row names its cards in one line (card_names, forms prefixed,tower_troop_namebeside it) with itsarchetype_label,total_deckscounts the whole list andnext_offsetstarts the next page (null on the last). A row'sdeck_hashpassed back returns that one deck with its cards, tower troop and archetype in full, its share still over the window's battles.battles_decksrows carrymodes(battles, wins and losses per mode group),dominant_modewith its share, andmean_level_gap: the deck's average card level minus the opposing side's, averaged overlevel_gap_battles(positive means you outlevelled them), withown_mean_levelandopponent_mean_levelbeside it. The response carriescomparable,falsewhen two returned decks were played predominantly in different modes or at mean gaps half a level apart, and the first note then names the rows that clash. Rank decks only within one mode (passmode) and at similar gaps; the record describes the gap and does not adjust for it (Methodology).battles_cardsrows carrymodes(a count per mode group) andmean_level_gapover the battles the card appeared in; the response carriesmodes_in_window(battles and mean gap per mode group over the whole window) andcomparable. A card met mostly in war games inherits war's matchmaking, so a card table pooled across modes is a mode table first; passmodebefore comparing one row's record with another's. A row needs three battles (applied.min_battles). Rows come most battles first;sort: "losses"puts the most battles lost first, ties to the most battles, so a single loss never leads the list. Either way the rows and their counts are the same; only the order moves.battles_opponentsrows carrymean_level_gaptoo: your deck's average card level minus the opposing side's over the battles with both recorded, null when none were (a duel has no single deck). Itssorttakesbattles(the default),last_seen,winsorlosses, andmin_battlessets the fewest meetings a row needs.battles_performanceandbattles_comparetakemode; with none they return the record split per mode group undermodesbeside the pooled one, and a note fires whenever the battles span more than one group, because the pooled win rate mixes different games. Quote a group's line, not the pooled one.battles_performancecarriestrophy_floorwhen the window holds ladder battles and the arena's floor is known (seetrophy_change;floors[]lists every floor the window stood on, since a climbing player stands on several andflooris the most recent, with its own counts), and withgroup_by: "week"marks every bucket the window clips withpartial: trueandcovers {from, to}: adays: 30series usually opens on two thirds of a week shaped exactly like the whole ones, and that row anchors the trend. Compare partial buckets bywin_rate, never bybattles, or snapfrom/toto Mondays.players_summarycarrieslast_30_days.modes(the window's split),top_deck.modesanddominant_modeon both decks, andtrophy_floorwhen the window holds ladder battles; the deck comparability note fires when the top and best decks were played in different modes or at gaps half a level apart, a note says when their ladder trophy ranges do not overlap, and the floor note fires when a loss touched the floor.clans_standingsmembers carrymodes,ladder_battles,mean_level_gap(overlevel_gap_battles),log_recordedandrecorded_since; the response carriescomparable(falsewhen two ranked members' records come predominantly from different modes or from gaps half a level apart, the first note naming them) andbasis(recorded, orroster_and_war_onlyfor an activity-scope clan whose members' logs are not recorded, where every count is zero by construction for a member whoselog_recordedis false).net_trophiesisnullwhenladder_battlesis 0.battles_trendsweeks carrymodesand, when the window clips a week,partial: truewithcovers {from, to}, the same marksbattles_performanceputs on its weekly buckets.
The notes fire on a detected confound, not as a standing caveat: a
battles_decks read within one mode whose decks met similar levels carries
no warning and comparable: true.
Decided battles and denominators
A decided battle is a head-to-head battle whose outcome is a win or a
loss. Draws, unresolved outcomes (the game reported no winner) and boat
battles are not decided. Every rate a battle tool serves names its
denominator:
win_rate = decided_wins / decided_battles, wheredecided_battles = decided_wins + decided_losses. Boat battles and draws are outside both sides of that fraction.winsandlossesare the plain counts and do include boat attack wins, sowinscan exceeddecided_wins.three_crown_rate = three-crown wins / head_to_head_battles. Duels and boat battles are excluded from both sides.battlesis every recorded battle of the player's own in the window, whatever its kind, boat defenses excepted (Duels and boat battles), sobattlesminusdecided_battlesis draws plus unresolved plus boat attacks.- Duel crowns are summed over rounds, so
crowns_forandcrowns_againstmix units when a window holds duels;duel_battlessays how many did. - On a weekly row (
battles_performance group_by: "week",battles_trends),trophy_mode_battlescounts the Trophy Road and Path of Legends battles played, plus any other battle that reported a trophy delta, andtrophy_battlesthe ones for which the game reported a trophy delta: a loss standing on an arena floor reports none (seetrophy_change), sotrophy_battlescan be lower than the trophy-mode battles played, and only losses drop out.net_trophiessumstrophy_battles. Divide bytrophy_mode_battlesfor a ladder record; a note names the weeks where the two differ.
battles_trends counts the selected player or clan members' own battles week by week, every kind except boat defense. Its win rate is wins / (wins + losses); a mode filter keeps different games separate. Clan membership is current at the time of the call, so a historical window describes today's members.