Scoresheet 2.0 is epic, and mostly done... (Patreon)
Downloads
Content
Last month I gave a preview of our new upcoming scoresheet format, at which point it was just a mockup (including uncertainties and various other related notes of mine). Well now the format is not only finalized, but fully implemented!
I've attached a sample scoresheet, just a short test run up to -5/Factory, which is essentially spoiler-free. You can download that if you like to go along with my explanations here.
General Notes
Organization
One of the obvious changes is that it's better organized.
The bulk of the original scoresheet, born in 2012, was its long and uncategorized list of stats. Over the years it simply grew longer and longer as I tacked on stats for new mechanics and content, growing from 79 in the 7DRL (2012) to 328 in Alpha 1 (2015) to 818 in Beta 8 (2019).
Now in addition to the preexisting "non-stat" categories like Parts, Peak State, and Favorites, the stat list itself has been broken down into 15 categories and reorganized as necessary to match them.
Maybe I'll put together a diagram later comparing the composition between the old and new scoresheet, though for now a concise list of specifically the stat categories will suffice. We now have separate sections for Build, Resources, Kills, Combat, Alert, Stealth, Traps, Machines, Hacking, Bothacking, Allies, Intel, Exploration, Actions, and Best States!
Categorization makes it easier to both find and understand relevant data. Plus it looks cooler :)
Per-map Data
The other super obvious change is that there's a ton of data :P
Sure we had quite a few stats before, but now we have them not only for the entire run, but broken down at the map level. This offers far better insight into how the run played out.
I decided to store per-map data for almost everything now. Originally was going to limit detailed breakdowns to a subset of the stats, but on implementing the per-map data recording (the very first thing I did since it would be fundamental to scoresheet 2.0), I did a quick test assuming a late-game run with a ton of stats and noticed it wasn't a big drawback in terms of save or text size, and I believe the new leaderboard database shouldn't have any trouble handling it all, so why not!
There are only a small handful of exceptions that aren't stored on a per-map basis, entries for which it would make no sense to do so. Storing per-map data for practically everything also completely avoided the subcategorization dilemma I was noting in my mockup notes earlier.
One thing I didn't add to the scoresheet is a list of every part attached, or even every build at the end of each map. There's just no great way to do these, and compared to the amount of space it would occupy this information would be difficult to parse, anyway. I think the new automated class system will work nicely for that purpose, and that in itself also occupies two new sections in the scoresheet I'll talk about below.
"Per-weapon damage" and other details discussed before in the context of an expanded scoresheet is another of the few things that were left out for similar reasons. I thought of somehow combining it with the Favorites section, but alone this information doesn't seem as valuable as it would be in comparison with all weapons used.
Sub-subcategories
Stats can now make use of a second level of indentation.
Originally it was only possible to have main stats and sub-stats, but that lead to a couple problematic situations where (mainly because stat names are kept from being too long) some stats really needed to be indicated as a subcategory to an existing subcategory and were therefore prefixed with '^', which not everyone could understand. The new system fixes that by allowing more indentation. I'm not going overboard with it, but it is needed or advantageous in a few situations so I expanded the use of sub-sub-stats a bit.
Performance
The score structure hasn't really changed much. I didn't really come up with an all-around better approach for scoring, so the existing system will remain, although it was expanded slightly with the addition of Regions Visited. Rewarding exploration is a good way to encourage it. (Of course there are already in-game rewards for exploring many areas, but it can't hurt to further formalize that reward in the scoring system.)
The bonus point system will continue to be an important source of points for most runs, but it's flexible and can be adjusted/expanded more in the future. Notice that I moved that breakdown right up under the Performance section.
No changes to Parts, Peak State, or Favorites, which all still serve their purpose just fine.
Stats
Stat-wise I've improved on some of the existing data, as well as added quite a few new things. I'll talk about a few categories in more detail here...
Build
Much of this section is new, adding a breakdown of all slot evolutions, as well as info on subtypes for attached parts and slot usage. Combined with the per-map data, we'll be able to have a pretty clear picture of how builds evolved across the run as a whole, in a much more condensed and readable format than if we had list after list of build loadouts or some other highly detailed approach.
Instead, after the detailed data we also get a summary of the player's approximate build classification for each map (where multiple build classes were used, which is common, it picks the one that lasted the longest). And following that is a list of most popular classes throughout the run, ordered by usage. As you can see, in my sample run I was being my normal Cogmind self ;)
Kills
With scoresheet 2.0 we finally get kill counts for more specific robot types! To simplify the code, this system had always relied on Cogmind's internal robot class system, which is essentially what you saw appearing on this list before. The problem is, the game has grown so much since then and you can now eventually meet some rather special special variants that shouldn't really be tallied along with the others--like not-your-everyday Grunts and Programmers, but there was no way for the system to distinguish them, so some of the most powerful hostiles in the game were being lumped with the average ones. No more! Now we'll finally be able to see real kill counts for the rest of the special robots out there...
The "NPCs Destroyed" list also now includes all uniques (as well as where they were killed), so yes that means we'll also have a record of the nefarious exploits of those out there murdering bots who should otherwise be powerful allies ;)
Hacking
As of Beta 8 the scoresheet only records Terminal hacks, but that's been greatly expanded to include every possible hack--all machines and even unauthorized hacks, too.
Remember here that a lot of entries don't actually show unless they're non-zero, so there are quite a few more possible data points than what you see in the sample run, hacking and otherwise.
Actions
I can see some interesting analysis coming out of looking at a breakdown of actions across a run. It's a pretty fundamental kind of data, but was actually rather challenging to implement because Cogmind didn't originally need to distinguish between action types in such a granular way. Anyway, we have it now :D
History
This full history of events is going to be one of my favorite sections (along with the new class system!), but is incomplete so I'll talk about it later.
The "Last Messages" from the message log are often found in morgue files for other roguelikes, and while I don't think they'll be as valuable or interesting in Cogmind as they are there (due to de-emphasis of the log), it won't really hurt to add them and could at least in some cases help paint a picture of what was happening just before The End, especially in combination with the map.
Map
I've already written about this new section before.
Schematics and Fabrication
We'll now have a full list of schematics, both items and robots, including also how and where obtained. That plus the fabrication list showing where each part was built, and whether or not it was preloaded, and we'll get a much better idea of how fabricated builds are coming together.
Game
Yay, the data is now aligned :)
I also converted play time into hours, rather than minutes, since people generally wanted to know it in terms of hours, although that means it's now a decimal. While it's better to work with whole numbers, I also wanted it to be a single number instead of showing as h/m/s... Any opinions on that?
Dumps
Mid-run stat dumps are also fully functional, and feel great especially while debugging since I just hit the hotkey and it produces a file, whereas before I always had to save, self-destruct to get the scoresheet, then continue the game and load back where I was.
In fact, the main scoresheet I'm sharing for this post was produced by dumping it rather than actual self-destruction (I just manually replaced the Result text :P). The original dump "result" section showed this:
Dumps not only show your current class (which was where the idea for that system originated in the first place), they also analyze your current situation based on a bunch of factors and rate it on a scale from "wonderful" to "dire."
The only thing the scoresheet is missing as of this writing is the actual History section content. The architecture is in place and functional, but it'll take some doing to insert records of all the possible events I want to include there...