XaiJu
Kyzrati
Kyzrati

patreon


Complex 0b10 Scanalyzers, Upgraded

You've voted for expanded Scanalyzer functionality, and here it comes... enabling new or improved builds, especially those made of salvage!

As a player, given my normal play styles I mostly ignore Scanalyzers except for a few special situations. Although some players get quite a lot out of them already, relatively speaking they've always had somewhat narrower strategic use cases compared to other interactive machine types. Hence my thoughts some years ago on how to give them another interesting functionality, an idea centered around the upgrading of parts, or more precisely Cogmind's knowledge of how to make better use of said parts. So it eventually made its way out of my notes and onto the feature voting list, gradually gaining support over time.

I admit I didn't really have a good grasp of how this mechanic would be end up being balanced, my main concern instead regarding whether it was architecturally feasible, and proper balance would come eventually with whatever implementation made sense.

The initial architectural worries were rooted in a staple of game development, a structure that revolves around most objects not storing all their own data, instead referencing static data common to all matching items. For example Flak Guns have a recoil of 4, but we don't need to store that information for every Flak Gun, just include it among the common table of stats for this weapon type, since it's always the same for all of them. This approach is beneficial in a lot of ways, but simply put, the more data that's known to be static, the easier and safer it is to make assumptions in various parts of the code without worrying about specific instances. Naturally any "assumptions" in a project have a way of coming back to haunt future attempts at modification, but we're always trying to strike a balance between different needs, like flexibility vs. efficiency. I've written about this topic before, specifically Item Variants and Randomization in Roguelikes, which led into The Scrap Engine and its hackish (but functional!) architecture.

Anyway, for architectural reasons we'd want to keep the scope of these Scanalyzer-based upgrades within reason. But we also want them to be cool and desirable... But we also want them to be balanced! Sounds like we have our work cut out for us xD

[Disclaimer: The work is done :D]

And sorry but no, it doesn't work like this funny image by dr.hermelin :P

To keep things simple, let's say that entire categories of parts share the same modifier. This is much more feasible from both an implementation standpoint and also player POV--we don't want to have to remember a whole bunch of different little modifications for every part (not to mention needing reference material to know what these are in advance). It's better to just say "any leg gets a -15 move time modifier."

Using that example, the process is summarized as follows:

  1. You have one or more Carbon-fiber Legs attached or in inventory.

  2. Visit a Scanalyzer and use the new direct Retrieve Study option which gives a list of all parts in your possession for which you can download study data.

  3. Select Carbon-fiber Leg from the list and, if successful, the effective move time of all Carbon-fiber Legs you ever use is reduced from 120 to 105!

The biggest limitation of this system is that it only works on common (e.g. non-prototype) 0b10 parts. It would be pretty easy to throw the balance out of whack if it were more widely applicable, but this actually ends up being an elegant solution since most runs are using non-prototypes at one or more points during a run, or even basing entire builds around them, and this is a way to improve the effectiveness of any salvage you're frequently rebuilding from since most bots out there are using common parts, after all.

Other limitations:

The list of modifiers as it currently stands:

There are a lot of great possibilities with these modifiers in play, so I look forward to seeing where players prefer to put them to use! I know I am definitely not going to be skipping Scanalyzers anymore...

Recently I've actually been streaming a Beta 16 run, my first, in part to test out this feature but also just to do a non-spoiler fun run, which begins here. (Part 1 just uses one Scanalyzer and talks a little bit about the new version, and we actually end up doing more of that throughout Part 2.)

Just like the Insert() feature, Study() allows you to identify unknown parts (hence their same base chance, actually).

Like schematics, part studies also prevent you from losing the respective part IDs to corruption.

And as with schematics and analyses, we're going to need a way to access a list of what you know, so that's been added to the Status window where you'd expect (the button in this case being named just "List" so we can use 'L' for keyboard access as 'S' is unavailable).

Alongside schematic, fabrication and repair lists, run scoresheets now also include a complete list of where and what parts Cogmind studied, which will be very interesting to look at in the future data.

You can also see there that like the schematics list it details how the study was obtained, even though currently there is only one way to do it, via Scanalyzer hacking. It is likely we'll eventually have at least one alternative source akin to Schematic Archives, a data item from which you can obtain the same type of information, theoretically even for derelict/non-0b10 parts! Like a Derelict who has a Mak. Sword to hand out and also wants to make sure you get some tips on how to best use it :)

The underlying system does indeed work with any item...

In summary, we now have cooler scanalyzers (all of them!)

(image by Runia, bringer of claymores, destroyer of worlds)

Comments

Hehe it seemed appropriate :P (in more than one sense! claymore carnage, master of DLC...) Scanalyzer update probably good and noticeable enough, and probably just feels good while not necessarily being OP, so... great :D

Kyzrati

I'm glad my deserved title of "Destroyer of Worlds" is finally being recognized! (Also amazing update, loving the scanalyzer changes)

Runia

Heck yeah! I'm thinking we'll probably soon do the first prerelease with everything I've got now, which is all features except the Unchained, though unfortunately I have to be out for a good chunk of next week so should wait until after that...

Kyzrati

Excellent, I'm very excited to use this!

Mole Playing Nice


More Creators