OpenClonk Bugtracker - OpenClonk
View Issue Details
0002015OpenClonkObjectspublic2018-03-18 10:482019-05-01 10:23
Assigned ToMarky 
PrioritynormalSeverityfeatureReproducibilityhave not tried
PlatformOSOS Version
Product Version8.1 
Target VersionFixed in Version 
Summary0002015: Revisit melee combat: deal damage after animation to allow for blocks etc.
DescriptionMelee weapons are quite strong at the moment.
They could deal the damage only after the animation has played. This would allow the shield to actually have some use in combat (as you could actually block).
Additionally, it would add another layer to melee weapons, further distinguishing eg. the hatchet, club and the sword.

I was never 100% happy about the melee combat, as it did not feel quite right enough. Maybe that could be a good thing to try?

Suggested by Wipfhunter:
TagsNo tags attached.
Attached Files

2018-03-18 21:20   
I'd like to look into implementing this.

I imagine it as follows:
* Have the melee weapon hit the target at animation end. Maybe reduce damage if the animation was stopped before its desired length (lets say the attacker tumbles because of a rock that hit him mid-animation, or because of some explosion)
* Have rolling behind the attacker or moving out of reach before the animation is over either avoid damage, or reduce damage as explained above (signal the dodge with a sound to the player?)
* Have the shield (or a counter-attack?) during animation block the damage (with a nice animation and/or sound that signals the successful block to the player)
2018-03-18 21:28   
Alternatively, the weapon could deal damage /during/ the swing. That would also have the same effect: If I block with a shield, I only get very minor damage. And if the enemy hits me with the whole animation, I get a lot of damage.

Then it would also be easier to at least hit the enemy. Because in the first iteration, it was like that: The sword would hit at one point (maybe half) of the animation. And it felt weird if you /just/ missed the enemy
2018-03-18 21:38   
I thought about that, too, and I liked it at first because you'd also get a nice "shrinking health bar" effect during the swing. I did not like it though, because you'd have lots of calls to the damage reducing callbacks (if there are any), as well as hit sounds and other hit/damage effects in objects.

So, "during swing" damage is ok, but only if it is applied as a whole once the object is out of reach/animation cancelled/attack blocked.

What about hitting multiple targets? Should they be safe once the attack "connects" with the first target?
2018-03-19 17:39   
>because you'd have lots of calls to the damage reducing callbacks (if there are any), as well as hit sounds and other hit/damage effects in objects.

Ah yes, that's a valid remark

>So, "during swing" damage is ok, but only if it is applied as a whole once the object is out of reach/animation cancelled/attack blocked.

Sounds good, too

>What about hitting multiple targets? Should they be safe once the attack "connects" with the first target?

Currently you can hit multiple targets and I would like to keep that
2018-03-19 17:53   
>Currently you can hit multiple targets and I would like to keep that
Ok, then at least a successful block has to stop the attack (if there is an animation feedback, otherwise it becomes weird). Since animations are not part of the first few commits I'll keep hitting multiple targets through the entire animation.
2018-03-21 05:56   
Hm, if we only deal damage at the end, we could also only allow the block to be fully effective if the shield was activated after the attack started. That would make the current "hurrdurr, I am holding a shield"-stalemate less of a problem. Thoughts?
2018-03-21 07:58   
Might be well worth a try!
2018-03-21 20:06   
I think it is good. Regarding product version: Should this really be 8.1? I can make a short prototype for 8.1, but the real thing should be 9.0, in my opinion.

Shield blocking: As I understand it, the weapon will have the following phases:
1) swing/charge-phase. Does no damage.
2) damaging phase. This *might* have a further property for full damage after x frames. E.g. the phase is 20 frames, and the full damage time is 10 frames - so if you enter the attack area after 15 frames you'll get 50% damage. If you enter at 10 frames and exit at 13 it's 30% damage. If you enter at 5 and exit at 17 it's still 100% damage, and so on.

Now, looking at these phases, I'd handle shields this way:
a) Start blocking before phase 1) => the shield prevents 50% damage
b) Start blocking during phase 1) => the shield blocks damage and you are shielded throughout the rest of the attack (would do something similar for triggering a roll, so it finally has a purpose!). This means that you can counterattack after a successful block
c) Start blocking during phase 2) => You get damage as if you exited the attack area after X frames. E.g. block after 5 frames = 50% damage, block after 11 frames = whoops you are too late.
2018-03-28 08:01   
"Product version" means the version of the product that is affected by this issue. "Target version" means the version we plan to release the changes in.

To the changes: Yeah, we'll just have to see how it feels :)
2019-04-30 08:19   
The bigger problem I see here is how to communicate these rules to the player (and I don't talk about a few text boxes in the Tutorials which no one reads or remembers).

No, I talk about how the result of a certain action becomes something the players will understand. So, unless you are a developer of the game, how do you know that blocking before the attack starts is less effective? Other games might show you a special effect whenever an attack breaks the block. But if you just take damage (which in itself is something you often overlook in OC), the only conclusion is that blocking with a shield is ineffective (or weird if it sometimes works). Maybe the person also thinks that the block direction was wrong and blocking with a shield is very difficult (if the direction is also important when it comes to blocking swords, blocking might just be too difficult in addition).
In contrast, how do I know that my block was effective? Other games (mostly PvE) flash certain icons or controls whenever you are able to perform a certain counter (see e.g. ) or again, you get to see a certain visual effect. The attacking clonk could be thrown off or something.

As the attacker, how do I see whether my attack did full damage (no block), half damage (ineffective block) or no damage (perfect block)? With three possible outcomes, having two distinct sounds (hit and blocked hit) is longer a clear indication of the outcome.

I could imagine showing / flashing certain status symbols around your clonk. The problem is that this would be something exclusively shown in sword & shield combat and nowhere else in the game. It would then get the feeling of a whole different subgame in itself and a foreign object in the game. If all these rules just work silently without the player's knowledge, the effects feel arbitrary at best, buggy at worst.

2019-05-01 10:23   
Yes, you'd need at least some sort of feedback for the player. My suggestion:

Perfect block: Attacker plays an animation, similar to pickaxe hitting resistant material (this also stops the attack and other guys behind you, etc. are not hit), maybe block sound + pickaxe clang?
Ineffective block: Block sound, no special effects
No block: hit sound

About the UI stuff and weapon system: It should be an player setting, or explained in a tutorial, possibly both.

Issue History
2018-03-18 10:48ZapperNew Issue
2018-03-18 21:20MarkyNote Added: 0006163
2018-03-18 21:28ZapperNote Added: 0006164
2018-03-18 21:38MarkyNote Added: 0006165
2018-03-19 17:39ZapperNote Added: 0006167
2018-03-19 17:53MarkyNote Added: 0006168
2018-03-21 05:56CaesarNote Added: 0006169
2018-03-21 07:58ZapperNote Added: 0006170
2018-03-21 19:57MarkyAssigned To => Marky
2018-03-21 19:57MarkyStatusnew => assigned
2018-03-21 20:06MarkyNote Added: 0006171
2018-03-28 08:01ZapperNote Added: 0006174
2019-04-30 08:19ClonkonautNote Added: 0006244
2019-04-30 08:19ClonkonautNote Edited: 0006244bug_revision_view_page.php?bugnote_id=6244#r1389
2019-05-01 10:23MarkyNote Added: 0006247