Project Perfect Mod Forums
:: Home :: Get Hosted :: PPM FAQ :: Forum FAQ :: Privacy Policy :: Search :: Memberlist :: Usergroups :: Register :: Profile :: Log in to check your private messages :: Log in ::


The time now is Fri Mar 29, 2024 10:43 am
All times are UTC + 0
[Ares] Shield Logic
Moderators: Ares Support Team at PPM, Global Moderators, Red Alert 2 Moderators
Post new topic   Reply to topic Page 1 of 2 [93 Posts] Mark the topic unread ::  View previous topic :: View next topic
Goto page: 1, 2 Next
Author Message
Zero18
Commander


Joined: 10 Dec 2012
Location: I'm too busy conquering the world!

PostPosted: Mon Oct 27, 2014 2:16 pm    Post subject:  [Ares] Shield Logic Reply with quote  Mark this post and the followings unread

Shield Logic should be imply as new feature for Ares next update.

Shield.Strength= life of the shield itself
Shield.Armor= armor type of the shield
Shield.Range= what is the range of shield? (Range circle indicator)
Shield.Recharge= Rate of recharging. 15 frames = 1 second. (After being attacked)
Shield.RechargeRate= 10 (Gives 10 life back to shield based on Recharge)
Shield.Green= Full health shield / little damaged SHP
Shield.Yellow=Heavily damaged shield SHP
Shield.Red=Critically damaged shield SHP
Shield.GreenPercentage=100%
Shield.YellowPercentage=50%
Shield.RedPercentage=25%

Instead having shield bar, this logic will allow customizable shield SHP for all three stages. (Green, yellow, red). Customizable percentage also allows choices of setting percentage for stage of shield. The shield range circle, like you can see it when selecting flak cannon or sentry turret which have range circle --- will stop any attacks and absorbs the damage.

Armor and life are entirely different set from vehicle and have their own value. With that, it will be possible to make a unit that have tough shield, but fragile when shield are down.

Discuss, I would want to see this being added as a feature for ares.

_________________
Mod Leader and founder of World Domination


Back to top
View user's profile Send private message
Parasite03
Cyborg Artillery


Also Known As: ZivDero
Joined: 23 Jul 2013
Location: Russia

PostPosted: Mon Oct 27, 2014 5:06 pm    Post subject: Reply with quote  Mark this post and the followings unread

You are not the first one to think of this... Maaaaaaaaaaany pleople requested this.

_________________
DarkVen9109 wrote:
What in the name of insanity is this? I FRICKING LOVE THIS LOGICCCC!!!!!!!!!!!!OOOOOOOOHEEAWWWWWWWWWWWYAAAAAAAAAAAAAAAAAWWWWWW PEW PEW PEW PEW BOOM BOOM BOOM!! Nice I love this!!!! Ferriswheel bomb, Dive bomb. New Logic discovered thanks to Kenosis Very Happy

_________________

Back to top
View user's profile Send private message
RP
Commander


Joined: 12 Jul 2012
Location: Mapping God Heaven

PostPosted: Mon Oct 27, 2014 5:42 pm    Post subject: Reply with quote  Mark this post and the followings unread

Aye, that's right Parasite03.

From what I see I'd already get rid of 6 tags which are Green(Percentage), Yellow(""), Red("").

The game has the damage stages hardcoded to some values.
I'd replace the 3 tags for an SHP with a single SHP file that uses frames (like BuildingTypes!).
The tags for Percentage are ridiculous; why should the game keep track of custom damage stages (which are the same as the defaults) while it can manage that on its own perfectly fine?

RechargeRate and Recharge imply different things.
Quote:
Shield.Recharge= Rate of recharging. 15 frames = 1 second. (After being attacked)

Quote:
Shield.RechargeRate= 10 (Gives 10 life back to shield based on Recharge)


Did you misplace the '=' character on the first one? #Tongue
Recharge= Rate
RechargeRate=

IMO a significantly stripped down version would be a better first implementation because it's more generic and more people would use it.
If people want #MOre, AlexB or Graion can always look into it.

_________________


Mental Omega 3.0 Mission creator - Creator of FinalOmega: APYR 3.0 Map Editor

/ppm/'s stupidity

Back to top
View user's profile Send private message
Renegade
Cyborg Artillery


Joined: 21 May 2006
Location: Hamburg, Germany

PostPosted: Mon Oct 27, 2014 5:57 pm    Post subject: Reply with quote  Mark this post and the followings unread

Years later, and you people still don't grasp this: If you can't even be arsed to type six characters and hit search, why would Alex waste his spare time for you?

https://blueprints.launchpad.net/ares/+spec/active-protection-systems
https://blueprints.launchpad.net/ares/+spec/sc-like-plasma-shields-and-ae-bonuses
https://blueprints.launchpad.net/ares/+spec/shields-on-technos

It's not even just a question of efficiency, it's a question of respect - after all he's done for you, you still don't value him enough not to waste his time with redundant suggestions and unnecessary clutter?

_________________
#renproj:renegadeprojects.com via Matrix - direct link

Back to top
View user's profile Send private message Visit poster's website
Zero18
Commander


Joined: 10 Dec 2012
Location: I'm too busy conquering the world!

PostPosted: Mon Oct 27, 2014 6:40 pm    Post subject: Reply with quote  Mark this post and the followings unread

Renegade wrote:
Years later, and you people still don't grasp this: If you can't even be arsed to type six characters and hit search, why would Alex waste his spare time for you?

https://blueprints.launchpad.net/ares/+spec/active-protection-systems
https://blueprints.launchpad.net/ares/+spec/sc-like-plasma-shields-and-ae-bonuses
https://blueprints.launchpad.net/ares/+spec/shields-on-technos


Shield logics are clearly in demand. While each individual have their own ideas of how shield works. Perhaps some of the ideas can be merged together, I think range indicator will make it look nicer and cooler. Whatever works the best for implying Shield Logic. Smile

@RP, indeed, a stripped down version of shield logic will be good idea too. And no, that was not misplaced. I did it on purpose. Recharge = interval time for self repair. RechargeRate= how much life points is given back to shield based on interval time (Recharge)

_________________
Mod Leader and founder of World Domination


Back to top
View user's profile Send private message
Parasite03
Cyborg Artillery


Also Known As: ZivDero
Joined: 23 Jul 2013
Location: Russia

PostPosted: Tue Oct 28, 2014 7:07 am    Post subject: Reply with quote  Mark this post and the followings unread

Everyone has his own ideasa, including Alex. The fact that people imagine it that way doesn't mean Alex will do it like that.

_________________
DarkVen9109 wrote:
What in the name of insanity is this? I FRICKING LOVE THIS LOGICCCC!!!!!!!!!!!!OOOOOOOOHEEAWWWWWWWWWWWYAAAAAAAAAAAAAAAAAWWWWWW PEW PEW PEW PEW BOOM BOOM BOOM!! Nice I love this!!!! Ferriswheel bomb, Dive bomb. New Logic discovered thanks to Kenosis Very Happy

_________________

Back to top
View user's profile Send private message
Black Temple Gaurdian
Soldier


Joined: 08 Aug 2010

PostPosted: Tue Nov 04, 2014 3:09 pm    Post subject: Reply with quote  Mark this post and the followings unread

And even then the core idea's no different, so why repost it? At most add a comment to the existing Bug/Blueprint.

Back to top
View user's profile Send private message
Millennium
Commander


Joined: 09 Mar 2008
Location: Osaka (JP)/Hong Kong/Germany

PostPosted: Mon Nov 10, 2014 10:45 pm    Post subject: Reply with quote  Mark this post and the followings unread

I don't really see why shields are necessary or even useful. I think it would be much more useful to look at it in terms of having 'damage states' on infantry and vehicles, not just buildings. The first stages could then include a purely graphical shield effect on the SHP or voxel.

And taking this line further, how about this idea would get merged with the "unit-to-unit transformation" line of thought? You could have a unit with an AE shield and upon taking bla-di-bla % of damage, a unit-to-unit transformation is triggered to another unit without that effect.

Useful tags might include things like HealthbarColor and InitialHealth.

_________________
Mao Zedong wrote:

Our mission, unfinished, may take a thousand years.  

Back to top
View user's profile Send private message
AlexB
Commander


Joined: 31 May 2010
Location: Germany

PostPosted: Tue Nov 11, 2014 8:23 pm    Post subject: Reply with quote  Mark this post and the followings unread

I think I should post here regarding Shields in general. As Renegade pointed out, there are several requests proposing different implementations for different purposes already. And it is true that I'm not motivated to look up all four now to find out what they have in common and what is different, or what can be unified into a single working logic. I know this isn't doing the people justice who took the time to write the proposals.

What we want, what we have
I mentioned this already in various places, but doing the research for certain things can be very time consuming. An easily asked question like "wouldn't this work" in some cases can only be answered after actually doing "this". I see 40 tags on 4 proposals, and two rather distinct use cases: shields protecting only the bearer of the shield, or protecting a larger area around it. Then there are differences in whether all projectiles should be stopped, only if allowed, or after some cooldown time. Then shields could regenerate or not. Graphic stuff like health bars, shield animations for each health level. Ignoring certain projectiles by some property. Shields affecting experience and ranges. Warheads passing through shields, or use a special damage when hitting a shield. Shields interacting with EMP. I can't give an estimate which would work well, which would not.

Four requests, which I looked at many times in the last week. I couldn't make out a beginning which all four have in common. Maybe it really should be two distinct logics, intercepting versus personal damage reduction.

Why not this?
Certain things are more difficult than others. Changing the armor for anything else than damage calculation in case the unit is hit is more complicated, because lots of functions need to be updated for that to work. Interceptors could make the game slower, if they need to check every frame whether a projectile is in range of any of them. I remember the Firestorm check which bogged the game down before Ares 0.2. It still can, because I only skipped the code in case no Firestorm is active. Making the game slower is too easy. I think for efficient interceptors, Ares needs a few updates first. I'm working on them, but I'm afraid it won't be for 0.9.

The shields proposed here is a mixture of both use cases it seems. It has a radius, thus it's intercepting. And it has Shield Strength, which is the personal shield feature. From all these I cannot decide what would be best. And I'd have to invest some time to come to a conclusion. The biggest issue is that they all are quite monolithic, big blocks that are difficult to mix and match. Or to split up into smaller parts that can be done on their own without being nonsensical or useless.

How there can be progress
I like the idea of shields as well as fancy interceptors catching flying by missiles, but having personal shield that also would allow to be added to a unit as an Attach Effect, or having Interceptors that also interact with a personal shield (other than just directly forwarding the damage to the interceptor itself) is too complex to even think about. This is why I'm reluctant to even think about this. Alas, there is no path like "Perfect shield implementation in 5 easy steps". To take step 1, all other steps need to be worked out already, or step 4 could be "Undo step 1, do something else instead".

But please, refrain from adding more logics into the mix. Making things simpler by doing more is seldom a solution that makes things easier. Shields on deployable units would already need to be handled specially. Unit to unit type conversion would require the same set of special rules applied a second time. AE would be complicated already because potentially many shields could be active at the same time, which alone is just overkill.

Afaics, the most basic step would be personal shields giving a unit extra strength, optionally self-regenerating and potentially with pass-through factors or different armor. Opting for any of the latter makes two or more shields on the same unit unfeasible (not that it's easy without them already...). So, the first step already dictates which direction this feature will be moving in. Each further step will lose possible features for the future, and right now I don't see what features most of you want.

Conclusion - tl;dr
Things have to be made simple - by stripping them down, not by sharing implementation with other features that also have to be added yet. For now, this is a no.

_________________

Back to top
View user's profile Send private message
ApolloTD
Commander


Joined: 19 Nov 2003

PostPosted: Wed Nov 12, 2014 3:03 am    Post subject: Reply with quote  Mark this post and the followings unread

I would presume this could be simplified by shield health taking the damage from everything its fired with instead of normal health thus there isn't any real interception like firestorm, more like absorption of damage until shield health is no more or until it regenerates and normal hitpoint damage is done.

Doing actual interception stuff is probably bound to be always too laggy tho and thats mainly firestorm ideal but not something to use in units or wider use.

Any ideas of changing the vehicletype according to 'shield health' ideas should be dropped as this would ruin the AI task forces.

Back to top
View user's profile Send private message
Mig Eater
Defense Minister


Joined: 13 Nov 2003
Location: Eindhoven

PostPosted: Wed Nov 12, 2014 8:51 am    Post subject: Reply with quote  Mark this post and the followings unread

The minimum tags needed for shield logic are IMO;

Shield.Strength=
Shield.Armor=
Shield.RechargeRate=
Shield.RechargeStep=
Shield.Anim=

If a unit has a shield make the health bar start as blue (could use frame 5 of pips2.shp), then once the shield has been drained switch to the normal health bar.

Another tag like Shield.RechargeEmptyRate= might be necessary for the handling of a fully depleted shield, but that depends on how the modder uses the first tags.

_________________



Back to top
View user's profile Send private message Visit poster's website ModDB Profile ID YouTube User URL Facebook Profile URL Twitter Channel URL
Lin Kuei Ominae
Seth


Joined: 16 Aug 2006
Location: Germany

PostPosted: Wed Nov 12, 2014 9:08 am    Post subject: Reply with quote  Mark this post and the followings unread

A more general and simple solution/idea

Allow a unit to switch into another unit at its death instead of getting removed from the battlefield.
When the initial unit dies, the next one is used

e.g.
;uses normal undamaged art
[HTNK]
Next.Unit=HTNKD
Primary=120mm

;uses damaged art
[HTNKD]
Techlevel=-1 ;you don't build this
Primary=120mmDamaged

You build HTNK and when HTNK "dies", it doesn't get removed but switches to HTNKD, whose stats are then used.

It's basically one unit switching to another at the death event.
This way you would solve shields, damage images, damage states, different weapons for different stages etc etc

Shields would be simply HTNK showing a small transparent sphere and using Selfheal=yes.
Once destroyed, HTNK is gone and you see HTNKD instead.
e.g.
;uses graphical shield effect
[HTNK]
SelfHealing=yes
Next.Unit=HTNKD
Strength=300 ;300 shield strength
Explosion=ShieldDepletedAnim ;no explosion but some kind of transition effect between 1st stage unit and 2nd stage

;uses normal art
[HTNKD]
Techlevel=-1 ;you can't build this
SelfHealing=no
Strength=600 ;600 normal hitpoints

Pros:
-This would be one single key solving many different modding possibilities and logics.
-You don't need to invent many new keys, but only one.
-you can use all the normal unit keys now for new purposes like, use the Explosion animation of the first stage for some kind of transition effect (e.g. a shield depleted/collapse effect)
-you can then also use the logic for 3rd and 4th stage units

The logic would be comparable with the Harvester unloading image change, except that it is now really switching from one unit to another.

_________________
SHP Artist of Twisted Insurrection:  Nod buildings

Public SHPs
X-Mech Calendar (28 Mechs for GDI and Nod)
5 GDI, 5 Nod, 1 Mutant, 1 Scrin unit, 1 GDI building

Tools
Image Shaper______TMP Shop______C&C Executable Modifier

Back to top
View user's profile Send private message
Mig Eater
Defense Minister


Joined: 13 Nov 2003
Location: Eindhoven

PostPosted: Wed Nov 12, 2014 10:45 am    Post subject: Reply with quote  Mark this post and the followings unread

I would love to see a Next.Unit= type system, it would be possible to create unit wrecks/husks etc.

But I don't really see it convincingly working as a shield tho. Unless HTNKD can transform/regenerate back into HTNK after sometime. As well as some additional anim tags to make the "transparent sphere" only appear when the unit is hit (the unit being hidden under an anim all the time would look bad & lag the game severely).  

As Apollo also mentioned unit switching would mess up the AI, so some sort of linking between HTNK & HTNKD so the AI thinks they are the same unit would be necessary too.

_________________



Back to top
View user's profile Send private message Visit poster's website ModDB Profile ID YouTube User URL Facebook Profile URL Twitter Channel URL
ApolloTD
Commander


Joined: 19 Nov 2003

PostPosted: Wed Nov 12, 2014 2:13 pm    Post subject: Reply with quote  Mark this post and the followings unread

Point of the shield would also be to replenish itself when it is not under attack and if you also do whole unit death transformations, you also gotta deal with whole unit promotion from kill rewarding thing so you don't get those when you've just killed the shield instead of actual unit.

Unit transformations best considered for things like Mobile E.M.P charged and not charged versions/Chrono Tank deploy mode or like mig said wrecks/husks IMO as merging these earlier ideas creates extra issues to account for.

Back to top
View user's profile Send private message
Millennium
Commander


Joined: 09 Mar 2008
Location: Osaka (JP)/Hong Kong/Germany

PostPosted: Sat Nov 15, 2014 9:23 am    Post subject: Reply with quote  Mark this post and the followings unread

Yes, that's very much the thought I tried to initate here.

I would just like to add that I would find it useful to have the transformation not necessarily at 0%, but maybe to make it possible for it to transform earlier. Maybe at 50% HP, it could transform to a shot-up, slow-moving (think GEN/ZH) version, at 25% it becomes immobile.
InitialHealth on the NextStage would then make the shot-up version start at 50% healthbar and the immobile version at 25%.
And THEN, you could simply have, say (just an example):

Code:

[HTNK_DAMAGED]
TransformX.Trigger=HEALTH,51%
TransformX.Type=HTNK


to tell the engine that as soon as this unit is back at 51% HP, it should transform back into HTNK, be it through repair, self-heal, whatever.

Alternatively, you could just re-code the healthbar in a way that gives control over how much of it will be depleted at a given % of HP, so HTNK could be destroyed (and hence go to its HTNK_DAMAGED version) with the healthbar still showing 50%.

HealthbarColor, obviously, would be a feature mostly intended for Shield logic proper, with a different healthbar color used to represent the VehicleStage that has a shield on it (although modders might find different uses for the tag).

Also, as for animations called up when a unit is hit, we already have that - the Iron Curtain effect. This animation effect could just be recreated for other states that a unit is under. Perhaps even generic AnimationDamaged= tag, like SoundDamaged=.

The one problem I see with LKO's method, btw, is that the unit could not go back to its shielded state if it does not have full *health* - which isn't really how StarCraft has it, if that's the shield effect we want.

If you DO want SC's shield effect:
In SC, a unit can be at 50% HP and still regenerate its shield back to full, so if you were to implement that via Unit Transformation... you would probably need a SECOND hidden health tag (in that case, perhaps best just make generic variables that can be attached to a unit), and Unit Transformation that MEMORIZES the health of its previous type... so when, say, a unit transforms to its shielded state while at 50% HP, then the NextStage unit would have to memorize that its previous stage was at 50% HP and fall back to that value when it is destroyed. This sounds very complicated to me, but I'm no programmer.
Arguably, there is alot that will have to be held over between transformations anyways (AEs, ammo, storage, passengers, charge, etc), so perhaps having cache for previous stage health is not that far off, even if the memorized HP value has no immediate value on the unit.

Back to top
View user's profile Send private message
RP
Commander


Joined: 12 Jul 2012
Location: Mapping God Heaven

PostPosted: Sat Nov 15, 2014 1:52 pm    Post subject: Reply with quote  Mark this post and the followings unread

Ugh you don't even read what AlexB replied...
He said not to expand on it but rather size it down to something reasonable.

In the end 1 thing will be implemented, you're already starting to mix things (unit to unit transformation and shields)

_________________


Mental Omega 3.0 Mission creator - Creator of FinalOmega: APYR 3.0 Map Editor

/ppm/'s stupidity

Back to top
View user's profile Send private message
mevitar
Missile Trooper


Joined: 31 Dec 2010

PostPosted: Sat Nov 15, 2014 1:55 pm    Post subject: Reply with quote  Mark this post and the followings unread

RP was faster. #Tongue
Still, there are some points i want to touch with my reply.

I think this is exactly what Apollo meant by "extra issues". You can't recreate shields with unit transformations without it being a hacky workaround by itself, or giving a lot of extra special-cases that unit-to-unit transformation could do without.

I think most people that say "shields", are thinking about Protoss Plasma Shields (or anything similar). Completely separate from health. Implementation doesn't really matter here, nor whether it's a second health bar or normal health bar changing colors. It can't be recreated with unit transformations, unless that feature itself gets unnecessarily overcomplicated.

Either implement shields as shields, and transformations as transformations, or don't implement them at all.

While i myself tried to make my request simple, and prevent any arbitrary decisions (like "EMP removes shields" - why should it remove it? the modder should decide what removes it and what replenishes it), some things could indeed be removed (like customizing what happens to damage leftover after shields are depleted). I even tried to tie it to Attachable Shields, but after some thinking, i decided not to, because that would overcomplicate it even more. If anything, just simple shield healing with a tag to customize starting amount of shields will be enough to create "attach shields" effect.

Anyway, i think Mig Eater summed up pretty well the "minimum requirements" for a shield system that people expect. Everything else is just fine-tuning and more customization.

As for Active Protection System, it will have its uses (like adding anti-missile systems or RA3 shields), but it shouldn't be tied in any way to personal shields.

Back to top
View user's profile Send private message
AlexB
Commander


Joined: 31 May 2010
Location: Germany

PostPosted: Sat Nov 15, 2014 4:11 pm    Post subject: Reply with quote  Mark this post and the followings unread

mevitar: Passing damage that an almost depleted shield cannot protect against and even having independent factors to split or change the damage for shield and passthrough is easily possible. It's just modular and thus I've stripped it from the base implementation.

Regarding unit-to-unit: No, this is not a solution. It has all the limitations like just changing the unit graphics on the fly like NoSpawnAlt, water image or passenger turrets. They don't work well if multiple logics are used. Unit transformations will have other issues, like most likely not being able to convert on the move, which can't work if a unit's shield is to be affected while it is driving.

_________________

Back to top
View user's profile Send private message
Renegade
Cyborg Artillery


Joined: 21 May 2006
Location: Hamburg, Germany

PostPosted: Sat Nov 15, 2014 10:36 pm    Post subject: Reply with quote  Mark this post and the followings unread

mevitar wrote:
[...]

As for Active Protection System, it will have its uses (like adding anti-missile systems or RA3 shields), but it shouldn't be tied in any way to personal shields.

It's the same thing, that's the ztyping point.

If you people went back and actually looked at what's already been done years ago, if you actually invested time and effort instead of just drooling greed, you would realize that you're wasting everybody's time, 90% of the time.

In this particular case, if you got off your lazy ass and actually went through to the original discussion, as imported into the linked bug and reachable through the "read full specification" link, you would find this post, saying

Renegade wrote:
That all being said: I've long hoped for an actual shield logic in the game. Since the way I envision that isn't too far away (basically, it's a second health bar & animations to play when shots strike the shield), and there was never a shortage of sci-fi mods in the community, it might makes sense to combine these two and just create a general, customizable shield logic, which can be set to behave like the APS described here.

I think the shield could easily be described as
Code:
Shield.Chance=100% ; percentage chance of interception
Shield.Health=500 ; how much damage to take before the shield collapses
Shield.Range=256 ; in leptons
Shield.Intercept=[list] ; projectile types to intercept
Shield.ROF=0 ; rate of fire of the shield, in frames
Shield.Anim=[animation] ; animation to play on projectile destruction
Shield.ShieldAnim=[animation] ; general surrounding forcefield anim

Come to think of it, APS.Health + secondary health bar could easily be used to show how much ammo the APS has left. Would just need a switch somewhere to toggle between "deduct 1 for each hit" for APS and "deduct $damage for each hit" for shields.


It is this kind of pointless timewaste that I mean. It's all been talked about before.
So stop wasting people's time and start building upon what was already done instead of restarting every discussion and having every debate for the third, fifth or dozenth time.

ztyping do something constructive for a change.

_________________
#renproj:renegadeprojects.com via Matrix - direct link

Back to top
View user's profile Send private message Visit poster's website
AlexB
Commander


Joined: 31 May 2010
Location: Germany

PostPosted: Sun Nov 16, 2014 12:43 am    Post subject: Reply with quote  Mark this post and the followings unread

It's not quite the same. Protecting a unit from any damage is simple, because only this very unit has to be checked. It either has a shield or not, and it can modify its health and the damage it takes at will. No matter where the damage came from. Each time this happens can be considered a hit, so looking at it this way is also possible.

Linking this to a projectile is more difficult, because no unit knows anything about a projectile when hit. And many logics don't even use projectiles, and shields then wouldn't work. Anyhow, the projectile impacts and tells the map to damage everything in range with a warhead. Thus, there is no projectile to neutralize: It's already exploding.

There needs to be a system that "catches" the projectile in-air. In air could mean on target before it detonates, or being neutralized at a distance. This is different from what I called the personal shields, as it requires an infrastructure to work. Each projectile needs to check whether it is in range of any large-area-shield/ECM unit or building. Needs to be done in all cases things have to happen to projectiles "at a distance".

That's the two systems. Whether some explosion breaks a shield down faster the higher the damage (like a shield adding extra health), or each explosion counts as one blow no matter how hard (like with reactive armor or chaffs for missile attacks), is indeed not much of a difference. But the APSRange is part of the second system.

_________________

Back to top
View user's profile Send private message
Renegade
Cyborg Artillery


Joined: 21 May 2006
Location: Hamburg, Germany

PostPosted: Sun Nov 16, 2014 9:21 pm    Post subject: Reply with quote  Mark this post and the followings unread

It is the same thing: A protective sphere around the unit that stops weapons from hitting it.

Whether you dress it up as a fancy, Star Trek-esque force field or base it in reality and pretend it's automatically fired counter-projectiles is entirely a story question. The mechanics remain the same.

The only time it becomes different is when you take the easy way out -like Westwood did- and don't actually make it look like the promotional material and just put a colored tint on the unit and swallow the damage.

Look at the original post: It says, right there, Shield.Range= what is the range of shield? (Range circle indicator). That is not a request for an Iron Curtain with a health bar. That is exactly what I described: A proper shield around the unit. Star Trek style.
And as such, it is exactly as described in the post I quoted.

Whether that is something you want to implement or not is besides the point - all I did was point out that none of this is original, and that the kids are wasting everyone's time by reinventing the wheel over and over again.

_________________
#renproj:renegadeprojects.com via Matrix - direct link

Back to top
View user's profile Send private message Visit poster's website
AlexB
Commander


Joined: 31 May 2010
Location: Germany

PostPosted: Mon Nov 17, 2014 1:02 am    Post subject: Reply with quote  Mark this post and the followings unread

I'm not talking about how modders explain how the shield works. Still, it is not the same thing, even though one appears to be just the other with additional range checks, implementation is completely different. Allowing all bullets to detonate and then absorbing the damage (like Iron Curtain) is not the same as tracking projectile and shields to see a collision and then either neutralizing for force-detonating the projectile. But the range feature also needs an implementation similar to the personal field, otherwise a CellSpread=7 grenade that explodes 4 cells away from a unit with a range 2 shield would still deliver damage.

_________________

Back to top
View user's profile Send private message
ApolloTD
Commander


Joined: 19 Nov 2003

PostPosted: Mon Nov 17, 2014 4:33 am    Post subject: Reply with quote  Mark this post and the followings unread

Also something no one has mentioned is that when you implement a APS like projectile intercept, like LH_Mouse did for GZ with ranged ECM was the big problem that projectiles DO NOT have a owner in this game (Ares adds???) so that execution would have your own/friendly fired missiles destroyed/intercepted too (limit this to 1 cell around unit!?), plus like said, most weapons do not use projectiles so you need the absorb system to deflect them (lasers etc)

I would love to know how else you track lasers prior to being hit in code terms to block them Very Happy

So rather APS should be optional thing to enable on top for handling projectiles as making it default for hundreds of shield units doing intercepting projectiles would grind the game to a halt without a question so APS should be sparingly used function while giving generally protoss like shields at root.

Personally I could live without the APS, just have DeflectAnim= or whatever shown whenever something hits the unit while shield is active, giving the illusion its intercepting for most part.

Back to top
View user's profile Send private message
AlexB
Commander


Joined: 31 May 2010
Location: Germany

PostPosted: Mon Nov 17, 2014 5:11 am    Post subject: Reply with quote  Mark this post and the followings unread

It's also Inviso projectiles, rad beams, mind control, ivan bombs, and electro bolts (maybe more I just forgot, not sure about Airstrikes). Neutralizing lasers in code should be more reliable than doing it in real life - I'd only have to implement destructive interference in C++. Also, spy disguise would need to be special cased, otherwise the shield would deflect the attempt to copy the uniform.

It depends on the projectile whether there is an owner or not (otherwise DamageSelf couldn't be working and units couldn't promote at all). But you are right. It wouldn't be to useful if the shield would prevent own projectiles from leaving the barrel without exploding. Or having repair weapons which tear down the shield.

The thing I'm worrying about the most is the performance. Iterating all objects for shields every time a bullet flies as well as every time something is damaged surely will take some time to check. Once again the Firestorm wall check as an example: It checked whether units had a Firestorm wall somewhere on their path, and people complained about massive slowdowns.

_________________

Back to top
View user's profile Send private message
Renegade
Cyborg Artillery


Joined: 21 May 2006
Location: Hamburg, Germany

PostPosted: Mon Nov 17, 2014 5:38 pm    Post subject: Reply with quote  Mark this post and the followings unread

AlexB wrote:
I'm not talking about how modders explain how the shield works. Still, it is not the same thing, even though one appears to be just the other with additional range checks, implementation is completely different. Allowing all bullets to detonate and then absorbing the damage (like Iron Curtain) is not the same as tracking projectile and shields to see a collision and then either neutralizing for force-detonating the projectile. But the range feature also needs an implementation similar to the personal field, otherwise a CellSpread=7 grenade that explodes 4 cells away from a unit with a range 2 shield would still deliver damage.

But that is exactly the point:
Zero18 wrote:
The shield range circle, like you can see it when selecting flak cannon or sentry turret which have range circle --- will stop any attacks and absorbs the damage.

"like Iron Curtain" is not what was implied in the request. Implied was a sphere of protection.

_________________
#renproj:renegadeprojects.com via Matrix - direct link

Back to top
View user's profile Send private message Visit poster's website
AlexB
Commander


Joined: 31 May 2010
Location: Germany

PostPosted: Mon Nov 17, 2014 8:17 pm    Post subject: Reply with quote  Mark this post and the followings unread

Yeah, I came to the same conclusion:
AlexB wrote:
The shields proposed here is a mixture of both use cases it seems. It has a radius, thus it's intercepting. And it has Shield Strength, which is the personal shield feature.


But the "absorbs the damage" part is a personal shield. Whether this is done as weapon damage vs shield strength or deflecting a fixed number of projectiles does not matter. For this very request to work, both systems need to be in place, which is why I consider this more complex to just have personal IC-style shields first.

_________________

Back to top
View user's profile Send private message
Renegade
Cyborg Artillery


Joined: 21 May 2006
Location: Hamburg, Germany

PostPosted: Tue Nov 18, 2014 6:47 pm    Post subject: Reply with quote  Mark this post and the followings unread

I don't see how absorbing the damage makes this anything else. What would the point of a non-damage-absorbing shield be?

_________________
#renproj:renegadeprojects.com via Matrix - direct link

Back to top
View user's profile Send private message Visit poster's website
AlexB
Commander


Joined: 31 May 2010
Location: Germany

PostPosted: Tue Nov 18, 2014 8:05 pm    Post subject: Reply with quote  Mark this post and the followings unread

The absorbing part of a shield with a range is about the same as for IC-style shields. That is minus the need to check all shields of all technos in range. Implicitly, personal shields are implemented by implementing ranged shields, and looking at it this way, ranged shields become a superset of personal shields with some glue.

This splits both logics in a way the personal shields supports all features that can be applied efficiently in constant time, and ranged shields consist of all the features that take linear time to apply.

Two examples: The slow range check detects an incoming projectile. It is destoyed and the damage just optionally forwarded to the unit to be handled by the personal shield. Second case: A cellspread weapon hits outside of shield range, thus no projectile to intercept, but the personal shield still handles the damage.

A non-absorbing shield could be a deflector, or a large-range Iron Curtain effect. But I think that's more an edge case.

_________________

Back to top
View user's profile Send private message
Atomic_Noodles
Defense Minister


Joined: 05 Oct 2011

PostPosted: Wed Nov 19, 2014 12:11 am    Post subject: Reply with quote  Mark this post and the followings unread

Here's how I see it being done for the single unit part.

Shields
- Counts as a second set of HP (The amount of HP the Shield has can be set by the modder
- Damaged received could either be coded in to take full 100% damage no matter the verses tag. (I.E: 100 Damage with 200% Verses will still only deal 100 not 200 Damage to the Shield's HP)
- Allow the modder to code in what animation plays when a shield is hit. Probably customization per unit basis.

Deflector
- Doesn't truly absorb damage as CellSpread Attacks will probably bypass it.
- Projectiles will instead detonate on nearby cells.
- Allow the modder to code in what animation plays when a deflector is hit. Probably customization per unit basis.

_________________
~ Excelsior ~

Back to top
View user's profile Send private message Visit poster's website
Zero18
Commander


Joined: 10 Dec 2012
Location: I'm too busy conquering the world!

PostPosted: Wed Nov 19, 2014 4:18 am    Post subject: Reply with quote  Mark this post and the followings unread

deflector  is already in use. Consider that if you want missiles to be intercepted, you will have to use v3 logic. Doing that so will require all the missile type to be a unit itself to be able to get intercept by anti-missile weapon.

Here is more simple version.

Shield.Strength = Life of Shield
Shield.SHP = SHP file, what shield to look (uses 100%, 50%, 25% for stages)
Shield.Range = In Leptons
Shield.Regenerate = Integer value of life points given back over interval time.
Shield.RechargeRate = How fast it goes, 15 frames = 1 sec in-game

_________________
Mod Leader and founder of World Domination


Back to top
View user's profile Send private message
RP
Commander


Joined: 12 Jul 2012
Location: Mapping God Heaven

PostPosted: Wed Nov 19, 2014 8:13 am    Post subject: Reply with quote  Mark this post and the followings unread

lol, how can you say what's simple and what not?

Seriously, you've all spat out different INI keys and what not.
Give AlexB some time and room to look into it!

Giving randomly imagined INI keys does not speed up or explain the feature at all. At the very least it makes things more complicated due to weird naming.

_________________


Mental Omega 3.0 Mission creator - Creator of FinalOmega: APYR 3.0 Map Editor

/ppm/'s stupidity

Back to top
View user's profile Send private message
MasterHaosis
General


Joined: 01 Nov 2010
Location: Serbia

PostPosted: Wed Nov 19, 2014 12:51 pm    Post subject: Reply with quote  Mark this post and the followings unread

He has right to suggest what he wants, as others did too already.
Its up to AlexB to decide what will do regardless of who requested what.
Personally I stay away from suggesting anything in this thread. Shield logic has bad and good points. Good points are that majority is interested in this, bad points are that, as AlexB told me, this would take some time to investigate, yet to implement such feature. Not to mention that people still need to discuss in which way will feature go (if it will be implemented at all), because everyone has his own view.

_________________

PPM Halloween Season 2021

Back to top
View user's profile Send private message
Atomic_Noodles
Defense Minister


Joined: 05 Oct 2011

PostPosted: Wed Nov 19, 2014 4:02 pm    Post subject: Reply with quote  Mark this post and the followings unread

What deflector in the game? There isn't anything called deflector zero18 in the game. They're called firestorm's not deflectors.

_________________
~ Excelsior ~

Back to top
View user's profile Send private message Visit poster's website
Zero18
Commander


Joined: 10 Dec 2012
Location: I'm too busy conquering the world!

PostPosted: Wed Nov 19, 2014 4:56 pm    Post subject: Reply with quote  Mark this post and the followings unread

RP wrote:
lol, how can you say what's simple and what not?

Seriously, you've all spat out different INI keys and what not.
Give AlexB some time and room to look into it!

Giving randomly imagined INI keys does not speed up or explain the feature at all. At the very least it makes things more complicated due to weird naming.


First of all, chill the ztype out.

Secondly, it is a simple version,  the way I see it is more summarized and short. There is nothing weird with INI. You probably have a vocabulary level of grade three. No offense.

Third, I gave it time. I thought my first suggestion was a bit too much so I decided to edit it to cut it down. So, look if you want to keep on bitching around that I post a simple version. Well, that is not going to stop me from proposing ideas for Ares to add more features. I suggest you to back off and give me room too.

_________________
Mod Leader and founder of World Domination


Back to top
View user's profile Send private message
mevitar
Missile Trooper


Joined: 31 Dec 2010

PostPosted: Wed Nov 19, 2014 6:25 pm    Post subject: Reply with quote  Mark this post and the followings unread

Zero18 wrote:
Here is more simple version.
AlexB already explained why having both Shield.Strength= and Shield.Range= is not simple at all. It's not "too many tags", it's how hard it is to make a shield with both range and health to get done.

Renegade wrote:
It's the same thing, that's the ztyping point.
You know, i knew that if i write my thoughts on APS, it might turn into an argument. I'm not surprised at all.

Despite what you think, i did read the APS specification. I also did read that AE shield specification on launchpad. And Zero18's specification. Because i do read stuff before i reply. All those years, I also spent more time on testing Ares than you think i did. But you rather assume that i'm lazy, don't read anything, or can't read. Fine. Thank you. But i don't care. So let's move on to the point here.

You're thinking we're thinking about Star Trek shields? We're not, at least not in the sense you are. Maybe Zero18 is, because he wants them to have a range in which they will function (but i believe he's actually thinking about Athena Cannon shield from RA3). You'll say that a shield is a shield is a shield, but it's not true.

The truth is, your APS is a weapon. A weapon that pretends it is not a weapon, but like any other weapon, it is used to scan for targets and shoot them down. Even if your intention was to make APS customizable into personal shields, then with Range=0 it will still be a weapon, and still scan for targets. So what, disable the scan for Range=0? Then we get a special case that has to be coded completely differently around the assumption that there is no scan range. It could be as well done the "personal shield" way from the start. It also does not take shield armor into the account, at all.

Shield.Range=, that Zero18 proposed, isn't any different from how your APS would do it either (except for having shield armor). It would have to be a "weapon" that scans for targets and shoots them down.
Unless everybody would just forget about this "intercepting projectiles" thing, and the only checks the game would make for this would be scanning for shields on impact, and on impact only. Not if a projectile got in the range and should it be detonated or not, no. Whether a projectile hits the ground, a unit, or explodes in air because it missed, the only thing the game would care about is: whether the object it hit had a shield, and whether the projectile hit in some object's shield range. And if it goes through the shielded area? Then nothing happens.
The game might still have to go through all the objects on the map, but this time only on impact. There will probably be some CellSpread shenanigans too. But at least it doesn't force a completely different implementation for each specific work case.
So what if we don't get projectiles exploding when they approach a certain area. There is APS for that.

In fact, since APS is a weapon anyway, let's just make some objects shoot down projectiles with their own weapon. Who cares if people will make it look like a missile system, laser system, or a mobile shield platform. Units have to scan for targets with their weapons anyway. Make some of them able to shoot down projectiles, the way APS specification proposes.

Then shields can be shields, APS can be APS, and lasers shooting at the ground can get absorbed by shields too.

PS. I didn't really write anything more than AlexB and Apollo already did before me. But i guess this thread already became the "discuss how to tie (or not) personal shields, ranged shields, and APS" thread anyway, so it doesn't matter. In the end, it's AlexB who makes the decision on how to, and if to, implement something.

Last edited by mevitar on Wed Nov 19, 2014 6:51 pm; edited 1 time in total

Back to top
View user's profile Send private message
Renegade
Cyborg Artillery


Joined: 21 May 2006
Location: Hamburg, Germany

PostPosted: Wed Nov 19, 2014 6:48 pm    Post subject: Reply with quote  Mark this post and the followings unread

AlexB wrote:
The absorbing part of a shield with a range is about the same as for IC-style shields. That is minus the need to check all shields of all technos in range. Implicitly, personal shields are implemented by implementing ranged shields, and looking at it this way, ranged shields become a superset of personal shields with some glue.

This splits both logics in a way the personal shields supports all features that can be applied efficiently in constant time, and ranged shields consist of all the features that take linear time to apply.

Two examples: The slow range check detects an incoming projectile. It is destoyed and the damage just optionally forwarded to the unit to be handled by the personal shield. Second case: A cellspread weapon hits outside of shield range, thus no projectile to intercept, but the personal shield still handles the damage.

A non-absorbing shield could be a deflector, or a large-range Iron Curtain effect. But I think that's more an edge case.

I have honestly no idea what you just said.

And it still looks quite like shields as requested, as previously described, and APS all do the same thing, just with tiny differences.

_________________
#renproj:renegadeprojects.com via Matrix - direct link

Back to top
View user's profile Send private message Visit poster's website
Zero18
Commander


Joined: 10 Dec 2012
Location: I'm too busy conquering the world!

PostPosted: Wed Nov 19, 2014 6:56 pm    Post subject: Reply with quote  Mark this post and the followings unread

I wasn't thinking of Star Trek. That is so 1990s. I was looking at Supreme Commander which have units with shields that absorbs the attacks. I thought it was pretty cool. In fact, if you want to have deflectors, modders can easily make list of missiles using V3 Logic that can be deflected using certain armor type and weapon.

Shield and Deflector are two separate thing, tbh. You have choice of giving the unit deflector or not. Like I said, it is already in game. Firestorm isn't the real deflector at all.

_________________
Mod Leader and founder of World Domination


Back to top
View user's profile Send private message
Renegade
Cyborg Artillery


Joined: 21 May 2006
Location: Hamburg, Germany

PostPosted: Wed Nov 19, 2014 7:55 pm    Post subject: Reply with quote  Mark this post and the followings unread

mevitar wrote:
Despite what you think, i did read the APS specification. I also did read that AE shield specification on launchpad. And Zero18's specification. Because i do read stuff before i reply. All those years, I also spent more time on testing Ares than you think i did. But you rather assume that i'm lazy, don't read anything, or can't read. Fine. Thank you. But i don't care. So let's move on to the point here.

Seeing is believing. So far, it has not been apparent that you read anything before replying.

mevitar wrote:
You're thinking we're thinking about Star Trek shields? We're not, at least not in the sense you are. Maybe Zero18 is, because he wants them to have a range in which they will function (but i believe he's actually thinking about Athena Cannon shield from RA3). You'll say that a shield is a shield is a shield, but it's not true.

So basically, there is a request, which may talk about Star Trek-esque shields, and there are previous requests, which talk about Star Trek-esque shields, but we're not talking about Star Trek-esque shields?¹

Sounds like you're either confused or deliberately going off topic.


mevitar wrote:
The truth is, your APS is a weapon.

The bullshit to words ratio of this sentence is astounding.
No it is not. As such, the claim of that being the truth is false as well.
You didn't even get the request ownership right - my account was the one auto-creating the spec from the original feature request, but if you had actually read the original discussion, you would have noticed that the post I quoted from myself was actually arguing against the original request, for a more streamlined and flexible implementation.
Because, and that was the entire ztyping point, the requester wanted APS, and I pointed out that APS could be done with just a few flexibilities in a shield implementation.

And you wonder why I don't believe you actually do what you claim. Rolling Eyes

mevitar wrote:
A weapon that pretends it is not a weapon, but like any other weapon, it is used to scan for targets and shoot them down. Even if your intention was to make APS customizable into personal shields, then with Range=0 it will still be a weapon, and still scan for targets.

Completely baseless bullshit claim with no relevance to the discussion. As I have pointed out above and quoted from myself previously, I already advocated against implementing APS as a separate mechanism five years ago. So even if your ludicrous characterization of any non-existent plan were actually true, you'd still be talking to the wrong person.

But hey, you obviously carefully read the discussion before you replied. Rolling Eyes

mevitar wrote:
So what, disable the scan for Range=0? Then we get a special case that has to be coded completely differently around the assumption that there is no scan range. It could be as well done the "personal shield" way from the start. It also does not take shield armor into the account, at all.

Irrelevant rambling, as per the previous answer.

mevitar wrote:
Shield.Range=, that Zero18 proposed, isn't any different from how your APS would do it either (except for having shield armor).

Still wrong on the request ownership and with the order reversed, but yes, that is exactly the goddamn point. Save for the graphics and maybe the way the protective field strength is reduced, the two are identical. Hence why I advocated against APS five years ago, and am still trying to explain to Alex that there's no significant difference.

mevitar wrote:
It would have to be a "weapon" that scans for targets and shoots them down.

Still baseless bullshit.

mevitar wrote:
Unless everybody would just forget about this "intercepting projectiles" thing, and the only checks the game would make for this would be scanning for shields on impact, and on impact only. Whether a projectile hits the ground, a unit, or explodes in air, the only thing the game would care about is: whether the object it hit had a shield, and whether the projectile hit in some object's shield range. Still might have to go through all the objects on the map, but this time only on impact. There will probably be some CellSpread shenanigans too. But at least it doesn't force a completely different implementation for each specific work case.
So what if we don't get projectiles exploding when they approach a certain area. There is APS for that.

More pointless rambling about a fantasy-implementation that doesn't exist outside of your head.

mevitar wrote:
In fact, since APS is a weapon anyway,

The frequent repetition of bullshit does not make it any less bullshit.

mevitar wrote:
let's just make some objects shoot down projectiles with their own weapon. Who cares if people will make it look like a missile system, laser system, or a mobile shield platform. Units have to scan for targets with their weapons anyway.

...and if you had actually looked around instead of drooling yet another request onto the forums, you would have noticed that this was requested at least twice in the past, once in 2008 and once in 2009.

mevitar wrote:
Make some of them able to shoot down projectiles, the way APS specification proposes.

I would ask whether you realize how counter-productive it is to prove over and over again that you didn't read jack shit, right after claiming you read all the important documents, but I already know the answer.

There is no shooting in the APS specification.

mevitar wrote:
Then shields can be shields, APS can be APS, and lasers shooting at the ground can get absorbed by shields too.

I would love to hear how your psychic abilities determined that ground lasers cannot be absorbed by a feature that hasn't even been greenlit, let alone coded yet.

mevitar wrote:
PS. I didn't really write anything more than AlexB and Apollo already did before me. But i guess this thread already became the "discuss how to tie (or not) personal shields, ranged shields, and APS" thread anyway, so it doesn't matter. In the end, it's AlexB who makes the decision on how to, and if to, implement something.

Exactly. Hence why my original point in this thread was not to waste his time by creating countless duplicate issues outside of the tracking systems.
Something the community, years later, still didn't grasp.


¹ Just because Zero18 was thinking of Supreme Commander when coming up with this, the resemblance to Star Trek doesn't go away. SC ST

_________________
#renproj:renegadeprojects.com via Matrix - direct link

Back to top
View user's profile Send private message Visit poster's website
MasterHaosis
General


Joined: 01 Nov 2010
Location: Serbia

PostPosted: Thu Nov 20, 2014 1:22 am    Post subject: Reply with quote  Mark this post and the followings unread

I like that Renegade guy! He and his replies Very Happy

_________________

PPM Halloween Season 2021

Back to top
View user's profile Send private message
AlexB
Commander


Joined: 31 May 2010
Location: Germany

PostPosted: Thu Nov 20, 2014 2:00 am    Post subject: Reply with quote  Mark this post and the followings unread

Exclamation I see this thread will be derailed soon if it goes on like this and the discussions don't calm down. So please tone it down a bit. Otherwise this discussion will not have lead to anything, and the next one in a year or so will have to start anew with a sixth proposal, which would complicate matters even more.

I find the terms difficult to use. I associate APS with "ranged" features like chaffs to hide a jet in a cloud of flares to distract heat seeking missiles, and simultaneously with explosive charges on tank armor that explodes on impact ("personal shield"/Range=0) to either destroy or deflect the projectile. Also, not with a concrete implementation in mind how much it can block: Whether it's the number of chaffs fired or whether it's the number of hitpoints it can swallow. Maybe this is part of the confusion.

Renegade wrote:
I have honestly no idea what you just said.

Personal shields can be implemented in O(1), projectile intercepting shields (that is shields with range) not in less than O(n) (n being either the number of projectiles or the number of units bearing shields). Thus, it requires different algorithms with different classes of complexity. This alone shows that it's two things.

You can implement personal shields in O(n) or worse to unify them, but that's just burning CPU without reason, but you cannot implement any ranged check in O(1).

Using a different metaphor: personal shields is event driven (knock, knock, this damage is incoming from that warhead that detonated at this location). Intercepting is polling every frame (is any projectile in a techno's shield range?).

Maybe you and I have a different view on this, I don't see how a range makes sense for what I called personal shields, while I see that the code that powers personal shields can be reused for ranged shields. For me, anything that interacts with other technos or projectiles is very different from the one-on-one case that is the IC-style.

mevitar wrote:
The truth is, your APS is a weapon. A weapon that pretends it is not a weapon, but like any other weapon, it is used to scan for targets and shoot them down. Even if your intention was to make APS customizable into personal shields, then with Range=0 it will still be a weapon, and still scan for targets. So what, disable the scan for Range=0? Then we get a special case that has to be coded completely differently around the assumption that there is no scan range. It could be as well done the "personal shield" way from the start. It also does not take shield armor into the account, at all.

I also look at it like this, and I think it describes the additional complexity quite well. A unit scanning all projectiles and handling the ones in range. The Range=0 case is difficult: it certainly could disable parts of the complex check (not all, though), but as I described, it still does not handle moving units, CellSpread damage or non-Projectile damage if personal shields aren't implemented.

Renegade wrote:
mevitar wrote:
Make some of them able to shoot down projectiles, the way APS specification proposes.

I would ask whether you realize how counter-productive it is to prove over and over again that you didn't read jack shit, right after claiming you read all the important documents, but I already know the answer.

There is no shooting in the APS specification.

Actually, I consider the shooting or no shooting question a minor difference between shields with ranges. The underlying system is exactly the same. There is just the question what to do when an incoming projectile in range is detected. Whether you see this virtual weapon fire or whether you just see the effect does not matter.

In my eyes, projectile killing is a ranged shield which either removes the bullet, deflects it like the ECM tank, or makes it detonate immediately -- maybe with an optional anim played or laser being drawn. The other option would be causing damage to the shield, which either works like additional strength or like a counter for projectiles it can intercept.

Renegade wrote:
Save for the graphics and maybe the way the protective field strength is reduced, the two are identical. Hence why I advocated against APS five years ago, and am still trying to explain to Alex that there's no significant difference.

I consider the range checks the biggest difference between the two (along with the performance implications), all other features are pretty much the same and implementation should be similar if it isn't reusable. Features like images, pass-through percentages, forbidden projectile types, either based on damage or projectile count and many more. I don't see many differences in these that would require them not to be unified. But only the personal shield can be implemented efficiently, as it doesn't require any range checks.

This and because of the fact that a large-range shield would still allow a unit to be hit by certain warheads without any chance to intercept if it didn't also implement personal shields, I consider the ranged features the extra stuff, and the personal shield the basic part. That's how I came to this model of shields.

_________________

Back to top
View user's profile Send private message
Mig Eater
Defense Minister


Joined: 13 Nov 2003
Location: Eindhoven

PostPosted: Thu Nov 20, 2014 6:13 am    Post subject: Reply with quote  Mark this post and the followings unread

So the big question is if the range feature is really necessary?

_________________



Back to top
View user's profile Send private message Visit poster's website ModDB Profile ID YouTube User URL Facebook Profile URL Twitter Channel URL
PillBox20
Commander


Joined: 28 Sep 2013
Location: Plovdiv, Bulgaria.

PostPosted: Thu Nov 20, 2014 8:23 am    Post subject: Reply with quote  Mark this post and the followings unread

AlexB wrote:
......I consider the ranged features the extra stuff, and the personal shield the basic part. That's how I came to this model of shields.


From the start of the discussion I was for the personal shield to be made first because it seemed like the first step. The ADS or Paladin's anti-missile laser with all this scanning seems like the next step. Both sound cool and awesome, but I am for the one AlexB thinks it is simplier to make. Step by step is the way. Just like in modding.

Note: No need to listen to me.  Laughing

_________________
"If it ain't broke, don't fix it."
"If you are loyal to everybody, can you truly be loyal to anybody?"
Ares Documentation: http://ares-developers.github.io/Ares-docs/
My YouTube Channel: https://www.youtube.com/channel/UCtxeQoEM_iVd-F-xUIwleyQ
PillBox20's Red Alert 2 Mod: http://www.moddb.com/mods/pillbox20s-red-alert-2/downloads/pillbox20s-red-alert-2-version-02

Back to top
View user's profile Send private message Visit poster's website YouTube User URL Skype Account
Renegade
Cyborg Artillery


Joined: 21 May 2006
Location: Hamburg, Germany

PostPosted: Thu Nov 20, 2014 6:38 pm    Post subject: Reply with quote  Mark this post and the followings unread

@AlexB: What is it with this goddamn "personal shield" crap?

Either there is a shield, or there isn't.

_________________
#renproj:renegadeprojects.com via Matrix - direct link

Back to top
View user's profile Send private message Visit poster's website
AlexB
Commander


Joined: 31 May 2010
Location: Germany

PostPosted: Thu Nov 20, 2014 7:03 pm    Post subject: Reply with quote  Mark this post and the followings unread

I think this has been well defined already.

_________________

Back to top
View user's profile Send private message
Zero18
Commander


Joined: 10 Dec 2012
Location: I'm too busy conquering the world!

PostPosted: Thu Nov 20, 2014 9:43 pm    Post subject: Reply with quote  Mark this post and the followings unread

So, are you going to add Shield Logic? I don't care how the INI flags are going to be as long as you don't make the shield function like deflector (because of the fact it is already in game and I know I'm 100% right about it). Mind you guys who are nitpicky about it, it is merely a suggestion. My opinion is pretty strong that the shields have to be based purely on absorbing the damage. Reflecting the incoming damage... well... it dosent make sense to me because that only will make sense with mirror and the light, but I suppose if you want to make it an extension to the shield logic once you have it set up.

Personal Shield and Shield are same, really. You can just slap in the shield with a range of 1 cell and call it personal shield.

Therefore, the shields are only to absorb the damage, not to bounce the projectiles out. It is a common theory that the shield absorbs the damage. Imagine a bullet vest and you fire a bullet into the bullet vest. The vest essentially absorbed the damage from bullet and keeps the victim alive. The shield should functions like that, as seen in my example above and in other games.

_________________
Mod Leader and founder of World Domination


Back to top
View user's profile Send private message
Atomic_Noodles
Defense Minister


Joined: 05 Oct 2011

PostPosted: Fri Nov 21, 2014 12:03 am    Post subject: Reply with quote  Mark this post and the followings unread

I assumed when Shields were discussed it was exactly like the Starcraft Protoss Shields which acted just as secondary HP Bars...

_________________
~ Excelsior ~

Back to top
View user's profile Send private message Visit poster's website
RP
Commander


Joined: 12 Jul 2012
Location: Mapping God Heaven

PostPosted: Fri Nov 21, 2014 12:09 am    Post subject: Reply with quote  Mark this post and the followings unread

Maybe someone has to draw it out, because I think everybody has a different interpretation of the definition of 'shield' or 'APS'.

@Zero18, I'm not nitpicky. I just explained that you're indirectly telling people how to write their code (see that, I wrote their, not your code).
God I hate it when people tell me how to do my work.

_________________


Mental Omega 3.0 Mission creator - Creator of FinalOmega: APYR 3.0 Map Editor

/ppm/'s stupidity

Back to top
View user's profile Send private message
PillBox20
Commander


Joined: 28 Sep 2013
Location: Plovdiv, Bulgaria.

PostPosted: Fri Nov 21, 2014 7:55 pm    Post subject: Reply with quote  Mark this post and the followings unread

Atomic_Noodles wrote:
I assumed when Shields were discussed it was exactly like the Starcraft Protoss Shields which acted just as secondary HP Bars...


I assumed the same. Shields are for absorbing damage instead of the person who has it.

_________________
"If it ain't broke, don't fix it."
"If you are loyal to everybody, can you truly be loyal to anybody?"
Ares Documentation: http://ares-developers.github.io/Ares-docs/
My YouTube Channel: https://www.youtube.com/channel/UCtxeQoEM_iVd-F-xUIwleyQ
PillBox20's Red Alert 2 Mod: http://www.moddb.com/mods/pillbox20s-red-alert-2/downloads/pillbox20s-red-alert-2-version-02

Back to top
View user's profile Send private message Visit poster's website YouTube User URL Skype Account
Renegade
Cyborg Artillery


Joined: 21 May 2006
Location: Hamburg, Germany

PostPosted: Fri Nov 21, 2014 8:44 pm    Post subject: Reply with quote  Mark this post and the followings unread

AlexB wrote:
I think this has been well defined already.

No, not really. The first mention was
AlexB wrote:
And it has Shield Strength, which is the personal shield feature.

You also have gems like
AlexB wrote:
There needs to be a system that "catches" the projectile in-air. In air could mean on target before it detonates, or being neutralized at a distance. This is different from what I called the personal shields, as it requires an infrastructure to work.

AlexB wrote:
But the "absorbs the damage" part is a personal shield.


So let's sum this up:
Personal shields:

  • have shield strength
  • do not actually interact with the projectile
  • still magically absorb the damage
  • do all of this without actually being coded, because they require no infrastructure to function


Mysterious unexplained other shields:

  • have no strength apparently
  • shoot projectiles out the air, apparently
  • which is pointless, though, because they don't absorb the damage
  • need additional infrastructure to work


Well.

From this highly enlightening definition, I have come to the conclusion that

  • personal shields are illegal drugs
  • mystery shields are a reimplementation of aegis missiles, but without the useful parts


Thank you for your assistance in actually understanding what the hell you're talking about. The focus of this discussion certainly narrowed through your refusal to actually define the self-invented terms you're using.

_________________
#renproj:renegadeprojects.com via Matrix - direct link

Back to top
View user's profile Send private message Visit poster's website
AlexB
Commander


Joined: 31 May 2010
Location: Germany

PostPosted: Sat Nov 22, 2014 1:56 am    Post subject: Reply with quote  Mark this post and the followings unread

Let me roughly explain how all the things work. There's a difference between Speed=100 and Inviso projectiles and all others, but I'm ignoring this for now.

A) A projectile is fired by a unit or structure. It travels a certain distance in a certain time, towards its target. If it reaches its target, goes out of fuel or is shot down: it detonates.

B) The map gets told to damage all objects in range with a warhead, a damage value, impact location, and info about the source of this damage (source is not the projectile, but the firer of the projectile).

C) Using CellSpread, PercentAtMax and several more setting the map finds out which units are affected, and tells them to take damage, passing on the warhead, the damage value, the distance to the impact location (not the location any more), and the source (again the unit).

D) Each unit applies the damage individually, from Warhead, Damage (raw value, before any Verses, Immunities and multipliers applied), and source unit and/or house.

E) The projectile is removed.

---

The misunderstanding I see
I think the "still" (bullet point 3 in upper list) is the misunderstanding that's causing the trouble. A projectile does carry the damage value, and one could indeed intercept it and alter it. But this is not used directly by the game. No unit being damaged ever gets information about the projectile. To point 4: There has to be code, but it's all trivial. No polling. Get the data, check the shield, modify and done. No complex calculations, not even a loop. One-on-one.

I defined the two use cases in the first section of my first post: Two use cases, "personal" mentioned (though not defined percisely, which I couldn't do at that time where I just read into all proposals without thinking too much about it -- also, this isn't a scientific paper), closed with "Maybe it really should be two distinct logics, intercepting versus personal damage reduction". Personal shields are thus the opposite of intercepting shields.

And allow me a snarky remark, too: If instead of spending time on coming up with this conclusion you had interpreted my post a bit more benevolently, maybe you wouldn't have had the problem to explain personal shields with magic.

Personal shields
A personal shield is implemented in step D only, nowhere else. It catches all incoming requests to a unit to take damage. Here, the shield can modify this damage before it is applied (or nullify it) while updating its internal state like reducing shield strength or shield ammo if it's based on individual hits instead of hitpoints. It can check whether the shield is able to protect if there is something like a cooldown phase or whatever. It can check whether the warhead can be blocked, but there is no access to any projectile.

Personal shields have no Range
This is why I see no reason to have a range here. You have a distance to the impact site, which might be where a projectile is, but this is not guaranteed. Even if, the projectile has exploded already. The question is reduced to "Should I take damage or am I shielded off this very damage?" If the shield had a range, what would it help you with? Let's assume Range=0 means only the unit bearing the shield is protected (if it should say "no shield", we could step out early, so this would be ok, too). So, any Range larger than 0 would also mean this unit is protected, and maybe a few more. The decision regarding this very unit at this time thus does not depend on the range any more. Only on whether the shield is active or not.

How the damage is delivered
If a techno fires, you begin at A and end at E, but not all damage is applied using projectiles. Thus, if the map is ordered to damage units manually, there is no projectile and only steps B through D are executed. If a unit is manually told to take damage, only step D is executed. I say manually, but this is not a hack or some feature Ares adds. Its the default way to do damage, and projectiles are the special case (a messenger carrying a warhead), even though projectiles are most likely responsible for most of the damage applied during a match.

You can see that several Ares features like EMP and AttachEffect are implemented on projectiles, and people complain that Lightning Storm does not allow KillDriver, DiskLasers don't show an animation, GenericWarhead should take a weapon and not a warhead, and so on. Same cause: no projectiles.

Why not always work with projectiles directly?
Not adding a personal shield at step D means only hooking into a single special case to protect a unit from taking damage. Hooking into A, B and/or C will not prevent all damage from being applied, because all logics just calling D directly are ignored. D also is the most efficient place to add it, and all features here should be O(1) as only one unit has to be considered when applying damage: this.

What can be done with projectiles
Shields working with projectiles need to be added to step A, and only there. But they do need some support in step D, as mentioned above. This is quite difficult to explain because it seems to be contradictory. I'll try to explain in this and the following section:

No way around that: If you want to interact with the projectile, you have to do it in step A. The last point in time being right before it detonates. You can check each frame whether a projectile is in a shield range of any techno; that's all the O(n²) stuff I mentioned in the other post. This is slow, and needs extra book keeping as the projectile has to have a list of shields that tried to intercept it but failed, so they don't try again. Per projectile, all technos have to be checked each frame.

Whatever is done to that projectile in case it is intercepted does not really matter, because the biggest chunk of the code in terms of execution speed needed for this is collision detection. So whether the projectile is just removed, deflected, force-detonated or whatever is the minor part once the infrastructure common to all of them is in place.

Why I consider personal shields the base for ranged shields
To catch all damage, D just has to be hooked, as I pointed out. Otherwise the example I gave would still not be handled: A projectile detonating outside of shield range, but the unit being inside CellSpread. If you want it to work this way, ok, but I don't think that's what people intuitively expect.

If a projectile is intercepted, the shield ammo or strength could be reduced, reusing the same code from the personal shields. It has the same semantic. Maybe this is what you understand as "it's the same thing"; whether the damage is done on the border of the shield or directly on the unit does indeed not make a difference. If projectiles are force-detonated when hitting the shield, the damage can be forwarded manually to the shield bearing unit (calling D), and it is then handled by the personal shield as if it had hit the unit even though it only hit the shield. Many functions can be shared between personal and ranged shields anyhow, like checking ROF, alliance checks, splitting damage into two for shield health and normal health with some factors and all that.

Non-Personal shields which protect others
As soon as personal shields are expanded to have a range effect, stuff gets ugly. A unit protecting surrounding units with a shield against non-projectile damage cannot be implemented efficiently (same reason as projectile intercepting ones), and they need yet more special handling. Now, whenever a unit is hit at point D, it also has to check whether it is below any other techno's shield. This alone is O(n), and it becomes O(n²) for CellSpread weapons because each affected techno has to check each other techno for the shields. And you will even pay this price when there are no shields, if there is no global tag that says "EnableShields=no" to turn this off.

Pre-emptive remark
Before the crowd goes wild over this long post, let me say that I have no problem with this kind of discussion, even if it's getting sarcastic. Maybe this helps to clear up some things. I'm not saying I thought it all through already now, with each edge case being considered, but I have a fairly good understanding of how shields could work. Not saying it's a fixed and perfect vision, but 10 days ago, it was way more cloudy.

_________________

Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic Page 1 of 2 [93 Posts] Goto page: 1, 2 Next
Mark the topic unread ::  View previous topic :: View next topic
 
Share on TwitterShare on FacebookShare on Google+Share on DiggShare on RedditShare on PInterestShare on Del.icio.usShare on Stumble Upon
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © phpBB Group

[ Time: 0.3077s ][ Queries: 11 (0.0095s) ][ Debug on ]