Jump to content

City of Data v2.0


Recommended Posts

40 minutes ago, BillyMailman said:

Back again with another bug report, sorry.

 

Current messed-up power is Soul Extraction. I'm seeing nothing but a non-heal heal, and checking the raw JSON shows that the power does indeed do a lot more.

 

image.thumb.png.d9ff5e04c679423b70377840310b4070.png

image.thumb.png.3125ff5afe30622a5fb3a570af083f88.png

Mine looks different


PPM Information Guide               Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Super Pack Drop Percentages       Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas                         Mids' Reborn                       

Link to comment
Share on other sites

After a bunch of work, apparently I'd somehow gotten the PvP thing flipped to PvP only, instead of the 'show both' I normally have. And despite Soul Extraction working 100% in PvE, because it targets minions, it wasn't showing up. Which is kinda wrong - Soul Extraction works perfectly well in PvP - but I get why CoD thinks what it thinks.

 

Anyway, it's now displaying properly, so at least there's that.

Pinnacle refugee. Powers and math guy.

Link to comment
Share on other sites

9 minutes ago, ... said:

Anyone know what the minmax function does? City of Data frequently references it, but the damned thing takes 3 arguments. See for example Feral Charge from Dominator Savage Assault. Can anyone help me parse this?

 

The first input is the expression being evaluated (distance - 25). The 2nd input is a minimum value, the 3rd input is a maximum value. The output of the function is the expression, unless that expression goes outside of either the minimum or maximum values. If it does that, then it uses that minimum or maximum value instead.

 

For example, let's say the distance is equal to 30. Then distance - 25 = 5, which is inbetween the minimum (0) and maximum (40). So the output is 5. For the rest of the formula it takes that output and calculates 1 + 5/40 = 1.125.

 

If distance = 100, then distance - 25 = 75. This is above the maximum (40), so the output of the function would be 40. The rest of the formula would calculate 1 + 40/40 = 2.0.

  • Like 2
  • Thumbs Up 1

PPM Information Guide               Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Super Pack Drop Percentages       Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas                         Mids' Reborn                       

Link to comment
Share on other sites

1 hour ago, Bopper said:

The first input is the expression being evaluated (distance - 25). The 2nd input is a minimum value, the 3rd input is a maximum value. The output of the function is the expression, unless that expression goes outside of either the minimum or maximum values. If it does that, then it uses that minimum or maximum value instead.

 

Now that you say it, it seems obvious. 

 

Much thanks! 

 

Link to comment
Share on other sites

I'm behind on getting the latest page updates working. I got the bin parser and site builder working. There a handful of bin format changes scattered around various data structures, and while none of them were complicated, it took me longer than it should have to track them all down and account for them correctly. I finally got it fully working this morning.

 

I now just need to update the site to display new fields and upload the new data. I do expect this to be done by no later than this evening US/Central time, hopefully sooner. I may have placeholder icons for a couple of new attribmod flags for the time being.

  • Thumbs Up 3
Link to comment
Share on other sites

On 10/13/2022 at 4:42 PM, BillyMailman said:

And despite Soul Extraction working 100% in PvE, because it targets minions, it wasn't showing up. Which is kinda wrong - Soul Extraction works perfectly well in PvP - but I get why CoD thinks what it thinks.

 

Yeah, I am not sure if I can fix that without maintaining some sort of exception list. The "context free" way CoD tries to figure out whether something is PvP, PvE or either sadly depends a lot on allowed targets. There are actual PvP flags that mark an effect as PvP only, but that's not used everywhere, and it being achieved via player/critter target specificity is really common.

Edited by UberGuy
  • Thumbs Up 1
Link to comment
Share on other sites

So one of the new features in the powers system is the concept of "accumulating" changes on attribmod values. These change the current value of an attribmod by a small amount every server tick. Currently this is used in a few Mastermind powers (or MM pet powers) to create "decay" mechanics on buffs so that the buffs decrease over time.

 

There are two base versions of this - additive changes and multiplicative changes. The additive changes create linear change, while the multiplicative ones create compounding changes that decay or grow on a curve. Technically a single attribmod can have both multiplicative and additive per-tick changes applied. All the current ones are additive only.

 

The unit of time change on these is one server "tick".  That's roughly 0.132 of a second, but that depends on how well the server is getting things done. Every time the game server updates things on entities in a zone, these per-tick accumulations are updated by the given amount and operation.

 

Right now I have a fairly primitive display of these values - I am just displaying the raw number that's used to update the value per tick. Given how fast ticks are and how long most effects are meant to last, these numbers are quite small. It's not that helpful of a way to display it. I do plan to display a more useful number, but at least this gets it out there.

 

image.png.07f833d60d3a45816dc2409b1e65c71c.png

 

I'm open to suggestions on good ways to do this. I am currently thinking (after confiming what a server "tick" should be) of displaying the additive changes as a "X% per Y seconds" value, with multiplicative values displayed as "decays/grows to X% of base after Y seconds". I can still display the raw value too.

Link to comment
Share on other sites

30 minutes ago, Bionic_Flea said:

Is there a good way to search for those in CoD?

 

Not native to the site, no. You'd need a way to search by value on attribmod fields which would be crazy to try and index for use in the browser. (Remember, there are no logic servers for CoD - everything is done in your browser based on pre-prepared data files the web pages pull in.)

 

However, if you're handy with searching text files, it's possible to find it in the raw data. This is actually how I checked for powers to look at when updating the site.

 

I like RipGrep for this sort of thing.
 

$ rg 'f_tick_mag_additive' | rg -v ' 0.0,'
powers/mastermind_pets/zombie_minion/summonarmor.json:          "f_tick_mag_additive": -0.013199999928474426,
powers/mastermind_pets/zombie_minion/summonarmor.json:          "f_tick_mag_additive": -0.013199999928474426,
powers/mastermind_pets/assault/conserve_power.json:          "f_tick_mag_additive": -0.0027000000700354576,
powers/mastermind_summon/mercenaries/serum.json:          "f_tick_mag_additive": -0.008799999952316284,
powers/mastermind_summon/mercenaries/serum.json:          "f_tick_mag_additive": 0.06599999964237213,
powers/mastermind_summon/mercenaries/serum.json:          "f_tick_mag_additive": -0.02199999988079071,
powers/mastermind_summon/mercenaries/serum.json:          "f_tick_mag_additive": -0.002199999988079071,
powers/mastermind_summon/mercenaries/serum.json:          "f_tick_mag_additive": -0.002199999988079071,

$ rg 'f_tick_mag_multiplier' | rg -v ' 1.0,'
$

 

That first command says "look for files containing lines with the string f_tick_mag_additive that don't contain ' 0.0,' (the default value of 0.0 with a leading space and a trailing comma)". It found 3 powers (it lists Serum multiple times because there are multiple different additive things in there.)

 

The second command looks for files containing lines with the string f_tick_mag_multiplier that don't contain ' 1.0,' (again the default with leading and trailing markers so we don't get substring matches). There are none of these so far.

 

Edited by UberGuy
Link to comment
Share on other sites

1 hour ago, UberGuy said:

I'm open to suggestions on good ways to do this. I am currently thinking (after confiming what a server "tick" should be) of displaying the additive changes as a "X% per Y seconds" value, with multiplicative values displayed as "decays/grows to X% of base after Y seconds". I can still display the raw value too.

 

Tossing in my 2¢. If all else fails, just go with the .132 tick rate, and work out how much it decays by in 1s. AFAIK, if the server's lagging such that the tick rate slows any real amount, then everything slows down, including powers recharging slower, buffs lasting longer, etc., so that should be fine?

 

Honestly, anything along the lines of "Decays linearly to XXXX% over YYs" or "Decays exponentially by ZZ% per second" or whatever is probably going to be fine. At best, you might want special handling for a linear thing that's set up to decay to 0 at the same moment it expires?

Pinnacle refugee. Powers and math guy.

Link to comment
Share on other sites

1 hour ago, UberGuy said:

The unit of time change on these is one server "tick".  That's roughly 0.132 of a second, but that depends on how well the server is getting things done

This is the default behavior, used whenever an attribute mod has a duration but no tick period. This capability can be used for things that do have a tick period (date over time, heal over time). In those cases, the additive/multiplicative changes will apply on those ticks

  • Thumbs Up 1

PPM Information Guide               Survivability Tool                  Interface DoT Procs Guide

Time Manipulation Guide             Bopper Builds                      +HP/+Regen Proc Cheat Sheet

Super Pack Drop Percentages       Recharge Guide                   Base Empowerment: Temp Powers


Bopper's Tools & Formulas                         Mids' Reborn                       

Link to comment
Share on other sites

Hrmph. This is probably going to trigger a mini project I've been able to avoid.

 

Most of the distinct visual "widgets" you see on CoD pages are distinct modules of code, and have their own sense of state and programmable behaviors distinct from other things on the page.

 

Individual attribmod rows under each effect group are not like this. Effect groups are, but attribmods in the groups are not.

 

As a refresher, the rough logical hierarchy for powers looks like this:

Power
  |
  +---EffectGroup
  |        |
  |        +-----Attribmod
  |        +-----Attribmod
  |        ...
  +---EffectGroup
  |        |
  |        +-----Attribmod
  |        +-----Attribmod
  |        ...
 ...

 

Similarly, the panel on each CoD powers pages labeled "Effect Groups" contains one "widget" for each effect group. It is, in turn, composed of smaller, specialized widgets, such as: all the icons for each group, all the icons for each attribmod in the group (which appears once per attribmod in the group), and any nested effect groups (meaning the effect group widget can display other effect group widgets to arbitrary nesting depth).

 

But what is not a widget of its own is the place where each attribmod's info is displayed. Instead that's just part of the Effect Group widget, which renders one row of info per attribmod in the group.

 

This was mostly fine (but never awesome) when I was displaying simpler stuff in each row. But now that CoD is more complex, partly due to better understanding on my part and partly due to new features in the powers system, I find myself wanting each attribmod display to be a widget. That would let it hold state and remember what details it has already rendered. Right now if anything needs to change I re-render the whole effect group. And if I am changing one, I am probably changing them all. Now, that probably sounds bad, but it's not terrible - most powers don't show that much info. But what made me really notice this (mentally, not visually) was that if I want add a control somewhere on the page that lets you control how "tick-mods" are displayed, the only way to update any of them is to refresh all of them, whether they have any "tick-mods" or not. That withers my developer soul a little.

 

Now, that said, this is how changing the AT dropdown or level slider have always worked. When you change them, every effect group is re-drawn. But that feels less awful, since changing AT mods or level values really changes what a lot of attribmods need to display.

 

Anyway, I'm mostly just "stream-of-consciousnessing". I may just suck it up and do this the less fancy, less elegant way, but I'm tempted to spend a bit more time now making it easier to work in new attribmod changes in the future.

  • Thanks 3
Link to comment
Share on other sites

  • 2 weeks later

Quick suggestion, hopefully not a ton of work:

Can we have a link somewhere on the main page, going to a page with a nice listing of all the Incarnate Powers? It's annoying typing 'em into search, especially since I forget whether it's Lore Tsoo Radial or Radial Tsoo Superior or whatever. They're the one big category of powers that players get, but that don't appear on the AT pages at all.

 

I suck at visual design stuff, so not gonna suggest how it should look, but literally any for of page listing each slot/option/tier/power/whatever in a clean way, would be nice. 

Edited by BillyMailman

Pinnacle refugee. Powers and math guy.

Link to comment
Share on other sites

  • 2 months later

Maybe... Is what you're looking for just a big list of everything in the Incarnate powercats? That would have a ton of stuff in it. I'm not worried about it technically or anything - it just doesn't sound super useful. But I think it would be easy to build.

 

Or are you looking for something more like a list of the "top-level" power that we think of when we click on the powers? The only issue there would be that it might have to be maintained by hand. The organization of stuff in the incarnate categories is seemingly random, and I'm not sure they're anything native to their data that lets us actually identify the ones we consider the top-level power. I'll take a look. We get new Incarnate stuff infrequently enough that maintaining such a list manually isn't the end of the world, but doing it initially would be a bit mind numbing.

Link to comment
Share on other sites

Also: Hi, I'm back!

 

I kind of disappeared from all sorts of gaming-related stuff (which is really only CoH for me) over the holidays. Lots of work going on with the house, lots of stuff going on with my mom (she had a severe stroke and is pretty much gone without having died biologically), then holiday hosting, work and whatnot.

 

Oh, and then I built a new main home computer. Still working on getting that fully set up with all my dev capabilities, but it's like 90% there. Which is going to be way more than 100% of what I used to be capable of, because my old rig was 11 years old. 😝

 

Other than the "mom had a stroke" thing, everything's good, but I've just had no time to spend on CoH / CoD. That should get better again soon. 🤞

 

The only time-consuming thing in my immediate future is going to be tax season. For all the right reasons, filing my taxes is going to suck this year. We're talking like it taking a weekend, though, not a week. My wife has been using a tax preparer since before we got married, and next year we'll be filing jointly, so this is the last year I'll need to deal with that. 🎉

  • Like 1
Link to comment
Share on other sites

First and most importantly, all the same sentiments with regards to your mom. Hope things are going well, and as much as I'm the most persistent voice in here with requests and/or bugs, I want to emphasize that real life is 100% the higher priority than dealing with me. 😄

 

Secondly, the idea was mostly to have another column after Pool and Epic powers, listing the incarnate sets. In this gap here.

image.png.f3b053159d35cd862c018fc66bd16c5a.png

 

I'm well aware that the powersets are "Alpha", "Destiny", etc., and not Barrier or Rebirth or whatever, but now that I look at it, I think even just having a link to something like https://cod.uberguy.net/html/powerset.html?pset=incarnate.hybrid&at=scrapper from the Scrapper page (and so on for all the slots/ATs) would probably be enough.

 

It's just annoying when I'm double-checking them, that they're player-facing powers that a lot of characters have, but they aren't reachable without searching. And I never remember which order to type things to find a specific one. "Is it 'incarnate radial barrier'? 'radial barrier epiphany'? No, 'barrier epiphany'... nope." I mean, that might just be a me problem, but it does seem like the Incarnates ought to be linked. 

Pinnacle refugee. Powers and math guy.

Link to comment
Share on other sites

Just as some background, all the linked things we have now are linked because there's an explicit thing I can search for in data that makes the link between an AT or a power explicit. For example, the ATs all have a field that explicitly names the primary and secondary pools for that AT, and also lists all their available pools. (Presumably, at some point, somebody at least considered the option that different ATs could have had different pools available.) Epic powers flip the script a bit, containing expressions that define who can access them.

 

There's no equivalent to this in the Incarnate powers. Obviously we would never expect to find any AT associations, since that's not how the system works. But there are no requirements. It'd be handy if there were - I could use that to say "hey, this power has some kind of player requirement, so that must mean a player can have it  - I'll add it to a a list based on that. But no, there's nothing like that.

 

At least not in the powers themselves. I'm speaking without checking, but I'm gonna bet that this is because the "link" is in the crafting recipes. If a power is something a player can own, it's because it's granted to them by crafting it. Thus, the way to dynamically know a power is one a player can directly own is by finding it as the reward in an incarnate recipe.

 

Conveniently, parsing recipes is one of the things I've been (very) slowly working on.

 

However, like I said, for now I could just hard-code a list for now. I like for everything on the site to be data driven, but it's isn't all like that. The landing page with the AT links on it for example is totally hand-crafted. I think I can split the difference here - "manually" extract (or get a kindly dev to share) some data once and use that generate a list that I can use to render a page of obtainable iPowers.

 

 

Edited by UberGuy
Link to comment
Share on other sites

I mean, I guess I was just imagining something like this:
image.thumb.png.4d0e2313eeed08fb14e4833504b6cf64.png

 

where those links go to https://cod.uberguy.net/html/powerset.html?pset=incarnate.alpha&at=blasterhttps://cod.uberguy.net/html/powerset.html?pset=incarnate.judgement&at=blaster, https://cod.uberguy.net/html/powerset.html?pset=incarnate.interface&at=blasterhttps://cod.uberguy.net/html/powerset.html?pset=incarnate.lore&at=blasterhttps://cod.uberguy.net/html/powerset.html?pset=incarnate.destiny, and https://cod.uberguy.net/html/powerset.html?pset=incarnate.hybrid&at=blaster. All of those links already work right now, and list the powers. I looked 'em over as part of pasting them in here, and every single one does in fact seem to list the exact correct list.

 

Sure, it'd be better to sort/display them in a nicer way, maybe by slot/tier/core-radial, but really I think just having them be linked is a good first step, and the entire hardcoded list is basically just 'incarnate.alpha', 'incarnate.judgement', etc. at that point?

Pinnacle refugee. Powers and math guy.

Link to comment
Share on other sites

If all you want is the raw list of the entire powercat by AT, sure, that's easy. I'm not very happy with it as a UI though, because it just gives people a raw dump of everything in each Incarnate powerset in no particular order. Some of the powersets are worse than others in this regard. Hybrid is especially gross, containing a ton of "sub powers" that obscure the main powers characters would actually own.

 

Given that the other per-AT power lists are much more specific, I think most people would find that surprising and, honestly, not that helpful. Sure, it's more helpful than not having any link at all, but I'd rather make the links be to more helpful list than that.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...