💦 CREATE AND FUCK YOUR OWN AI CUMSLUT 🔥 TRY NOW ♥
Create AI Cumsluts 💦
May 8, 2019

An Automated Build Classification System is born!

The new scoresheet format is almost complete, but there are a few remaining bits to take care of. New bits. Being mostly done with the content I wanted to go ahead and get the in-progress character dump feature working (i.e. manually output a scoresheet for the current run before it's complete), and one of the main things I wanted to do specific to the dump is provide a short little one-sentence analysis of the current situation at the top, specifically where the "result" of a run is normally printed.

The situational summary would essentially have two elements, one describing your build, and the other describing your condition and surroundings. Really simple stuff.

So I started out thinking the first element would use terms along the lines of what we've come to be using in the community, e.g. "flight hacker," "infowar combat," and so on. Here were the initial notes I sketched out:

It started to look like it'd be in the form of [prefix][main][subtype], with the possibility of other hybrids mixed in there and whatnot. It's a practical approach, but also kinda boring.

So I thought what if we had it instead detect builds as something more akin to classes? The focus would still be on clear, functional names rather than creating whole new ideas unique to Cogmind or anything crazy, but it would be more fun than the dry (and even more limited) terms we normally use.

Unlike many roguelikes/games where you select a class to play, as you know Cogmind is dynamic, flowing experience and it's interesting to explore classification of these builds as they happen.

To this end I came up with a chart of characteristics and 13 names to go along with them. In the code, a series of conditional statements determines which "class" most closely applies to the build.

Then, since a single name would have been too limiting and many more creative combinations can be captured via a two-name system (kind of like multiclassing?), I came up with an additional 11 special designations that can more specifically describe some aspect of the current class. 

Unlike the main designation, this one is determined via a point system. Your build earns points in each category based on its parts (and sometimes other factors), and whichever category accrues the most points is applied as a modifier to the class. If nothing applies very well, then only a single base class is used.

Cogmind is not constantly recalculating your class. That would waste a lot of time, and also be pretty inaccurate when you're doing things like transitioning between builds, or lose a part or two for just a little while or are in the middle of swapping things in and out for whatever reason. What I did there is have it not only calculate only every so often, but also way until there has been a decent stretch of turns without any actions that affect your loadout, like attaching, dropping, swapping, etc. Only when your build is considered "stable" will it take another sample for analysis.

I was thinking about sharing my final class charts and breakdowns here, but for most of you it'd probably be more fun to happen across new classes and/or combinations while playing, so maybe it's better not to spoil everything.

Instead I'll just show you a few screenshots of my test run in which I traveled and battled through five maps as I changed my loadout around and saw how the game classified it. For this purpose I put a nifty "class readout" right at the top of the parts list. (I wasn't aiming for any particular builds, this is just what I ended up with, among others I didn't screenshot.)

I'm pretty happy with the results so far! (My happiness was doubled, no tripled, by the fact that I didn't have to track down any major bugs while testing the system--it just worked, but there's also the common saying that if you write this much code and it's not buggy, then you probably just haven't found the bugs yet xD)

What began as a little test/fun project could possibly even be expanded in a number of ways.

  • I'm thinking about adding to the scoresheet a list of all the "classes" you played during the run, ordered by what percentage of the run was spent in that form (showing the percents, of course!).

  • Maybe show this in the HUD (or somewhere else) like I did for debug mode? Make it optional? Put it in Wizard Mode? I'm on the fence about making this a standard front-facing part of the game since it's outside the realm of immersion, but is certainly fun...

  • Add achievements related to some of these classes?

Note that for this design process I also drew on my character archetypes post about Cogmind from a while back on r/RoguelikeDev for reference, which you might find interesting if you haven't seen it before.

I haven't actually gotten to the second element of the summary, but that one won't take nearly as long.

Comments (10)

J
Joel Collins · May 10, 2019

Another idea is to occasionally change npc interactions based on your class. Warlord respects you more if you've got lots of cannons, you might be warned away from combat heavy areas if you're a stealth build etc? This sort of thing is a lot of content work, I know, but definitely adds to immersion.

J
Joel Collins · May 10, 2019

I suppose it does add complications regarding lore entries if there are multiple ways an NPC can react...

V
Via · May 9, 2019

It's awesome that the name changes even though the builds in three screenshots don't appear to change so much. While it goes without saying that such tasteful evaluations for players please us greatly, as you mentioned, always showing could have a little side going against immersion. Apart from dealing of always showing (incorporating into the main design, optional, wizard mode, etc), If you consider the name use besides scoresheet, how about making some NPCs, hostiles and alerts use it as one of cogmind's nicknames?

K
Kyzrati · May 9, 2019

Yeah the system seems to be nuanced enough to even work in the first few floors, though I've yet to see what it's like later on--only did a few low-Complex runs so far. Should probably be okay though, and the number of accessible combinations will tend to open up the further you get. Regarding immersion, today I added an advanced option to have the class indicator display on the HUD as in my shots, off by default. Nicknames would be funny, but I think only really appropriate if this were made more of an integral thing.

A
Amphouse · May 8, 2019

It's a neat addition, and you should definitely add it to the scoresheet. I dunno if it's worth adding to the HUD since it's just a fun little thing and you might need that space for something more important later. Maybe you could add it to the status screen, but again only if there's room. I don't like the idea of having achievements for it though. An achievement like "spend 90% of the run as a skirmisher" would be really annoying to go for and require a lot of guesswork as to figure out what parts in what proportions constitute "skirmisher". Achievements like cannon specialist are totally different because players know what cannons are, but these would be a lot more obtuse. If you really want an achievement for these, maybe something like "spend X time as 7 different classes" could work, since it just requires you to change your build up several times without getting specific about it. I mean, with my playstyle I'd probably just get that naturally anyways!

K
Kyzrati · May 9, 2019

Yeah I was thinking achievements would be hard and likely inappropriate for those same reasons, just threw the idea out there for people to muse over. And quite true about the "maybe needing that HUD space for something more important later," always a consideration when adding anything to the HUD, really, especially now as it's become quite crowded (and adding even anything more to crowd it further is kinda suspect). Anyway, let's first see how well the system does its job in the places it exists now, and possibly expand it later.

M
Malthusis · May 8, 2019

I'm definitely hyped about this, it looks really fun! I'd definitely be for putting it on the HUD for non-debug runs, may be a tiny incentive for players to try out new builds to see what classifications they can get.

K
Kyzrati · May 8, 2019

Yeah someone on Twitter suggested it for the same reason, hm...

S
Suslik · May 8, 2019

if(player.GetName() == "Pimski") game_stats.SetArchetype("Flying brick"); please add meme build detectors like "storm laser bicycle" and "flying stealth golem"

K
Kyzrati · May 8, 2019

Hahahaha... that did cross my mind :P