-
Notifications
You must be signed in to change notification settings - Fork 208
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Making the funnelweb a heavy shield support strider #3247
Conversation
31ae1d6
to
e94c7ab
Compare
I've removed the rez, standardized buildpower and the shield now consumes energy to charge. |
LuaUI/Widgets/gui_contextmenu.lua
Outdated
@@ -825,21 +825,22 @@ local function printAbilities(ud, unitID) | |||
cells[#cells+1] = '' | |||
cells[#cells+1] = ' - Buildpower: ' | |||
cells[#cells+1] = numformat(buildSpeed) | |||
local buildpower_mult = (unitID and Spring.GetUnitRulesParam(unitID, "buildpower_mult") or 1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You missed one (up a few lines)
Although I've got a few critical bones to pick about the unit's gameplay concept, for the time, I'll focus on the unit's balance. For starters, I'm worried about how OP a 4500-cost unit with more shield health than a Paladin would be, even if the shield couldn't self-repair at all. I mean, the Aspis's shield has 3600 HP, and it costs as much as a Jack, which has 6000 HP, but unlike the Jack, it can use that shield health to help protect other, more fragile units, such as a few Rogues, from harm. Imagine needing to bring enough firepower to bring down a freaking Paladin, just to bring down such an OP shield, from a unit that costs less than half of a Paladin! |
I wanted to make proper weapon-less trider - the tunneler. Abilities like ress or repair would fit this tunneler much better. As a bonus it would be useful against terraformed megaporc (mostly seen in FFA) |
This sounds like a bit of a nightmare for consistency. How do you show people that this shield has 10x the HP of other large shields? How do you deal with linking? |
Is the intention that it can only reclaim and repair? There is also an inconsistency there, as all other sources of BP can do everything. This sounds bad for the UI. |
I meant physical shield. Basically the unit itself would be shield. Having huge hitbox and high HP. |
@Licho1 I am talking about the PR, not your off-topic terraformer. I am aware of the idea of the ramp-tank from discussions over some years. I wonder if we ever made a ticket, or if such a ticket was made on this particular repository. |
Well personally I don't want to change funnel |
@GoogleFrog : Thanks for taking the time to look at this! :) I'll be updating the top post to actually describe current state... |
In order to make such a mostly shield-based strider viable, the shield has to function differently from existing shields. Otherwise you'd either just be making an upscaled aspis or an effective anti-artillery defense. The modified recharge mechanics implemented here allow for the shield to temporarily push against artillery, while still losing to it during prolonged defense. In order to allow for such different recharging behavior, the shield has to be clearly (visually) distinguishable from other shields either way. At that point I think it's justifiable for linking to behave differently as well (not share). |
One possible solution to the shield regen issue is to use Spring's shield regen delay system and have the unit_shield_charge code monitor how much regeneration actually happened last frame and set an energy cost accordingly, reducing the shield strength according to the energy deficit. Thoughts? |
You should not use any shield charging provided by Spring if this shield costs energy to change, since it needs to be handled by the shield gadget to implement priorities. Adding a shield charge delay is fairly easy with the shield hit callin. |
@GoogleFrog : I didn't know there was a "shield hit call-in", my previous attempt to find such a thing failed. The only things left are making the Funnelweb not emit two types of nano fog and making it so the shield doesn't turn invisible when the Funnelweb is turned off. |
gamedata/weapondefs_post.lua
Outdated
@@ -319,9 +319,11 @@ for _, weaponDef in pairs(WeaponDefs) do | |||
|
|||
weaponDef.customparams.shield_rate = weaponDef.shieldpowerregen | |||
weaponDef.customparams.shield_drain = weaponDef.shieldpowerregenenergy | |||
weaponDef.customparams.shield_recharge_delay = (weaponDef.shieldrechargedelay or 0) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
shield_recharge_delay should never be set to 0. The gadget and widget code should first check whether shield_recharge_delay exists, and it if does, then do the additional checks based on it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the feedback GoogleFrog :)
Changed so shield_recharge_delay can now be nil.
I've made a number of tweaks after trying out the campaign mission with some starting unit tweaks: |
I think this is basically ready barring feedback... |
Thanks @GoogleFrog !
|
In my opinion, it could be just a bigger shield on a tougher chassis that also does other stuff, but it should keep the same mechanics as the other big shields, just bigger and stronger (but with less shield/cost). The end result of this may be more people realizing that aspis are crazy good if they have very high energy income and making groups of them more often, which still have pretty good shield/cost while having no such restrictions and inherent vulnerability single units have. |
@springraaar
|
Linking consistency is problematic. On balance I think we're better off without Funnelweb linking but I don't like the inconsistency involved. The biggest issue for me is that a Funnelweb at the back deletes Missile Silo. Shockley only deals 10k damage and this Funnelweb has 24k charge so not even Shockley is particularly effective. The only answer I can see is sustained Bertha bombardment to keep the shield down. |
So, to confirm, you'd rather no linking than a linking cap (at around 4000hp) or linking scaling? As I mentioned in the thread, the Missile Silo interaction is a concern. |
I don't know about linking as all the options seem bad. If it links there should be a new link rank added to reduce the drain rate. Should linking disrupt charging? With multiple Funnelwebs you could hold some in the back to charge the damage-receiving shield in front. Bad links will be hard to avoid which such a large radius. On balance I think I want to avoid linking. |
@GoogleFrog : Can we defer the majority of the visual improvements to a later date? Unrelated: It didn't make sense to have an expensive, high buildpower, mobile unit that needed another unit to start building near it, it just added extra tedious micro. So I made it able to build like a normal constructor. |
6c6bca5
to
1202b49
Compare
Two remaining issues that I'm aware of:
|
Sling impact wobble appears to work now. |
I was mistaken, single Sling impacts do not work, as they are barely visible, but multiple Slings can add up to a visible impact. |
The sphere of the graphics does not match the sphere of the collision volume for the shield. Both should be centered on the midpoint of the unit. |
The collision volume and shield graphics mismatch is puzzling. Investigation has just made me more confused as to how shield centre positions are calculated, particularly as the centre seems to orbit depending on the orientation of the unit if the origin of the shield is not the unit's centre. |
The physical centre is defined here https://github.com/danfireman/Zero-K/blob/bigShieldFunnelweb/scripts/striderfunnelweb.lua#L114 while the visual center is defined here https://github.com/danfireman/Zero-K/blob/bigShieldFunnelweb/LuaUI/Configs/lupsUnitFXs.lua#L108 |
@sprunk |
I think that the shield should emit and draw from (0,0,0). If (0,0,0) is on the ground, unfortunately the case for some models, then it should be vertically moved to be closer to the models center of mass. |
As far as I can tell the main shield visual/hitbox mismatch issue goes away with 104.0.1-1060-g7f3541f. Regarding slings and hits, it looks like the damage output of a sling bullet is so low compared to the shield's hp that it rounds to 0 most of the time. This is similar to glaive bullets not always triggering a wave in an Aspis. |
The gadget works in a way that hits get accumulated over time, so the visual feedback is eventually drawn even for low burst, but high DPS units. Since the new shield has crazy maximum charge value, my previous handcrafted constants might work in such way that damage is written off faster than it's accumulated. I think the most reliable way be to retune the common constants so they work for all range of units. For example you might want to introduce tiered or progressive damage decay, so it's slow at low damage values and is getting higher the higher the accrued damage values becomes. |
Also ideally ZK should update the gadget code as the previous one was a bit redundant and partly wrong. Let me know if you feel like you can take that. "No" is the perfectly valid answer ofc :) |
The new engine seems to work, which fixes some of the shield issues that I feel would destroy a Funnelweb which is so focused on its shield. I'll look into changing the shield damage constant and merging. |
The shield effect occasionally looks laggy https://youtu.be/vGSn9G4jxqo |
It appears to be related to unitID seeding. 30276 reproduces the lag. |
nooo not without repair drones |
@Licho1 my man 👍 |
Initial WIP MR to get feedback on this: http://zero-k.info/Forum/Post/190307#190307
Mostly I'm wanting feedback on what I've done wrong code-wise, thoughts on this from a gameplay perspective and any tips for how to fix the outstanding issues (at the bottom). Even if this never merges I'd be quite grateful for any feedback given. :)
Unit role:
This new Funnelweb is a genuine support strider. Weaponless, it is intended to protect fragile units on attacks on heavy porc and as a means of quickly taking advantage of the resulting victory in battle.
Unit abilities:
A large and strong shield of 28000hp that regenerates at a modest 200hp/s rate allows regeneration in 2 mins+20 secs, but requires 15 seconds after being hit before it will start to regenerate.
Additionally, it has 40bp with good range, intended for primarily for battlefield repair and reclaim.
Spider movement is slightly faster than the Funnelweb 45->54.
HP at 6000 (so it's vulnerable to widows, amongst other things).
Costs 3500, the usual price for a strider.
Unit analysis and impact on battlefield:
It can either protect an assault force for a quick and devastating strike OR it can hang around after an attack, repairing units and reclaiming, thus mitigating attrition. Doing the latter is likely to deplete its shield and render it useless for unit protection.
Comparison with existing units with similar roles:
Its shield has more hp per unit of metal than the Aspis (equivalent to 4666 metal of Aspis), but it's regeneration is weaker (equivalent to 2400 metal worth) and it is much more vulnerable to sustained bombardment due to its regeneration delay.
Its cost and lack of regen on being attacked make it a worse choice for maintaining a continual presence at the front and it's lack of shield linking mean it can't supply shield power for felons.
Its large shield size make it worse at defending smaller forces against attack.
Its battlefield reclaim, repair and construction is equivalent to 1150 worth of welders.
Its higher cost, lesser speed and inability to be in multiple places at once mean it is mildly worse at battlefield repair and reclaim than the welder.
Initial playtesting thoughts:
Fairly large micro requirements at present, but does it's job well. Likely to be far more useful in Campaign, FFA and 16v16 matches than 1v1 or 2v2s.
Thoughts on balance:
I am considering removing the resurrection entirely due to its snowballing effect. (it depends whether people consider snowballing good or bad, I've heard arguments either way for RTSs)Now removed at the advice of people in the thread. (may return depending on people's thoughts)Its high hp makes assassinations hard and allowing that could add interesting gameplay. Considering reducing hp to a fragile 6000.Done.Known TODO/issues:
Shield links (it shouldn't transfer shield strength or at least should stop regenerating when it does)Now doesn't link.Shield should take energy (aprox 72) to charge (currently doesn't charge at all if it's a builder and has shieldPowerRegenEnergy set :( )Now works.It should do automatic rez/repair/reclaim with a prioritization setting allowing a user to pick what it should prioritize (to reduce micro burden).DeinFreund thinks this unwiseShould be able to move and rez/repair/reclaim simultaneously (so it can reclaim without slowing down the assault).DeinFreund thinks this unwiseFix rez and reclaim graphics (currently getting two styles of nano fog). The nano-related code is all cargo culted (copy pasted frankenstien) and probably partially nonsense.Now only one fog style!Regen delay needs to work with energy prioritization.Done!Shield becomes invisible when the Funnelweb is turned off. This is apparently also a problem in Master...Should now be fixedShield and nano seem to be centered in the wrong place in the model, this is also a problem in Master.Reduce weightDoneFunnelweb should have a round number of BPMade 40The nanospray should emanate from somewhere on the surface, not just somewhere internal. Perhaps its face could be used.Now coming from the eye.The wobbly purple shield stuff is clipping. Perhaps this stuff could emit from the gap that held its guns. A different type of effect could be used.A different type would be preferable (iteration 2), but for now commented outThere is no visual indicator that the shield is blocked from charging after being damaged. Perhaps the wobble could reflect this, as well as the colour or transparency of the shield.Indicator now presentSmooth the shield sphere.DoneShield texture is ugly.Made prettierShield color unpleasant.Made prettierIndicator of shield recharging not very clear.Now noticeableIssues for iteration 2:
I don't want to do a ton of polishing on a concept that we don't even know works yet!