Jump to content

City of Data v2.0


Recommended Posts

OK, actually the entity stuff is ready to go.

 

At this point I'm blocked on releasing this stuff to the Homecoming version of the site because I need to fully re-export the data to pick up various data additions, but the bin file reader no longer works with HC's bins due to keeping it up-to-date with Page 2 changes. Hopefully next time around I'll be better prepared for that. I export "raw" data files from the bins that I can parse instead of the bins, and I can tolerate "missing" new fields in the "raw" data where tolerating missing data in the bins is wildly impractical. Unfortunately, I've added whole classes of data export that I did not have the last time I ran the bin parser against HC, meaning I don't have that raw data at all. Once HC is updated with Page 2 that will change .

 

For now, you can see data and new site features from closed beta test server here. Once those go live, I'll update the HC site with the same.

Link to comment
Share on other sites

Posted (edited)

I forgot to add, here's where you find the new shinies, on the CoD main/landing page. (Remember, for now this is only on the beta site.)

 

image.png.252355ed641dee4a6fece6536d9bdbbe.png

 

Note that thee "search" pages are just the boostset and entity pages, which both have a search bar at the top.

 

This approach worked out better than I hoped, so I plan to at least look into adding the search bar directly on the powers pages. I'll be a little trimmed down from the one you see on the landing page, since I probably don't want to cram the links that search creates onto the powers page. If I add a search box there, it'll just send you directly to the power you select.

 

I plan to add a couple more ways to slice and dice the boostset lists. There aren't vast numbers of sets, so it's sane to offer a list of categories (Melee Damage, Defense, Healing, etc.), and a list of sets in each category.

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

Posted (edited)

This is now available on the beta site. It leads you to a page which shows all the "categories" of boost set (like Melee Damage, Defense, Healing) in one place. When you click on one, the page updates to show you all the sets in that group, The names are links which take you to the details page for that set. This is likely to be much more convenient when looking for specific types of set by what you can slot them in, as opposed to constantly having to fiddle with the search interface - especially if you don't actually know all the set names. (And who does?)

unknown.png

 

I also made some small tweaks to the entity (critter) display pages, to show the names of the critters when they vary by level, and fixed some issues with handling duplicate names in the search dropdown list on entity pages.

 

image.thumb.png.1973923acafc9d868ed638290440b6d2.png

Edited by UberGuy
Typo
  • Thanks 1
Link to comment
Share on other sites

Posted (edited)

Here's a preview of what you see when you pick a "Boostset Group" on the page that lists them. It gives you a list of all the sets in that group.

 

image.png.2e194af838ce9d082ecc89a9bb622e63.png

 

image.png.73f8063ef1272da9357567e6ec4f9cb4.png

 

Choosing how to sort this was painful. At first it was just the set names, so sorting was alphabetical by name. Then I added the levels the sets exist at, but that has some non-helpful stuff going on. For example ATOs and Winter-Os show their level range as "1-1". So I updated the numbers to show "slotting range" instead. But then, with alphabetical sorting, the level ranges were all over the place. If I were looking for things to slot just based on the information shown here, I would care about level range. So I sorted first by minimum level range and then name. This looked nice but things that max out at level 50 were all over the place.

 

For now, what I've done is this:

- Sort by maximum level first

- Sort next by name next, excluding the "Superior" part of the name

- Sort next by "Superior" or not, putting the superior version after the standard version

- Sort finally by minimum available level

This puts all the level 50 max stuff together, all the level 40 max stuff together, and so on. Which is how I would use this list, but probably isn't for everyone.

 

One of the next things I'll do is expand the set display a bit to show a table with more information.

- Lowest level bonuses work at

- Lowest level at which you can slot the set (which is not always linked to the lowest level for bonuses, above)

- Max level the set exists

 

Then I can add controls so you can control the sorting.

 

It dawns on me that some of that info isn't on the individual set details pages, so I'll add it there too.

 

Edited by UberGuy
Typo
  • Like 1
Link to comment
Share on other sites

Why am I only finding out about this now?! Off to check it out. Maybe it will help explain why before I took Fireball on my MM it said it would do 36 damage but after actually taking it the power says it does 26...

(I double checked on another MM at the same level and it is the same, so it wasn't just me misreading it.)

Bopper: "resistance resists resistible resistance debuffs"

Link to comment
Share on other sites

Posted (edited)

City of Data is updated for Issue 27, Page 2

 

In addition to updated powers data, the "live" site now includes all the features listed in previous posts as being on the beta site.

  • Search for critters ("Entity Data")
  • Lists of Boostsets by Category ("Groups")
  • Search for Boostsets by name
  • Boostset info
  • Lots of small tweaks to display flags, modes and settings on powers, effects and attribmods that weren't handled previously.

 

("Boostset" is the game's overarching name for what we usually just call "IOs". Technically stuff like Archetype Sets and Summer/Winter Event sets are not "inventions".)

 

You may have to clear your browser's file cache to ensure it sees new data if you've been visiting the site lately. (Not cookies or browsing history - just cached data.)

 

You should see this in the upper right corner.

 

image.png.f0979f201a4938850dcf0d6513475dce.png

 

If you do, you should be fine. There were a lot of file changes, so if you see any weirdness, try the cache clearing first, but let me know here if it's still busted after that.

Edited by UberGuy
  • Thanks 2
Link to comment
Share on other sites

Posted (edited)

I found a bug. It's actually at the top of the data funnel - the bin file reader was missing some new event enums added with this page. This was a silent problem - it just caused the parser to pick enums further down the list. (The new enuns were inserted in the middle of the existing ones, not at the end.)

 

I've regenerated the data and uploaded it a few minutes ago. If you see "Defiant" in the tip popup, you're looking at old data and should either force refresh the page or (more globally) clear the browser's file cache again.

 

image.png.143472837e3f9fe80af6c89b03cff688.png

 

"Defiant" isn't an event actually used anywhere in the game any more. It's apparently a vestige of Blaster Defiance 1.0, way back in the day.

Edited by UberGuy
Everpresent typos
Link to comment
Share on other sites

  • 2 weeks later
Posted (edited)

I've updated the data today to reflect a back-end change required to handle some power expressions that rely on implementation details of how the power expression parser in the game works. The game uses an "expression stack" that contains the accumulated expression values parsed so far, and at least one parser "verb", called "dup" directly manipulates the expression stack, duplicating the top element onto the stack again. This is used as an efficient way to reuse a parsed value derived from a potentially complex sub-expression without having to evaluate the expression multiple times.

 

To support really displaying what dup() does, I had to rewrite part of the CoD expression parser to work more like the way the one in the game engine does. It took me a bit to both remember how what I wrote worked, then translate it from a recursive call stack to a loop using an explicit expression stack, but it didn't take very long. I did both this morning, fixed a few bugs added in the process, and regenerated the data.

 

The site has been updated with the new data and a couple of missing power icons (OAS and Disable All) were updated from the most recent Homecoming patch.

 

Here's how it's now displaying the new Singularity "Gravitational Pull" effects, which used to show a literal dup() call in the expressions.

Edit: Note that the PvE expression could actually be simplified further. No idea why it's stopping where it did. I'm using a 3rd-party algebraic parser and that's what it decided to do. It's mostly a black box to me. 🤷‍♂️ The result is still more clear (IMO) than one with raw dup()references in it.


image.png.5bdbca27728b90fac3d0c74d90fa42e7.png

 

Note: You may have to forcibly clear your browser's cached data (not cookies or site data) to see the updated files,

 

Edited by UberGuy
  • Like 3
  • Thanks 1
Link to comment
Share on other sites

7 minutes ago, KaizenSoze said:

 

If that's bugged, it's actually bugged in the game. That's really a null attribmod. There's no hold effect in that power. Note that it cannot be enhanced for hold duration. I think the Wiki is out of date.

  • Thanks 1
Link to comment
Share on other sites

Posted (edited)

CoD has been updated for Homecoming build 4337

 

In addition, there are new displays for toggles which shut off after running for so long and for shared recharge groups.

 

From Double Jump:

 

image.png.37abfdb0b16a5bdd44ffc9fb37b8cb31.png

 

image.png.760e1d1d18d513494c1db413ca4cfc36.png

 

I'll look into making some of these group displays (recharge groups and exclusion groups) into a link you can click on to see what powers are included, but for now they're just text.

 

I also fixed some display issues with Taunt and Placate (they were showing up as "Applies X points of Placate", which is not super helpful) and healing (which was showing as "Applies X points of Heal Dmg" instead of "Heals X points of damage").

 

I also finally squashed a lingering bug in the Rust code relating to assigning ATs to powers that are redirected to, executed by or granted by other powers. It was missing "Execute Power" when building up the relationships, which was affecting the various versions of Kinetics / Transference. With that fix , the data build process is finally fully idempotent - running it multiple times with the same pigg/bin files always produces the same output repeatably.*

 

* I never even posted about the discovery that the extracted icons, written as PNG files, were changing every time because the library I was using to manipulate and save the image data was embedding the current date and time in the image metadata. Finding how to turn that off was an adventure on its own.

 

Edited by UberGuy
  • Like 2
Link to comment
Share on other sites

Posted (edited)

I also just finally updated the site to display "application type". This was something that was always missing on the old CoD and lacking it makes some powers effects super confusing, because they often just look like a list of "grant this power" followed by "revoke the same power". Which is, like, "what?".

 

Now you can see that these kinds of things have different triggers.

 

From Assault Radial Embodiment:

 

image.png.635c6914458a3659f3cfbdfc1c350aff.png

 

The standard "application type" is "on tick", and vast majority of effects use that application type. Because of this, I don't display it when it's the type in use on an attribmod. (See the - seemingly redundant - "Grant Power after 0.5s" in the image above.)

 

The options other than "on tick" are:

  • On Enable - the power becomes enabled, presumably after being disabled, but probably also after zoning/logging in
  • On Disable - the power becomes disabled, such as via exemplar or a having a disable mode applied to the character
  • On Activate - the power is clicked on. Mostly used with toggles
  • On Deactivate - the power is toggled off
  • On Expire - the power ran out of lifetime. This is mostly used for passives that only exist for so long and then do something at the end, like the intermediate power that grants you alignment powers after 7 days.

 

Edited by UberGuy
  • Like 2
  • Thanks 1
Link to comment
Share on other sites

8 hours ago, KaizenSoze said:

 

 

8 hours ago, UberGuy said:

If that's bugged, it's actually bugged in the game. That's really a null attribmod. There's no hold effect in that power. Note that it cannot be enhanced for hold duration. I think the Wiki is out of date.

 

The null is very strange, but I'm not sure it's the hold. It looks like Liquefy summons two pets, Liquefy and Shock:

https://cod.uberguy.net/html/power.html?power=defender_buff.sonic_debuff.liquefy&at=defender

 

The one KaizenSoze linked is Liquefy (which does the debuffing) while Shock does the damage and hold:

https://cod.uberguy.net/html/power.html?power=pets.shockdef.liquefy&at=minion_pets

 

Of course, it's a 4.47s mag 2 hold, part of whose time could be "wasted" on a knockdown. So it may effectively not even be there. (Liquefy the power can be slotted for holds, and Shock is affected by them.)

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

CoD now shows shows max number allowed for powers that stack through multiple copies of the power.

 

image.png.40ce8957b61add1907b1ffa01c7ee804.png

 

There's also a new icon for the Line of Sight requirement on powers. I kind of forgot that was already there in the Activation Details block. Maybe I'll remove that now.

 

image.png.1178b81f6f965a1eb77e348f232bc737.png

 

Finally "DelayedRequires" expressions are now displayed on attribmods. These aren't real common, but they're important. The expression is checked before the attribmod is applied, and if it is false, the attribmod is dropped instead and doesn't take effect.

 

image.png.b48a6b392dd40ea4f2ea801205210200.png

Link to comment
Share on other sites

Uber, thanks as always for all your work on this.

 

While it is super accurate, somethings are too accurate or in code for me to grasp.  For example, in the image right above me is "(2.0 * Melee_Ones)% Fly for 2.25s".  All that tells me is that the power allows flight.  In this circumstance, it's probably enough, but all the damage, defense, and resist powers are similarly described.

 

Another example would be Enflame.  That has a long list of "(X * Melee_Damage) points of Fire damage" with X ranging from 0.055 to 0.1125.  I can obviously tell which AT does more damage with Enflame than others, but I have no idea what the base damage for the power is -- the number that would be displayed in-game by looking at the detailed info.

 

I remember old CoD had a little graph with damage by level.  Is that something that can easily be added? 

Link to comment
Share on other sites

4 hours ago, Bionic_Flea said:

Uber, thanks as always for all your work on this.

 

While it is super accurate, somethings are too accurate or in code for me to grasp.  For example, in the image right above me is "(2.0 * Melee_Ones)% Fly for 2.25s".  All that tells me is that the power allows flight.  In this circumstance, it's probably enough, but all the damage, defense, and resist powers are similarly described.

 

Another example would be Enflame.  That has a long list of "(X * Melee_Damage) points of Fire damage" with X ranging from 0.055 to 0.1125.  I can obviously tell which AT does more damage with Enflame than others, but I have no idea what the base damage for the power is -- the number that would be displayed in-game by looking at the detailed info.

 

I remember old CoD had a little graph with damage by level.  Is that something that can easily be added? 

We were discussing Enflame in a thread and @Carnifax provided this link. You have to pull up the pet version of the power to get the base damage.

 

Blasters get the most damage, MM and controllers the worst.

 

https://cod.uberguy.net/html/power.html?power=pets.enflame.enflame&at=minion_pets

 

 

Link to comment
Share on other sites

52 minutes ago, KaizenSoze said:

We were discussing Enflame in a thread and @Carnifax provided this link. You have to pull up the pet version of the power to get the base damage.

 

Blasters get the most damage, MM and controllers the worst.

 

https://cod.uberguy.net/html/power.html?power=pets.enflame.enflame&at=minion_pets

 

 

Thanks, but that's the information I was talking about.  Where do you think I got .055 to .1125?  And from that list I can tell what AT does more damage, but I don't know what that base damage is.  I know it isn't .055 or .1125.

Link to comment
Share on other sites

Posted (edited)
7 minutes ago, Bionic_Flea said:

Thanks, but that's the information I was talking about.  Where do you think I got .055 to .1125?  And from that list I can tell what AT does more damage, but I don't know what that base damage is.  I know it isn't .055 or .1125.

  Ignore, reading comp issues by me.

Edited by KaizenSoze
Link to comment
Share on other sites

15 minutes ago, Bionic_Flea said:

Thanks, but that's the information I was talking about.  Where do you think I got .055 to .1125?  And from that list I can tell what AT does more damage, but I don't know what that base damage is.  I know it isn't .055 or .1125.

Does it even have base damage? It almost looks like a new type of thing where instead of multiplying a modifier by base damage it's essentially a lot of If checks.

 

I suspect it might be something new and Homecoming specific which isn't following a BaseDam formula.  @Captain Powerhouse would probably know 

Link to comment
Share on other sites

Posted (edited)
6 hours ago, Bionic_Flea said:

Uber, thanks as always for all your work on this.


While it is super accurate, somethings are too accurate or in code for me to grasp.  For example, in the image right above me is "(2.0 * Melee_Ones)% Fly for 2.25s".  All that tells me is that the power allows flight.  In this circumstance, it's probably enough, but all the damage, defense, and resist powers are similarly described.

 

That's just because it has no way to know what AT you want it to display the information for. It only displays the "X * table" when it doesn't know what AT version of the table it should use. You can always fix that by picking an AT from the dropdown above the info. I've tried to make the site figure out what AT you want it to display based on how you navigate to a power, but if you jump directly or from the search box, it may not know. It depends on the power - some always only make sense for a specific AT, but some are shared.

 

You can make it default to showing an AT by going to the settings page. It will always default to this AT unless it's actually an invalid choice for the power.

 

image.png.d88787a73be859c8e2eabcc608c14be2.png

 

You can also check the box next to the level slider on the power page and tell it "I don't care, show me what it would do on some AT that can never use this power."

image.thumb.png.65be6a01303b99812df28045393267fb.png

 

I think you may misunderstand how powers like Enflame work. Its damage is emitted by a pet, which has its own AT ("Minions Pets") and thus its own damage scales. In cases like this power, the pet can't inherit its caster's damage scales, so we have to fake per-AT damage modifiers by creating a different damage effect with a different scale per possible caster AT.

 

As a result, all of the damage effects are conditional based on the AT of the pet's summoner (the user of the base Enflame power) - there is no "base" damage. You're not wrong that this is like reading code. This is, for better or worse, how the power actually works

 

Even if there was a graph, there's currently no way to pick what it would display. I would have to add support for a second level of "used by" archetype, parse the expressions to pick the right effect, and use that number. I'm ... probably not going to do that. :classic_tongue:

 

In simpler cases, the damage graphs aren't that useful. For the vast, vast majority of powers, they're just the power's total damage scale times the curve for that AT's damage modifiers. So every curve looks exactly alike for a given AT, just scaled by a different amount. You can get that same data by picking an AT from the dropdown and moving the level slider around. For cases where the damage is not so simple, that means it's not easy to calculate all the conditionals and averages in the browser. I could do it in the code that generates the data the browser displays (remember - there's no "server" for this CoD - it's just static files and Javascript to turn them into the pages you see), but to generate that data I would need to write back-end code that understands all the attribmods. Right now that only exists in the browser - the back-end just writes out the data and reorganizes it some.

 

Porting attribmod parsing to the back-end so it can do fancier things is a "maybe someday" task on my to-do list for the site, but it's not likely to happen soon.

 

 

Edited by UberGuy
  • Like 1
  • Thanks 1
Link to comment
Share on other sites

Posted (edited)

Thank you @UberGuy and @Bionic_Flea. I think I figured it out.

 

Arachnos have the base modifier of 1.0 melee and 1.0 range.

 

Blasters have the base modifier of 1.125 range.

 

5.561 * 1.125 = 6.2561

 

So, the pseudo base damage for Enflame is 5.561. At least, that is a way to think of it.

 

Another example, controller range damage is .55.

 

5.561 * .55 = 3.0586

Edited by KaizenSoze
Link to comment
Share on other sites

Ah!  I see the numbers now after choosing an AT. 

 

I've looked at several powers by clicking an AT, the power set, then power, and still got the code of X * [damage modifier reference].  But when you populate the AT field it corrects to base damage.

Link to comment
Share on other sites

Posted (edited)
16 minutes ago, Bionic_Flea said:

I've looked at several powers by clicking an AT, the power set, then power, and still got the code of X * [damage modifier reference].  But when you populate the AT field it corrects to base damage.

 

Is this option perhaps enabled on the settings page?

 

image.png.da7e754c32cfb9a7e0dd255c003dc894.png

 

Edit: If it's off, then navigating from, say, Scrapper -> Fighting -> Boxing should show you stats for use by a Scrapper. The URL should end up looking like so:

 https://cod.uberguy.net/html/power.html?power=pool.fighting.boxing&at=scrapper

 

And following that link I just pasted there should also always show a Scrapper.

 

Let me know if those things don't happen. I would want t o look into it

Edited by UberGuy
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...