-
Posts
657 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Forums
Events
Store
Articles
Patch Notes
Everything posted by UberGuy
-
I thought you folks might enjoy some details about how CoD is hosted. It's lives in AWS (Amazon Web Services), basically using just two services there. The first is AWS S3 (Simple Storage Service), which (for the non-techies) is basically a place to store files. Not quite the same as the file system on your computer, but kind of similar, functionally. This is where all the files for the CoD site go. This includes all the data files for powers, critters, etc. The next is called CloudFront (CF) which is basically AWS "content delivery network" or CDN. A CDN is something you can put between your web server and your end users. The CDN keeps copies of web files geographically closer to the end users, which reduces the time it takes them to download the files if they're far away from your web server. Basically a CDN is a big, geographically distributed file cache for the web. CDNs can do (a lot) more than this, but that's their main function. CloudFront can serve files out of S3, and that's CoD in a nutshell. I put files in my S3 "bucket", point CF at the same bucket, set up DNS to point cod.uberguy.net at my CloudFront distro, and voila: CoD lives. (AWS provides DNS services too, but uberguy.net isn't there. I had that hosted somewhere else already. Ever wonder what it costs to run CoD, in terms of actual bills? AWS billing is suuuuper complicated, but I'm not doing much, so it's simple for me. S3 charges by amount of data stored and number of uploads and downloads you make to it. AWS is scaled for giant companies like Netflix - I pay fractions of a penny for the data CoD uses. Thankfully I don't have to pay for files that CF reads from S3 to then serve to the web, or if I do, it's so small it doesn't even show in my bills. To limit the number of files I have to upload to S3 (which mostly saves me time), I have software that only uploads files that changed locally. So if I change something in the data extract code I run on my home computer, and it only changes 1000 CoD data files, only those 1000 files will be uploaded to S3 (out of ~50,000 total). Cloudfront charges for a bunch of things, but the two main ones I see in my bill is data downloaded by y'all and number of "SSL terminations" - basically number of times you folks' browsers establish an SSL connection to the site. Interestingly, the SSL thing was always larger for CoD, partly because I pay more for people connecting from Europe. It probably makes sense - I set the site up to cache intelligently in our browsers, but it's also set to check and see CF has newer files semi-often. Once you've seen a file, you probably don't download it again for days unless I updated it, but if you load it several times a day, you'll reconnect to make sure there isn't a new copy. This setup is pretty cheap for me to run. Until recently, it was in the low US dollar per month range. Recently, it's started costing way less than a dollar. Sometimes pennies a month. It turns out that at the end of last year (2021), AWS greatly reduced the cost of Cloudfront and also took a chunk out of S3's pricing. A lot of AWS' services have a "free tier", which is basically a "freemium" style system, where you pay nothing if you use only certain features within certain limits. AWS massively extended the free tier thresholds for Cloudfront, basically causing all my CF costs to disappear. Like, literally. They went to 0. My S3 costs are usually like 10 cents a month. They went to a whopping 63 cents in December when I uploaded 10s of thousands of files for Page 3 updates. CoD takes time to keep up to date and/or add features to, but at least it really doesn't cost anything to host. I'm not close to broke, but even if I was, I think I could afford this! As an aside, I can only host CoD this way because it was designed to run completely in browsers. CoD has no server-side logic, no database, etc. A site like this forum can't be hosted fully the way CoD is, because it needs to run server-side software and store dynamically changing data (posts, user accounts, etc.). I'm sure these forums cost the homecoming team way more than CoD cost me even before AWS' prices crashed.
-
That's good to know. Any suggestions on how to improve it? Bigger font? Something else?
-
Regarding the original question: You have to pay attention to the nesting of the sections in the power, as indicated by the lines on the left-hand side of each row of information. See how there is a line on the left that runs from that first "100% chance" (above where your picture starts) row down to the first "if target>enttype eq 'critter'". Then, indented a bit inside of that line there's another line that runs from the 2nd "100% chance" (the first one in your picture) to "if target.HasTag?(Electronic)"? And then there's another, separate line at the 2nd indentation level running from the third "100% chance" down to "if !target.HasTag?(Electronic)". Those nested or split lines show you how the effects are grouped, with the controlling condition at the bottom. So it reads like this: If the target is a critter: The target loses -40% Endurance The target suffers -500% Regeneration for 45s The target suffers -500% Regenerationfor 15s If the target has has the "Electronic" tag: The target takes 68.... points of Energy damage The target suffers suffers a 17.88s mag 3 hold There's a 50% chance the target suffers another mag 1 of the same duration. If the target lacks the "Electronic tag: The target suffers suffers a 8.334s mag 3 hold There's a 50% chance the target suffers another mag 1 of the same duration. If the target is a player: etc.... So basically the Electronic tagged things get a longer hold and damage, while others get a shorter hold. PS: In case you hadn't seen it, the nesting stuff is actually outlined in the help pages. Edit: Fixing my own misreading of the blocks!
-
Er. CoD isn't out of date. It has been current since about a week after Page 3 landed.
-
-
Yeah, that should be doable. It took a bit for me to understand what you meant, but looking at the raw data, I get it. I honestly don't think I realized this was a thing anywhere, as I don't much play either of those two powersets. I think your suggestion of displaying it only if it's more than one copy makes sense. It constantly breaks my head how much information is packed into powers definitions, and it's only likely to grow with time as our devs come up with new ideas. It's quite the (ongoing) challenge to display all it in a way that's reasonably compact. It always makes me appreciate what the game itself is dealing with, parsing all this stuff on the fly (in a much more compact format to be sure) to know what to do with our powers. When you think about how many patches, auras and other long-lasting effects can be in play at something like a raid or iTrial, plus all the players and critters activating click powers, it's kind of amazing to consider what all the engine is up.
-
OK, I didn't get to it Saturday, but I did get to it today. I hadn't realized Page 3 added "Running & Sprints" set category. (That name seems super redundant to me, but 🤷♂️.) There is actually still one plain "Running" set, just as there is still one plain "Leaping" set, so powers need to both plain versions and the "& Sprints" versions. I've fixed this. Also, I had not updated "Enhance Taunt" to "Enhance Threat Duration" in the code that builds enhancement icons when displaying set icons, which was why the site was saying "not found". That's a generic default message for "I could not load this data", which was happening because of an exception being hit when not finding "Enhanced Threat Duration". Because I have to remember to update the code to deal with name changes / additions like these, errors like this are likely to happen again in the future. There's no good reason for this to so thoroughly break functionality when it happens. I updated the page logic to display "unknown" icons instead of barfing. Adding the logic to display something special was easy, but I had to add a bit of logic to the game data extract code to explicitly generate these icons, since this red question mark icon doesn't exist in the game files. (The borders and backgrounds do, however.) They looks like this for "generic" boost types and set types, respectively. Likewise, the only thing the boostset info pages use the boostset category name for is to look up the background color for the icon. I've changed those pages to simply ignore rendering the background if the category name isn't recognized. This looks weird, but prevents the pages from completely breaking due to unrecognized names the way they did until now.
-
Hm, just noticed these posts. Ugh, the threat set one is, once again, a bug caused by the name change from "Taunt Duration" to "Threat Duration". It's very likely an easy fix, but I won't get to it tomorrow, as it's already well past my bedtime here. Look for it tomorrow afternoon. The Kuji-In Rin issue is basically the same issue with a different name. I'm pretty sure it's not handling "Jump & Sprint" sets. Every power with a leaping or running component shows no enhancements because of this. How has no one else noticed that? Edit: Couldn't get to it today, but tomorrow for sure.
-
Yeah, that's actually the table those critters look up, it really doesn't exist for critters. I have no idea what happens if the game tries to access a table that doesn't exist like that. I would hope for some sanity check to prevent a mapserver crash, and consider 0 damage a likely "fail safe", but am totally guessing without some code diving.
-
This morning I fixed a little fubar that's been lurking since the Page 3 update to CoD went live. Powers that accept Threat Duration set enhancements were missing their accepted enhancement display entirely, because that widget was hitting an error trying to look up the right icon for Threat Duration sets. Thanks to @Replacement for pinging me on Discord to report the missing enhancements display on a power, which led me to fix the root issue. I'm going to add some fail-safe logic to this so a missing icon results in an "unknown" icon instead of borking the display entirely. This sort of mishap is common when boost or set names change (which has happened a few times now), because I have to manually update the boost and set icon lookup tables that turn names into icons. (Which I half did for Page 3. I changed the generic / SO name-to-icon mapping, but not the set version. )
-
Another tiny update. Powerset pages now list powers in this sort order. Level the power is available to characters / critters Display name Internal name Historically, CoD has simply listed the powers in a powerset using the raw, native order in which they were listed in the game files. For regular AT powersets, this has usually been perfectly sensible, as those were fairly short lists of powers mostly pre-sorted by level. However, other "powersets", which are sometimes very large and often just big bags of loosely affiliated powers (like the "Set Bonus" powerset above), are often a wildly disordered mess. The new sorting should make finding powers in such grab-bag powersets a tiny bit easier without having to add column sorting to this page.
-
Uploaded a tiny tweak this morning. Most powersets of interest actually have long descriptions and (relatively) short names, so the display table on the "powersets" page is laid out to support that. Some powersets, though, have really long names and almost no description. Case in point, the "Set Bonus" powerset, where all the set bonus powers (including "globals") live. For a long time, such long names were simply truncated by the name column. I finally figured out a reasonably effective way to give them hover behavior that shows the full name in-line. The bold line with the background highlight is the one under the mouse in the two screenshots below. You can see that the line is allowed to extend into the next column and the background "glow" masks the text underneath. The CSS I used is a bit ugly, but seems to work fine on Chrome, Firefox and Safari. (Oh yeah, I can test on Safari now because my new job only issues Macs to employees. )
-
Now that ASF went live, what do you think of it?
UberGuy replied to Albion's topic in General Discussion
It's a click attack and not a toggle, so, like most such powers, it has a regular toHit check for all effects. -
I just pushed a semi-major update to the site's header layout and functionality. The hamburger icon that used to only be for navigating to the settings page is now on the left and, when clicked, brings up a navigation menu for the entire site. The gold color on "Power Search" is the hover color, added to make it more clear which link you're hovering over. The nav entry for the current page will be in white text and won't be a link. This icon currently requires you to click on it to get the menu to appear. I'd appreciate feedback on whether this is pleasant or annoying. I can make it appear simply on hover, like most of this site's popups. The new "hamburger nav" has the advantage of being available on all pages, so you don't have to go back to the landing page to, say, get from a power page to an entity search. I moved the button from the right side of the page to the left because some of the site's pages are quite wide, and the right-side elements are easily carried off-screen unless you use the horizontal scrollbar. I left the rest of them over there, since the things remaining there probably aren't accessed often from those pages. On that note of things on the right side, it is now possible to make a source-specific data link to the AT attribute and modifier pages using the revision link shown on the right side of pages. I have also added an info popup to the nav menu on the right side of the landing page hopefully making it clear that this new menu exists. This popup appears when you hover the mouse over any of the links over there, and is not interactive, so it won't interfere with using those links. After a while though I will probably remove these links. (I also added hover highlighting to these links, but I need to tune it a bit, as the color I am using is hard to see in light theme mode. Oops.) [Edit: Link hover colors tweaked.]
-
OK, all the above fixes are in, including the SZE script expressions being displayed in infix notation and "Script Nofity" being updated. Protection mag is now a positive number and +maxHP is scaled correctly. I also added a row hover highlight to the bonus list table.
-
Ah, good catch. I looked right at those during testing and it didn't even register. And yes, the issue is that the numbers I am displaying are the raw scales for the powers' effects, usually but not always multiplied by 100% when displayed. That works for most set bonuses because they use the "Melee_Ones" scale table. But the MaxHP ones, as you note, use the "Melee_HealSelf" table, and the values in there are such that the raw scale needs to be 10x bigger than the resulting percentage increase over base. This'll be fixed when I next upload fixed data files, which should be early evening and fix all of the issues discussed so far.
-
I am sure that's what happened. (Edit: Well, sort of. I updated the enum name in the Rust code, but forgot to change how it serializes to text.) I'll dig around tonight and update it. That'll require (extremely minor) changes to the Rust back-end and the easiest way to fix it everywhere will be to just rebuild the data. My upload tooling only uploads changed files, and there probably aren't that many powers using that attribmod. This is fixed, as is the sign on the protection attribs. For now I flip the signs in the web code, but longer term I will flip them in the data extract so I don't have to loop through nested data structures in the web code to modify the values on load.
-
Yeah, I might flip the sign on those. Any mez protection would have this going on, but KB prot is all we get in that realm.
-
😲 Not sure how I broke that.
-
I made a small update so that clicking the "Show Greater?" radio adds a column to the end of the table with the bonus values displayed, since otherwise what you're being shown can be a bit mysterious. This scale column can be used to sort the entries. If you have it set as the sort column and turn the "Show Greater?" filter off, the sort reverts to the set names.
-
And it's live. You can get to it from the navigation on the main page. Which reminds me, that list is getting long-ish and I want to make it accessible from every page, probably via a popup from an element on the header row. Maybe I'll just add "Settings" in there and replace the "hamburger" settings menu icon with a nav icon of some kind.
-
Scripts are pure server-side. We don't have access to it in the client files to display it. The fact that you see it on that page tells me a new attribmod is missing or out of placesomewhere in the data extract code. That's not what that power is supposed to be doing - its displaying the attribmod with the wrong name. I checked older files and that was there before, so it's not an error. Maybe once upon a time I didn't handle or display it. But in any case, we can't display that stuff on CoD using client files. That info is server-side only. I could display the script info in the files, but then it has to go somewhere on the page, and since the vast majority of critters don't have it, I decided not to bother. It's there in the raw data, which is visible. The one thing I can easily do is to translate the RPN/postfix notation into infix notation the way I do for other expressions.
-
-
I'll look into that. I have that data already for other sets-related pages, and I was already thinking of just pulling that data into this page for other display purposes.
-
That should be do-able. I think there's plenty of room in the table / on the page.