Jump to content
The Beta Account Center is temporarily unavailable ×

Number Six

City Council
  • Posts

    748
  • Joined

  • Last visited

  • Days Won

    15

Everything posted by Number Six

  1. Part 3 - Anatomy of a Power With all that history out of the way, I’ll jump straight into the design. Here’s a copy and paste from the documentation for how to use the new effects: Effect { AttribMod { Attrib kKnock Scale [num] Params Knock { VecStart [Anchor] VecEnd [Anchor] AdjustPYR [pitch] [yaw] [roll] Priority [integer] Vel [num] VelMag [num] Height [num] HeightMag [num] } } } A few bits of context here. kKnockback was renamed to kKnock, though the old name was retained so powers could be loaded without changing them immediately. kKnockUp was deprecated. Now that powers can specify what direction they want to knock something, having a separate attribute for it became wholly redundant. It still exists for compatibility reasons, but will eventually be fully replaced by kKnock effects and removed. The Knock parameters above also work for kRepel effects. The important part of that structure are the VecStart and VecEnd parameters, they put the vector in vectored KB. A ‘traditional’ knockback would use VecStart Source, VecEnd Target. A ‘get over here’ grappling hook power would use VecStart Target, VecEnd Source. VecEnd also accepts things like Up, Down, and Facing, which is where the KnockUp replacement comes in. The ‘Down’ vector is especially interesting, because it allows for the creation of powers that cause Knockdown but have a high magnitude and can punch through KB protection. This is something that was not possible before, since a high magnitude would normally mean a long knockback distance. Knockdown powers with a ‘down’ vector also cannot merge together into KB and will always stay as Knockdown. AdjustPYR is also quite a bit of fun and was used in the April Fool’s Day Brawl. After the knock vector is calculated, that setting can be used to rotate the vector along an axis and point almost any direction you can think of. Imagine a sweeping strike with a Titan Weapon that knocks the target left. Or a Whirlpool that uses vectored repel to actually drag things in a spiral. Priority is used to disambiguate effects that happen on the same tick. The new system is fairly smart about it and unlike the old one that could only remember a single source, it now merges multiple vectors together, so you end up with a final direction of everything averaged together. But if you wanted to make a power that takes precedence over everything else, a designer can do that by setting a higher priority. The last 4 are for fine-tuning the velocity of the effect and just how much of it is derived from the magnitude, as well as doing the simulated arc that traditional knockback effects have. Back to the design doc, the defaults that correspond to each type of effect are: kKnock (aka KB): Vel = 1.0, VelMag = 0.025, Height = 3.0, HeightMag = 0.25 kKnockup: Vel = 0, VelMag = 0, Height = 6.0, HeightMag = 1.0 kRepel: Vel = 0.5, VelMag = 0.2, Height = 0, HeightMag = 0 Velocity is in world units per tick, being roughly feet per 1/30th of a second. Val is a fixed constant, while VelMag acts as a multiplier on the magnitude from the kKnock attribute. Height is a fun one, having a Height is what simulates being knocked in an arc. It’s also… complicated so I’ll just snip part of the design doc rather than try to break it down. A lot of math for something that we take for granted.
  2. Part 2 - Visualizing the Change You Want to Be When I first began thinking about how to do something along the lines of reverse knockback, I decided that we needed to plan something that would be flexible and future-proof. A very early proof-of-concept prototype was done that added two new attributes, called kKnockIn and kAttract, just to test the concept. Those attributes worked exactly like Knockback and Repel, but with the source and target entities swapped. Those attributes were never intended to be anything more than a proof of concept, and indeed never even made it out of a development branch. Somewhere gathering dust I have a copy of Assault Rifle with an M30 grenade that makes big groups hilariously get flung right on top of you. There were obvious problems with that approach, the least of which being the annoyance of having to fill out class tables for these new attributes for 10+ archetypes, add them to every KB protection power or enhancement in the game, etc. Ultimately though, I thought that we could do better. There weren’t any real tools for moving entities around from powers other than Teleport (and ForceMove but that’s terrible, see the afterward), and I could think of all sorts of interesting things that could be done if the designers had more control there. So then came the brainstorming. After a lot of design revisions and bouncing ideas off the team, we came up with the sketch for the Vectored Knock system. It would be built on Effect Parameters - an innovation from the Issue 25 power system revamp that lets different effects take any number of arbitrary parameters in an efficient way - and would let designers specify not just the direction of the knock, but also fine-tune exactly how the velocity is calculated, so that the strength of the effect would not necessarily have to be tied directly to the magnitude. A priority system was also devised to give us the ability to decide exactly what happens if multiple conflicting effects are applied on the same tick.
  3. Part 1 - A History Lesson Before going too deep into how vectored knock works, let’s take a moment to rehash the mechanics that were in place for many years. Historically there are 3 of what we call Attributes that are of interest here: kKnockback kKnockUp kRepel Since these are standard attributes, they have a numeric value associated with a character -- by default everybody’s attribute for these are ‘0’. KB effects increase the value of your Knockback attribute, KB protection effects are just a negative magnitude effect that keeps it from going above 0. Incidentally, that’s why the commonly suggested ‘negative knockback’ couldn’t work; because negative knockback is just KB protection that you already get from a number of sources. Knockback is the most common of these effects. If the magnitude of the Knockback attribute ever gets above 0, an entity is Knocked -- some velocity is added to them and they are put into a special animation. For NPC critters, that can include going into ragdoll mode. The direction of the knock comes from the game remembering the last entity who hit you with a knock effect, this happens because effects very frequently have some amount of delay on them to wait for animations to play. That can cause some rather amusing artifacts if one of both of those entities moved a long distance between when the power was activated and the effect actually hits. The distance of the knock is calculated based on the magnitude of the effect, and the game also adds a surprising amount of calculated upwards velocity to make the target sail in a visually satisfying arc. Knockback also comes with a special case built into it. kKnockback attribute values that are above 0 but below 0.75 instead result in Knockdown, which plays a different falling-over animation and does not add any velocity or ragdoll. One well-known quirk of this mechanic is that if two separate Knockdown effects hit on the same combat tick, the combined magnitude may well exceed 0.75 and get converted to Knockback instead. KnockUp -- go on, get your giggles out and then get your mind out of the gutter -- is an entirely different attribute that works very similarly, but handles only upward movement. You may notice that KB protection powers actually provide both KB and KU protection separately. There’s not much to say about KU other than that the moment of velocity it imparts is calculated based on a different formula, but still based directly on the final magnitude of the effect (after KU protection is subtracted). Repel may seem very different at first, but is mechanically quite similar. Most of the difference in Repel effects don’t come from the attribute itself, but instead from how powers conventionally use it. The primary mechanical difference is that Repel does not make the target play an animation, and it pushes in a straight line away from the source instead of doing math to try to curve the arc. From a powers perspective, Repel effects usually have a duration and apply continuously, while Knockback effects are typically a 1-tick impulse. However, there’s no reason Repel couldn’t be used to give a sizable brief shove instead.
  4. Hello, heroes and villains! Some of you know me already, but for those who don’t, I’m Number Six, Homecoming’s lead for what we call the ‘code’ side of the development team. So not the outwardly fun stuff like powers and missions - though I do have some involvement in those - but the boring and technical things like engine development, user interface, data processing, etc. Basically anything that involves actual compiled program code goes across my desk. Today I want to talk about something that is near and dear to many of your hearts, or in some cases, hated with a fiery passion: Knockback. While it may be sometimes controversial, this game mechanic is not only iconic in the super genre in general and COH/V in particular, it’s also the vehicle for one of the more fun new toys we’ve developed for the content developers - the ‘data’ side of the team - to play with. As some of you may have noticed, a while back we quietly and without much fanfare slipped in an effect that had never been seen in the City before: Gravity Control’s singularity pet was changed to pull enemies towards it. This kind of ‘reverse knockback’ or ‘negative repel’ is something that had long been asked and theorized about, often in the context of crazy ideas for how to implement it with various hacks like spawning dozens of carefully positioned invisible pets. Those with even sharper eyes may have noticed all the way back in April 2020 when, for a day, Brawl was sending its targets flying in all sort of random directions. Both of those were tests of a new engine feature that we developed in February of 2020 that has a lot of exciting potential, far beyond simply sucking stuff to a central point. It gives power designs a new level of flexibility they never had before, and quite literally changes the game. Far from being just a new feature, the vectored knock system replaced the existing knockback mechanics entirely, which is part of why we were extra cautious about rolling it out and wanted to make sure it didn’t change the ‘feel’ of knockback in any way. Now that it’s been well over a year since the system was in place and nobody noticed the difference, we’re starting to see content that takes advantage of it emerge from the development pipeline. I’ll cover it in more detail further down, but the new system is used quite a bit in the new Strike Force and powersets being rolled out in Page 3. In this series of posts, I'll do a deep dive into the development of this feature and some of the technical underpinnings of how it works.
  5. @Jacke I think it was Freud who said, "Sometimes a pizza is just a pizza."
  6. We changed the default order because far more people use Beta than Prerelease, so it made sense to put that in a more convenient spot. Hardly anyone ever logs into Prerelease other than developers doing a final quality check before go live. At some point in the future it may be hidden by default (you can toggle this in the options page) to avoid any possible confusion. The good news is that the default order is just that, a suggestion, and you can re-order them however you like by simply dragging the little cards around. The default only applies if you haven’t ever customized the order, so once you do that it will stick forever, or at least until you change it again.
  7. About that, keep an eye on the beta patch notes tomorrow…
  8. No, but you don't have to go full villain if you want to play it. Vigilantes can join or even start strike forces.
  9. PhysX objects are purely clientside and don't even exist on the server, there's no way to do anything useful with them. Debris is debris. The game doesn't see any distinction between a rusted out car chassis summoned by propel and bullet casings from assault rifle or mail pulled out of mailbox by hurricane. The only way to limit it is to limit all of it, which you can do by turning down the particle physics settings.
  10. The official name is "Advanced Difficulty Options" to emphasize that they're optional, but yes. If you plan on trying those out I recommend copying over your most well-built Incarnated out characters to Brainstorm ahead of time.
  11. It wasn't so much the difficulty that was being complained about, but the time it took to defeat it. Since the trial is limited to only 4 players with a max level of 29, some team compositions might not have the tools available to deal with the huge health pool and regen rates that giant monsters have. Even with a stack of envenomed daggers it could take quite a while to burn it down depending on the team's damage output. It would take some awful hacks to make that workable in the current code. BUT, once page 3 is out, it contains new tech that makes this kind of thing possible. So who knows what the future holds...
  12. Halloween Event The Black Whip has been downgraded from Monster-class stats to Archvillain-class. As a result it will no longer drop reward merits when defeated. Fixed Sinister Summoner badge art not displaying properly on low graphics settings.
  13. It's been covered but the big pros are security, which is not even in the same league, and speed. Also the fact that it's actively maintained, unlike Tequila which has never been updated in any way during the entire life of HC, not even once. It's also far more convenient for us developers since it's fully integrated into our automatic build and deploy system. That's why beta patches will eventually be exclusive to the HC launcher where we can press 1 button and distribute to our CDN and publish to the launcher. Updating Tequila manifests is a manual process and while it's not a problem to do that during server downtime on patch day, out of cycle patches occasionally have a little bit of lag before they're available on Tequila, or if they're not critical sometimes it gets skipped entirely. The downside is that it's different than you're used to and if you're already using Tequila you have to let it create a second copy of the game (though you can remove the original later if you want). Also the security lockdown to make it unable to download anything unexpected means that it's exclusive to HC, so if you play on other server clusters it doesn't work for that. It is considered released. That happened when we updated the Installation Guide to reference only the new launcher.
  14. This was already fixed internally a while back. The fix will be included with Page 3 when it releases.
  15. Check where you installed the game and see if there's a 'crash' subfolder there. Inside you may find report and/or memory dump files that could be useful. Ideally those would be submitted through the crash handler since it pulls some extra information that helps with the automatic analysis, but if for some reason it's not popping up and we have to run them manually it may still give some clues.
  16. Before or after you redownloaded the launcher? If after can you pull your log file and verify it says build 4550? That's the macos-specific version that as far as I know should be working. @golias You'll also have to redownload it or use the steps I posted above to overwrite the exe; 4520 won't be able to update itself on M1 because of whatever unknown issue the Apple translation layer has.
  17. It’s almost always SG rank promotions / demotions or self-inviting an offline alt that causes this. There’s a few other relay commands that can force a character online long enough to run a command to update the character data, but they’re fairly niche situations like logging off while teammates are still on your mission map and they end up completing the mission, taskforce state changes, or a GM doing an offline move to rescue somebody who’s stuck and can’t log back in. The supergroup ranks are by far the most common. Now if you’ll excuse me I’m going to go rant because I know I’ve put in an exception to the timestamp being updated for that kind of load, but it appears to not be working.
  18. Version 4562 Miscellaneous Re-enabled some of the 4518 features that had been temporarily disabled as part of trying to fix the Mac M1 problems. Non-Intel mac users should use the 'macos' update branch for now, which has an older version of the launcher that should work on that platform. Added a work queue monitoring system that will automatically add some extra debugging information to the log file in the case of a possible deadlock or queue stall. This is to help narrow down the cause of some rare instances of installs pausing at 99% complete. May also help track down the Mac M1 problem if some adventurous person who knows how to manually roll it back wants to try this build and gather the logs. Made certain launcher update branches architecture-specific. This is to make it so people on a 32-bit system can't accidentally brick their launcher by trying to switch to the 'macos' branch, which only has a 64-bit launcher.
  19. @Matty091218 Try rebooting. A couple of people on discord have had similar issues, only to discover that it worked after a reboot.
  20. Apparently it wasn't the recent round of changes the caused this, but rather an overhaul of the packaging system done back in May that didn't go live until about 3 weeks ago. No issues on Windows or MacOS Intel, but something about the M1 emulation is causing it to deadlock. Until I can pin down the exact cause, I've created a third launcher code branch. In addition to the release and test branches, there's now a macos branch that is pinned to an older version of the code before that change. The file used by the Mac installer has been updated to point at this special branch, so if you're on an M1 mac and find that the launcher just hangs, you can either reinstall or use the procedure quoted below to replace the launcher exe with a version that works on that platform.
  21. Confirmed, Eternal Night will be turned on only for the first and last week of the event; the middle two will have the normal day/night cycle.
  22. No real changes in 4529 and 4537; these builds contain minor tweaks related to attempting to diagnose issues with M1 CPU macs.
  23. Just published build 4529. I have no idea if it will help or not since the changes that "caused" this were so minimal and don't make any sense. But it includes a reversion of one of those* so maybe it will make Rosetta happy. Existing installs will probably have to delete the current exe and replace it again, while new installs that are stuck in "completing" may be better off just deleting it and running the installer again. * I can't revert the certificate update since that will break things for people due to the CA expiring on Sep 30.
  24. @VulnaviaPhibes Is your mac Intel or M1?
×
×
  • Create New...