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

Rework capturing system and consume RA engineers on capture by default #15661

Merged
merged 16 commits into from Oct 7, 2018

Conversation

Projects
None yet
5 participants
@pchote
Copy link
Member

pchote commented Sep 30, 2018

This PR merges the internal and external capturing logic and improves on both. It is now possible to mix and match the following behaviours for all capturing types:

  • Sabotage on/off
  • External capture delay on/off
  • Run inside and be consumed on/off
  • Capture progress bars / blinking (via their own traits)

This should also fix the various edge cases caused by having multiple Captures/Capturable traits on a single actor, and with multiple actors capturing an actor at the same time.

This also unifies the campaign and default MP capturing logic in RA by switching engineers to use C&C3:KW-style capturing: engineers will wait outside the structure for 5 seconds, then run inside and are consumed. A "Reusable Engineers" lobby option (default off) is provided to restore the old behavior in MP.

The default behaviour change shouldn't be too much of a surprise, as I have raised this (without any real controversy) several times over the last couple of years in the discussions into the engineer/mechanic/hijacker situation, differences from the original C&Cs, and the campaign (e.g. #12806 / #14339).

My main concerns for potential regressions are:

  • Campaign missions
  • Disabling behaviours while a capture is underway
    • Note that #15045 will regress the behaviour for blocking production, but #15058 (and then switching the pause from Production to the Exits) fixes it properly.
    • #14632 is now also a problem for RA, but needs to be fixed in the production/exit code, not here.

This plus #15045, and #15058 together remove our last uses of the building lock, so that will shortly be removable.

There are also plans to make this change in TD, but i'm deferring that to a future PR so that the sabotage logic can be tested here.

Fixes #11493
Fixes #12474
Fixes #12400
Fixes #15076
Closes #15123
Fixes #15330
Partially fixes (now 2/3) #12604
Helps with #12806

Moving forward, I think it is reasonable to WONTFIX the following:
Closes #4875
Closes #4870
Closes #5101
Closes #14261
Closes #12979

@MustaphaTR

This comment has been minimized.

Copy link
Member

MustaphaTR commented Sep 30, 2018

Balance can be further adjusted when we get this merged, but in my opinion. RA mod should keep Generals Style the long timer reusable engineers. Afaik ZxGanon has plans to introduce the KW like short delay consumed engis to TD mod. D2k can keep the old behaviur so we have all the engi logics shown in our main mods. Best probably would be to hear more from the community tho.

Also about the blnking trait? Can we get ability to play a sound for each blink and make delay between blinks get shorter and shorter as capture goes on as in Generals? Would be nice to be able to replicate behaviour there.

@ZxGanon

This comment has been minimized.

Copy link

ZxGanon commented Sep 30, 2018

Yes I have been waiting for so long for this change.

I can´t wait to implement this into Shattered Paradise and my TD Mod since this is just the most modern and balanced way to implement engineer capturing.

Also since lobby options are impelmented everyone can customize it (if not implementing it as a must have like we are gonna do in SP).

Explaination:
This Engineer trait introduced into Kanes Wrath was a way to balance out engineers that did instant capture in the previous game Tiberium Wars. It was a hellish overpowered and instant win mechanic to capture key structures without being able to defend them in any kind of way so all factions went for this start. It was disguting to put it simple.

With this counterplay is gonna be enabled while finally removing the lock on production facilities. Conyard can now finally undeploy when trying to capture them or even selling structures off if not able to defend.

Of course this will weaken capturing a lot and there is the neat to rebalance this in TD and SP like shortening the captruing time in SP from 7 seconds to 5 seconds or giving Oil Dericks a capture ammount upon taking an Oil Derrick but this is gonna pay off.

But still keep in mind that you still have to spot the engineer from capping your structures and that even happens in RA where capping takes roughly 12-14 seconds so I see no issue in implementing this.

Now coming to RA:
I would say that touching the RA Engineer in terms of multiplayer should be done as you tried to express pchote. Implementing the changes while providing lobby options for people to still keep the old capture way we have in the current release.

With that people can try out both ways.

@pchote pchote force-pushed the pchote:captures-rework branch 2 times, most recently from 72a8d69 to e442a45 Sep 30, 2018

@pchote pchote referenced this pull request Sep 30, 2018

Open

RA campaigns polish + unifying #12806

1 of 5 tasks complete

@pchote pchote force-pushed the pchote:captures-rework branch from e442a45 to d7746c7 Oct 1, 2018

@pchote

This comment has been minimized.

Copy link
Member

pchote commented Oct 1, 2018

Bumped the capture delay to 200 ticks (8 seconds) as discussed in IRC.

@pchote pchote force-pushed the pchote:captures-rework branch from d7746c7 to 3f700e6 Oct 1, 2018

@pchote pchote force-pushed the pchote:captures-rework branch from 3f700e6 to 6078100 Oct 6, 2018

@pchote

This comment has been minimized.

Copy link
Member

pchote commented Oct 6, 2018

Updated:

  • Rebased on top of #15643
  • Added a new commit to remove the now unused building lock check from BaseProvider

I also confirmed that #15650 does not occur with the new logic.

@pchote pchote force-pushed the pchote:captures-rework branch 2 times, most recently from 93b8129 to 9189fa4 Oct 6, 2018

else
c.AddNode("EnterCursor", "ability");

var cursorBlockedNode = c.LastChildMatching("CaptureCursor");

This comment has been minimized.

@abcdefg30

abcdefg30 Oct 6, 2018

Member

This doesn't want to use CaptureCursor (like above already), I suppose.

@@ -1,4 +1,4 @@
#region Copyright & License Information
#region Copyright & License Information

This comment has been minimized.

@abcdefg30

abcdefg30 Oct 6, 2018

Member

Is this change correct?

@@ -624,6 +624,11 @@ public Activity VisualMove(Actor self, WPos fromPos, WPos toPos)
new HeliFly(self, Target.FromPos(toPos)));
}

public int EstimatedMoveDuration(Actor self, WPos fromPos, WPos toPos)
{
return (toPos - fromPos).Length / Info.Speed;

This comment has been minimized.

@abcdefg30

abcdefg30 Oct 6, 2018

Member

Any reason we use Info.Speed here directly instead of using MovementSpeed?

pchote added some commits Sep 29, 2018

Add CaptureManager trait to fix multiple-trait interactions.
This fixes the various edge cases that occur when multiple
Captures or Capturable traits are defined on an actor and
are toggled using conditions.

The Sabotage threshold field moves from Capturable to
Captures in order to simplify the plumbing. The previous
behaviour ingame can be restored by creating a new
capturable type for each threshold level, each with their
own Captures trait.

@pchote pchote force-pushed the pchote:captures-rework branch 2 times, most recently from f4a53e1 to d4f8e96 Oct 6, 2018

@pchote

This comment has been minimized.

Copy link
Member

pchote commented Oct 6, 2018

Fixed.

pchote added some commits Oct 6, 2018

Add support for capture delays and conditions.
CaptureDelay is defined per-trait, and the shortest
delay will be used if multiple traits are enabled.

CapturingCondition and BeingCapturedCondition are
global, and are granted when any capture is in progress.

The capture period is defined from when the unit reaches
the cell next to the target, and either starts to wait
or enter the target through to when the capture succeeds
or fails.
Remove legacy building lock calls.
This has been superseded by conditions.

@pchote pchote force-pushed the pchote:captures-rework branch from d4f8e96 to bc358f0 Oct 7, 2018

@pchote

This comment has been minimized.

Copy link
Member

pchote commented Oct 7, 2018

Updated:

  • Added a commit that uses BeingCapturedCondition to stop target movement when a hijacker captures a vehicle. This should make them much more usable.

@pchote pchote force-pushed the pchote:captures-rework branch from 375cdf8 to 4b9267e Oct 7, 2018

@abcdefg30
Copy link
Member

abcdefg30 left a comment

Looks good to me now. Great work! :)

@abcdefg30 abcdefg30 merged commit 1abfaa9 into OpenRA:bleed Oct 7, 2018

2 checks passed

continuous-integration/appveyor/pr AppVeyor build succeeded
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
@abcdefg30

This comment has been minimized.

Copy link
Member

abcdefg30 commented Oct 7, 2018

@Punsho

This comment has been minimized.

Copy link

Punsho commented Nov 26, 2018

Will the engineer lobby option also toggle the ability to block the production, disallow selling? If not this seems like just a downgrade from the gameplay standpoint

In ra competitive 1v1s there is the cat and mouse chase with the engineer and it is a big part of early game and tbh very fun, the consumable engineer would remove this entirely

@pchote

This comment has been minimized.

Copy link
Member

pchote commented Dec 21, 2018

Will the engineer lobby option also toggle the ability to block the production, disallow selling? If not this seems like just a downgrade from the gameplay standpoint

No, these remain disabled/blocked in both modes. Enabling selling during capture seems a bit risky IMO, but we can consider toggling this if there is enough demand during the playtests.

@pchote

This comment has been minimized.

Copy link
Member

pchote commented Jan 8, 2019

The 8 second capture delay has been heavily panned by the discord community and during fiveaces playtest stream. We'll want to drop this back, perhaps even down to 3 or 4 sec.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment