Counterattacks


Arcanaville

 

Posted

Does anyone have any idea, or a clear idea as to the feasibility of a system whereby a character could have increased damage, or the avenue for 'free' damage or the like, when they are struck, directed specifically at whoever struck them?


 

Posted

Quote:
Originally Posted by Talen Lee View Post
Does anyone have any idea, or a clear idea as to the feasibility of a system whereby a character could have increased damage, or the avenue for 'free' damage or the like, when they are struck, directed specifically at whoever struck them?
The last bit is the problem as far as I know. The engine doesn't support a "Attack whomever hit me" mechanism for whatever reason and I guess it's non-trivial to add.


 

Posted

Quote:
Originally Posted by Talen Lee View Post
Does anyone have any idea, or a clear idea as to the feasibility of a system whereby a character could have increased damage, or the avenue for 'free' damage or the like, when they are struck, directed specifically at whoever struck them?
You mean besides fury on a brute? While it is not specifically directed at whoever struck them, I would say that this system certainly shows feasibilty in a system similar to the one in your question.

--Rad


/whereami:

 

Posted

Only thing I can come up with against a specific target would be a single-target toggle or attack that gives that target -Def, -Res, -Regen, etc. Debuff them and your attacks against them will do more damage.

My beloved original Defiance gave Blasters' nice buffs to +Dmg and +ToHit when taking damage, kind of an indirect way to lay some extra smack down on a specific target if you want.


Pinnacle
@Mr.Catastrophe

 

Posted

Quote:
Originally Posted by Catastrophe View Post
Only thing I can come up with against a specific target would be a single-target toggle or attack that gives that target -Def, -Res, -Regen, etc. Debuff them and your attacks against them will do more damage.

My beloved original Defiance gave Blasters' nice buffs to +Dmg and +ToHit when taking damage, kind of an indirect way to lay some extra smack down on a specific target if you want.
That's where the issue happens though. The engine supports "I've been hit" but doesn't support "Attack the person who hit me with this attack / debuff".

Obviously the Standard Code Rant kicks in but I wonder if they could do something weird with PROCs though, basically a invisible aura around you which give enemies surrounding you a negative PROC effect when they launch successful Melee attacks.

Only issue would be the PROC would go off whenever they launched any melee attacks, not just ones directed at you.

So basically an aura power which gives all enemies within range a modified version of the Fiery Embrace proc affect which hits the Caster (which is them since they are Caster when they are making their melee attacks) with 5 or 10% damage any time they make a successful melee attack.


 

Posted

Quote:
Originally Posted by Talen Lee View Post
Does anyone have any idea, or a clear idea as to the feasibility of a system whereby a character could have increased damage, or the avenue for 'free' damage or the like, when they are struck, directed specifically at whoever struck them?
I think this suffers from the same problem that's preventing us from having a "deflection" system, where attacks against us would bounce back and hurt the attacker. There was some mention of infinite loops, but I admit I'm fuzzy on the details. Suffice to say that the engine couldn't handle it.


Winner of Players' Choice Best Villainous Arc 2010: Fear and Loathing on Striga; ID #350522

 

Posted

Quote:
Originally Posted by Talen Lee View Post
Does anyone have any idea, or a clear idea as to the feasibility of a system whereby a character could have increased damage, or the avenue for 'free' damage or the like, when they are struck, directed specifically at whoever struck them?
I PMed Castle a while back with a similar idea.

My idea was an IO to be slotted in resistance powers that has a chance (same as most damage procs) to deal damage to anyone that hits with a melee attack.

He said that it IS possible to do, but it would take up a lot of CPU cycles, and is therefore something he wouldn't allow players to have.

It would take up a lot of CPU cycles because it would have to check for anything that hits you with a melee attack, so there would be a lot of math going on every time you entered melee range (especially with a resistance based set that is hit more often).

(I have no idea what a CPU cycle is, it's the word Castle used for it)

Here is my original PM:

Quote:
Originally Posted by ClawsandEffect
I had an idea a while back for a new type of IO, and I can't remember for the life of me if I ever PMed you with it before.

I'm skipping the whole S&I forums on this one, because I have no idea if the coding is even feasible.

First a little background on where the idea came from.

I have a Fire/Regen scrapper. He is a mutant whose blood combusts instantly on contact with air. So it stands to reason that when he is cut in battle, the resulting blood spray would be on fire. That led me to an IO idea.

An IO that would deal damage to an enemy based on their action toward you. In this case, dealing damage to you would result in damage being dealt to them.

Obviously, if it were automatically dealt it would be overpowered, so I was thinking a low percentage chance (like 5-10%) to deal damage to an enemy within melee range who hits you with an attack flagged as melee.

It would probably have to be a unique, and probably have to be a low amount of damage in order to maintain balance.

It would be similar to a damage proc, which we have a bunch of already, only instead of having a chance to fire when you land a hit on an enemy, it would have a chance to fire when an enemy lands a hit on you.

What I was wondering was, is such a thing even possible to do? It seems like it should be, but there are a lot of things that seem like they should be possible, but aren't.

I don't see a whole lot of balance issues with it. If it were a low damage, low probability, unique proc it would be impossible to abuse. Just something that would add a little flavor to slotting choices.

After finding out whether it is possible I will then post in S&I to find out if such a thing would even be wanted. I dislike wasting time suggesting something only to discover that it's not possible to do with the current game engine, so I'm asking first.

A reply whenever it's convenient would be greatly appreciated, and thanks to you and the rest of the devs for being so accessible to the playerbase.

Claws
And Castle's response:

Quote:
It's possible, but expensive in terms of CPU cycles. It's not something I'd allow on a player power.
Those were taken word for word from my PM box (I never delete dev communications), so it's probably not going to happen.


Quote:
Originally Posted by Dechs Kaison
See, it's gems like these that make me check Claws' post history every once in a while to make sure I haven't missed anything good lately.

 

Posted

Sounds unfortunate, but accurate.

It occurred to me as a novel, oblative way to give stalkers AoE that wasn't just overpoweringly added to the 'dump AOES into spawns' malarkey. Ah well. Such is life.


 

Posted

The first thing I thought of when I started reading this thread was that if they did it, it would rapidly lead to situations similar to Lag Valley on the ITF. Good to see my suspicion was confirmed by Castle and the person who asked him about it.


"Null is as much an argument "for removing the cottage rule" as the moon being round is for buying tennis shoes." -Memphis Bill

 

Posted

Quote:
Originally Posted by ClawsandEffect View Post
(I have no idea what a CPU cycle is, it's the word Castle used for it)
It's basically the smallest unit of time that a computer program takes to execute an instruction. When the CPU is doing this, it cannot do other things, like launch an attack, animate graphics, or change object locations. Basically, you have a looping chain of activities, and the time it takes to come back to the beginning of the loop is how long it takes the game to respond to your input. Too many activities in the loop and the game slows down. (Even if you break up activities and schedule them to take place "at the same time", something called multithreading, the CPU STILL can only do one thing at a time. So it'll still slow you down)

A lot of the problem here is that it's something that is checking for an event to happen, instead of the event itself triggering the effect. A foe attacking you is an event, but for you to counterattack you would have to initiate it, not the foe. I'm honestly not sure that Fury works this way, but an example might be if it is monitoring the number of hits you take in a cycle. After the cycle, Fury checks that number, and applies its increase based on it.

Now, one solution might be for every attack programmed onto a critter (actually, every attack in the game, since it would need to work in PvP, too) to have a component that damages the caster if a given state is set. This is how Assassin Strike works (not to mention Containment) an additional damage component is added if you are in the Hide state. You might call this a "Reflect" state, and if your foe is in the Reflect state, you take the damage. That would be originated by the attack itself and you wouldn't need to poll for it.

The amount of work it would take to add a Reflect damage to every single attack in the game, critter and player, would likely make it not worth the effort. Plus, it would have to be a constant effect, it would not be determined by YOUR level, but the stats of the critter attacking you, and couldn't be Enhanced, or buffed by your damage buffs. (So it couldn't be a proc. The only control you would have over it is turning on the Power that turns on the "state")


 

Posted

Quote:
Originally Posted by Jade_Dragon View Post
Even if you break up activities and schedule them to take place "at the same time", something called multithreading, the CPU STILL can only do one thing at a time. So it'll still slow you down
That's true for a subscalar CPU, without instruction level parallelism. Just about every modern CPU (even single-core CPUs) have ILP, which will at least bring them up to scalar level in the general case, barring pipeline stalls.

Superscalar design adds a dispatcher on top of the ILP, which, as the name suggests, improves upon the ILP of a scalar model. Superscalar isn't expecially new, either. The Intel P5 Pentium was superscalar for integer operations, and the P6 was superscalar for both integer and floating point operations. The P6 microarchitecture was introduced in 1995. The Intel Core microarchitecture is descended from the P6, and is the basis for most of the actively used Intel CPUs.

Multi-core processors simply add on top of the ILP. Essentially, multiple CPUs acting in concert as one, which increases simultaneous instruction processing even further. Of course, in all of the above, a poorly written instruction sequence can stall the whole operation regardless.

A friend of mine is doing research development on many-core processors, on the order of 40,000 cores (apparently, there's some government computer with approximately that many). A quick glance at Wikipedia says there's the Ambric Am2045 available on the market now, with 336 cores.

My computer only has 2.


http://www.fimfiction.net/story/36641/My-Little-Exalt

 

Posted

And just to note, in this particular case, we're talking about work being done by the server side of the game and sending it to the player over the internets in a timely fashion. Our machines at home may be able to handle a ton of calculations. Their servers may be able to handle a ton of calculations. But when you magnify the number of calculations you have to send across the wire quickly, that's where things break down. Especially when you factor in sending those details to every character playing at a given time.


"Null is as much an argument "for removing the cottage rule" as the moon being round is for buying tennis shoes." -Memphis Bill

 

Posted

Quote:
Originally Posted by Fleeting Whisper View Post
That's true for a subscalar CPU, without instruction level parallelism. Just about every modern CPU (even single-core CPUs) have ILP, which will at least bring them up to scalar level in the general case, barring pipeline stalls.

Superscalar design adds a dispatcher on top of the ILP, which, as the name suggests, improves upon the ILP of a scalar model. Superscalar isn't expecially new, either. The Intel P5 Pentium was superscalar for integer operations, and the P6 was superscalar for both integer and floating point operations. The P6 microarchitecture was introduced in 1995. The Intel Core microarchitecture is descended from the P6, and is the basis for most of the actively used Intel CPUs.

Multi-core processors simply add on top of the ILP. Essentially, multiple CPUs acting in concert as one, which increases simultaneous instruction processing even further. Of course, in all of the above, a poorly written instruction sequence can stall the whole operation regardless.

A friend of mine is doing research development on many-core processors, on the order of 40,000 cores (apparently, there's some government computer with approximately that many). A quick glance at Wikipedia says there's the Ambric Am2045 available on the market now, with 336 cores.

My computer only has 2.
All of the above is absolutely true.

However, in the end it doesn't change the fact that even processing multiple instructions at the same time, you are still limited by the speed it takes to process those instructions. A CPU running dual core at 300 Hz is the same thing as a CPU with a single core processor running at 600 Hz. While it is twice as fast, you're still going to run into the same problem, which is if you eat up too many cycles the game will slow down.

I also didn't mention the fact that the graphics is usually not processed by the CPU either, but by the graphics card. And of course as Lemur pointed out, this is actually being handled by the server, and not our client. All the network traffic really has to deal with is the final calculated value of Fury at that time.


 

Posted

Quote:
Originally Posted by Jade_Dragon View Post
A CPU running dual core at 300 Hz is the same thing as a CPU with a single core processor running at 600 Hz. While it is twice as fast, you're still going to run into the same problem, which is if you eat up too many cycles the game will slow down.
*picks a nit, hands it to Lemur Lad*
A dual core processor rarely actually doubles the processing speed. It's closer to +50%.

Quote:
Originally Posted by Jade_Dragon View Post
I also didn't mention the fact that the graphics is usually not processed by the CPU either, but by the graphics card. And of course as Lemur pointed out, this is actually being handled by the server, and not our client.
Of course, the server doesn't handle graphics at all

Also also: with the exception of computers that have no business playing an MMO, the graphics card is also working in parallel with the CPU.


http://www.fimfiction.net/story/36641/My-Little-Exalt

 

Posted

Sorry, wasn't trying to be picking just preemptively explaining one of the main reasons this isn't done, before someone comes in and says, 'I haz beefeh computer! I demand they make it my machine can handle it!'


"Null is as much an argument "for removing the cottage rule" as the moon being round is for buying tennis shoes." -Memphis Bill

 

Posted

Quote:
Originally Posted by Lemur Lad View Post
Sorry, wasn't trying to be picking just preemptively explaining one of the main reasons this isn't done, before someone comes in and says, 'I haz beefeh computer! I demand they make it my machine can handle it!'

but but but but........ i haz beefeh 'puter.....


Oh yeah, that was the time that girl got her whatchamacallit stuck in that guys dooblickitz and then what his name did that thing with the lizards and it cleared right up.

screw your joke, i want "FREEM"

 

Posted

I'd just be glad if we could get the ability to dodge. It's just instinctive. Still to this day I'll see a chunk of floor ripped up, or a rock about to be thrown. I'll see it come at me and I'll sidestep it.

Yet the chunk of floor had some kind of homing device... somehow...
Oh and it phased through the wall as it curved towards me.


I mean, I expect it by now but it's still jarring. That and the occasional 'move while blasting' glitch makes me really wonder what this game could be like.

Then we can get to counterattacks.


Maestro Mavius - Infinity
Capt. Biohazrd - PCSAR
Talsor Tech - Talsorian Guard
Keep Calm & Chive On!

 

Posted

Quote:
Originally Posted by Lemur Lad View Post
Sorry, wasn't trying to be picking just preemptively explaining one of the main reasons this isn't done, before someone comes in and says, 'I haz beefeh computer! I demand they make it my machine can handle it!'
Quote:
Originally Posted by Traegus View Post
but but but but........ i haz beefeh 'puter.....
I haz beefeh computr...my graphixal card sux


There I was between a rock and a hard place. Then I thought, "What am I doing on this side of the rock?"

 

Posted

Quote:
Originally Posted by Fleeting Whisper View Post
*picks a nit, hands it to Lemur Lad*
A dual core processor rarely actually doubles the processing speed. It's closer to +50%.
Once again, simplifying for the layman.

Honestly, you can only get double the speed out of a dual core processor if you are taking advantage of multithreading, and those two operations are not mutually exclusive, or are unable to be performed on one processor or the other for some reason. Most of the time, your system is doing so little that there is no reason but for a single core to be handling the instructions. (Such as, when it is idling)

I'm going to assume, though, that the CoH server code is doing the same thing for so many different players that there is plenty of opportunity for all available processors to be... processing.


 

Posted

Hey! I was going to pick that nit!

Having done a [very little] bit of work with UnrealScript, a server with only eight moving things on it is still doing a whole lot of work every "tick" (30 per second is about nominal for Unreal. I don't remember what Arcana worked out as a tick for this game.) If you start adding things like, for instance, distance calculations to every enemy every tick after a hit, it gets to be a bit of extra work... and there are 500 people on Infinity every night, half of which are probably in a fight at any given time. There was "hamidon lag" when 300 people were in the same fight, and the server actually couldn't get everything done in a nominal tick so time really DID slow down.


Mini-guides: Force Field Defenders, Blasters, Market Self-Defense, Frankenslotting.

So you think you're a hero, huh.
@Boltcutter in game.

 

Posted

Quote:
Originally Posted by Lemur Lad View Post
Sorry, wasn't trying to be picking just preemptively explaining one of the main reasons this isn't done, before someone comes in and says, 'I haz beefeh computer! I demand they make it my machine can handle it!'
Quote:
Originally Posted by Traegus View Post
but but but but........ i haz beefeh 'puter.....
Quote:
Originally Posted by Twisted Toon View Post
I haz beefeh computr...my graphixal card sux
i haz beefeh computer, and mai graficle card not sux. Still, i already appreciated that it would add mostly to the calculations the server has to do for every interaction between objects, so i have no intention of demanding it be done. Good $deity, a zone-capped mothership raid can already bring the server almost to its knees as it is.


Dr. Todt's theme.
i make stuff...

 

Posted

Quote:
Originally Posted by Fleeting Whisper View Post
*picks a nit, hands it to Lemur Lad*
A dual core processor rarely actually doubles the processing speed. It's closer to +50%.
Depends on the threading and the core architecture. Nehelem dual cores can consistently get above that, and some other architectures that implement even more independent cores like Bobcat can probably start to approach 100% on threaded applications that don't stall the floating point unit.


[Guide to Defense] [Scrapper Secondaries Comparison] [Archetype Popularity Analysis]

In one little corner of the universe, there's nothing more irritating than a misfile...
(Please support the best webcomic about a cosmic universal realignment by impaired angelic interference resulting in identity crisis angst. Or I release the pigmy water thieves.)

 

Posted

Quote:
Originally Posted by Jade_Dragon View Post

Now, one solution might be for every attack programmed onto a critter (actually, every attack in the game, since it would need to work in PvP, too) to have a component that damages the caster if a given state is set. This is how Assassin Strike works (not to mention Containment) an additional damage component is added if you are in the Hide state. You might call this a "Reflect" state, and if your foe is in the Reflect state, you take the damage. That would be originated by the attack itself and you wouldn't need to poll for it.

The amount of work it would take to add a Reflect damage to every single attack in the game, critter and player, would likely make it not worth the effort. Plus, it would have to be a constant effect, it would not be determined by YOUR level, but the stats of the critter attacking you, and couldn't be Enhanced, or buffed by your damage buffs. (So it couldn't be a proc. The only control you would have over it is turning on the Power that turns on the "state")
But if you consider Castles recent change to Fiery Embrace you don't necessarily need to change every critter & player power in the game to allow it. You just give the player an aura power which inflicts a negative Fiery Embrace proc affect to enemy attacks within range.

Obviously I've no idea if that's what Castle was talking about as being Cycle intensive or he was referring to another, older, more correct way to simulate Reflect damage.


 

Posted

Quote:
Originally Posted by Fulmens View Post
I don't remember what Arcana worked out as a tick for this game.
The server quantum is 1/30th of a second. The animation clock is also 1/30th of a second. The combat clock is 1/8th of a second (0.125s). There are some other clocks I've inferred in there, but they may just be derivatives of those two. The "ArcanaTime" factor of 0.132s is a "beat" that occurs due to an interaction between the animation clock and the combat clock.

But I believe the game server world itself updates in terms of discrete 1/30th of a second intervals. A lot has to happen in that 1/30th of a second to prevent server-lag from occuring. Blowing the server quantum was the primary source of lag during old-school Hamidon raids: doing so actually slows down the zone's** effective chronometer, which causes time to slow down (which slows down among other things recharge, mez duration effects, and power activations, all significant to Hamidon raids)


** I say "zone" but its not 100% conclusive that a slowdown in one part of a zone slows down time in all parts of the zone all the time. I think it sometimes does, but its also possible zones are subdivided and lag doesn't propagate to all elements of the zone equally. But no one thought to do conclusive experiments along those lines back then. Still, when there is a zombie or rikti zone event, packed hot spots don't automatically lag out the entire zone equally, do they?


[Guide to Defense] [Scrapper Secondaries Comparison] [Archetype Popularity Analysis]

In one little corner of the universe, there's nothing more irritating than a misfile...
(Please support the best webcomic about a cosmic universal realignment by impaired angelic interference resulting in identity crisis angst. Or I release the pigmy water thieves.)

 

Posted

Taking a different tack on the problem, I wonder what you could cobble together with a pseudopet and the MM bodyguard code. Pets in bodyguard (that aren't already doing something) will immediately attack anything that attacks the player, which is the essence of what's trying to be achieved here.


"Trust me, it worked in the Simpsons." - Calash