Relic Values
Event Choices
Shops
Campfire Actions
Potions
Encounters
Charts
Your Runs
Mastery your highest ascension won with each card & relic in your final deck
Winstreaks
Unbeaten Seeds
Card Ratings
In-Game Mod Spirebird Stats — community ratings on your card-reward, relic & event tooltips
A lightweight Slay the Spire 2 mod that shows the same Elo / WAR / win-rate numbers from this site directly on your in-game tooltips. Set up your config below, download, then unzip the spirebird_stats folder into <Slay the Spire 2>\mods\ and launch with mods enabled.



Dev Notes
June 20th, 1.2 Release
Backend
Bought a Server, but haven't switched over to it. I have maybe a week before I need to start switching some things to SQL or changing how I run them. Procrastinating on that for now, apologies if the site stops updating at some point, but at least it shouldn't crash outright.
UI/UX
Logo and Title Graphics! Had one of the great artists in the community put together some art for me. MarthaClare.art to see more of her stuff.
Otherwise didn't do a huge amount here this week.
Data
Lots of plodding through data errors. Fake Merchant was being treated as mod content because I set up the things encountered in my own runs as the main source of truth on what was in the game, and I still haven't seen the Fake Merchant xD. Wax Relics are apparently reported in the same way regular relics are reported but plus a tag saying they're Wax, so they were being included in the stats for the regular version of the relic instead of separated. Stuff like that.
Big decision point I should decide what to do with at some point: I'm currently leaving abandoned runs out of the data sets, which is a lot less messy than anything else but does result in people not having runs they abandoned included in their data. Including them all feels like it'd result in getting tons of runs people abandoned on floor 2 when testing whether or not a mod worked and stuff like that, so I was thinking maybe I'd include only ones which reached Floor 6 or later and call them losses? Simple enough to code, but curious what other people think, as I don't know how y'all tend to use the abandon run button or how y'all would like to be able to filter them in/out of the data you're looking at.
Statistics
Big addition this week is the Bespoke statistics page, which has custom charts for different cards and relics. On it you can see things like how much Block Genetic Algorithm tends to make by the end of the run, or how long it takes for Wax Relics to disintegrate. This is a fun thing to add to and I'm expecting to continue adding a few of these every week for the foreseeable future. Let me know if you have any particular requests you'd like to see!
As-of publishing this the previous Nav bar without it is still cached on Cloudflare, but that should fix itself in the next 24 hours or so. https://spirebird.com/bespoke.html is the direct link. Please excuse a bit of jank as I work out exactly how I want it to look and present everything.
Also added a normalized Delta Inclusion Skill for Relics, since common relics were all getting picked more often by more successful players (due to their runs getting further on average). That should show more valuable data on which Relics more successful players tend to prioritize, although I'm a bit concerned that at this point I'm pretty much only looking for signal in shop purchases and a few events. It'll be live whenever the next data calculation finishes, looking forward to seeing what it says!
It's a bit of a weird feeling to know that I spent as much time working on this in the last week and a half as usual, but to feel like compared to how much is already on the site, the changes and improvements I made are barely visible. Site got big quite fast!
Charts
Cluster charts are live! I made a YouTube video going over some of them. These were a fun little 36 hour bender. Learned a lot, but my knowledge was kind of starting from scratch, so there are definitely some changes I'd like to circle back to now that I've gotten some great feedback on them from y'all! There are some Math/Stats/Data majors in my audience, who would have guessed!
Also, again, the Bespoke stats page has a bunch of new charts on it, and I set up some systems on the backend to make those easier to create more of.
Leaderboards
If you have the Spirebird Stats mod installed, you can now click a button in-game in the character select screen to launch the highest-expected-wins Unbeaten Seed for that character. Hopefully that'll be fun for some people! We beat a Necrobinder seed which took us 15 attempts a week ago!
Mod
Got the Mod up on Steam Workshop!
As part of this, I had to give up on serving the customization via the website, so it now lives in the config file which ships with the mod.
If you're downloading it via Steam Workshop that'll go into your %appdata% where data for Slay the Spire 2 lives. (I can't put it in the same folder as the mod through Steam Workshop because Steam will overwrite it with a fresh config over and over again).
Took the chance to give you some more flexibility when I did this refactor. You can now do things like change the order of stats, and change (or delete) the labels on stats, or change which color counts as "good" and which is "bad" for conditional formatting (using Hex codes). Take a look at the Config file on a fresh download and it will hopefully walk you through everything fairly clearly.
Monetization
Keeping this section here because at some point I would like to offer people something worth charging for, but as-of now I can offer everything on the site pretty much for free. I think at some point I might try to work out how to offer a subscription model which lets you cache your stats on the site every time the calculations run, so you don't have to wait for pages to load when looking at your personal data, but at the moment I can't really think of anything else that feels reasonable to charge for.
#1 priority is to make the experience as good as I can for someone using the site for free, and once I feel more like I've gotten to that point I might work out something. I assume some money is coming in via people subscribing on Twitch or watching videos on YouTube or whatever, so that's all fine for now. I appreciate your support if you're one of those people!
June 9th, 1.1 Release
Backend
Y'all crashed my PC ~15 minutes after I posted a video about this on YouTube!
Initial change here was to switch to Workers which wouldn't bring the site down if they ran out of memory, but that only bought me a couple of days before I was going to run out of system RAM total xD. So then I had to rewrite all the calculations to stream instead of loading the run .json's into memory. Should survive for a while before there are any new problems now.
There may be some rounding error changes to data from this but for the most part it's an invisible change.
I am still running this on my personal computer, have a dedicated server getting delivered later this week which I can hopefully set up and transfer over to seamlessly.
UI/UX
Now that I have a bunch of data, I've been trying to work out what the best way to actually make it accessible is.
Big change is a new Nav Bar. It was getting too wide already, and I want to be able to fit a few more features on it in the near future. Mousing over a category in the Nav Bar now brings up a list of the subcategories within it, and you can even see options within that. For example if you want to see the highest Elo cards in the game you can mouse-over Stats and then mouse-over CR-Elo. Clicking on CR-Elo will then take you to the usual cards page, pre-sorted by CR-Elo.
I decided to sort these based on which options I saw users using the most, which might get weird if it results in them changing places regularly. I'll keep an eye on it, but it seemed like a principled and fun way to do it to me.
Also: the search bar on the Nav Bar is now a search bar rather than a duplicated filter box. Seems more useful!
Data
Got hundreds of thousands of runs from over a thousand people, which was awesome but meant that there were modded entries in datasets, patches which had never been released from people playing on private branches, etc., so went through and set up inclusion-lists for many fields. Uploaded runs containing content outside of the inclusion lists will still show up on your profile in "Your Runs", and you can even browse the data in the "My Stats" view of data pages, but won't be added to the Community Cohorts, so they won't show up for anyone else anymore.
I suspect there are still things I've missed, so if you see stuff which shouldn't be included in the Community Cohorts please let me know via the Discord! (discord.gg/jorbs)
Also added the ability to delete your data. This is a full wipe of all runs uploaded attached to your username for now, just wanted to get the ability to do it to people ASAP rather than messing around with nuance.
Statistics
Because win rates aren't static, and this is data on a population improving rapidly at the game, WAR was being generated artificially by people whose win rates were rising. Did a refactor of the WAR equations which keyed off the observed win rates given expected win rate instead of just expected win rate. If people whose expected win rate is 20% actually win 22% because so many people are improving, WAR will no longer be handed out to all the cards they're picking. Hopefully that'll address things like many Common Cards having high WAR in the A10 dataset but low WAR in the A10 >75% dataset, stuff like that.
I also wanted to make it more clear that WAR is generated per user. If one user generates 5 WAR for a card based on their own play, that's summed in the community pool. I thought it'd be fun to generate WAR on a community level as well (i.e. it's based on the expected win rate of the community instead of yourself), so I've added cWAR and cpWAR (community WAR and community pick WAR) to the data.
Charts
I had hardcoded some charts I was serving, but with a better sense of which parts of the site are expensive vs. cheap to run, I'm pretty sure I can offer chart views for all the stats on the site. The UI/UX is going to be sketchy on this for now (not going to refine until I see it works at all!) but you should be able to make Scatter and Histogram charts for pretty much all the different stats I'm calculating on the site now, and I also added a view where you can see a grid of charts for a particular stat.
Also added the ability to choose which values to freeze axes to, as my assumption that freezing them to the highest values in the data you were looking at was challenged by 1) which data are you looking at? If it includes data not on the current chart how do I decide which data not on the current chart matters/doesn't matter and 2) someone took like 1,700 damage from an Act 3 Boss, which is very impressive and made it very clear that I needed to let people choose where the axes ended.
Leaderboards
Folded Unbeaten Seeds into a "Leaderboards" category, which contains the Unbeaten Seeds list and the new "Winstreaks" list.
Winstreaks are calculated per card, with users who contributed and who have consented to being shown on public leaderboards noted. So if 25 A10 runs in the >50% est. winrate cohort which contain Footwork are wins in a row, Footwork's best winstreak might be reported at 25 for that cohort, along with a list of users whose wins were contained in that winstreak.
Can sort by best winstreak and current winstreak.
I am not tracking which user ended the winstreak, that feels like it would be mean.
N.b. Winstreaks are tracked if they've ever been calculated. So if Footwork won 25 runs in a row on April 24th, but then a new user uploaded an April 24th loss, the 25 winstreak would still stay on the site, and if they uploaded an April 24th win, the winstreak could extend to 26, even though April 24th happened in the past!
Mod
Was super happy to get the mod working for people, now time to improve the experience of using it!
First steps:
- Made it clear which cohort you are observing in hovertips on Relics and Events, as I'd only renamed the Card Hovertips previously.
- Added the ability to put colored borders on the hovertips based on which cohort it is, as well.
- Added conditional formatting within Cohort (just higher numbers green, lower red, for now).
Reconfigure and redownload the mod to get these features working.
Monetization
Twitch integration to gate some searches was a defensive experiment which I haven't seen too much evidence that I actually need it post-refactor of the backend, so unlocked all search/data features for all accounts.
Still asking for Twitch integration to post comments on Card/Relic pages, as that's more about input quality and moderation burden than anything else, and I want to remain defensive on that front while I'm trying to get everything up and running.
