Skip to content
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

Implement payload (prototype) #1059

Merged
merged 3 commits into from
Sep 24, 2022
Merged

Implement payload (prototype) #1059

merged 3 commits into from
Sep 24, 2022

Conversation

Pablete1234
Copy link
Member

@Pablete1234 Pablete1234 commented Sep 23, 2022

This is an experimental prototype for payload, not a final PR, however, it can be merged for playtesting.

It piggybacks off of ControlPoints entirely, to the point Payloads are "a type of control point" internally, they just use a different region to capture and display some particles on the world. 0% completion is the start of the track (set with location="x,y,z" in xml) and 100% completion is wherever the track ends.

<payloads>
  <payload location="x,y,z" radius="3" display-filter="filter" capture-time="1m" decay-rate="0.25" .../>
</payloads>

Note: In its current state it only properly supports A/D payload. If both teams can capture it, it works but it will go towards the same destination for both teams (going back when the non-dominating team goes in it), which is likely undesired behavior.

It supports literally everything that control points support (including absurd ones like a progress region, even tho they're unlikely to be of any use with a payload). So things like filtering players, multiple payloads chained (5-cp style), permanent="true", capture-time, decay-rate, contested-rate, recovery-rate, etc, all work.

On top of the control point stuff, it supports display-filter which filters if particles are shown. This is useful when combining multiple payloads to signify if they're active or not (this is likely to get removed, changed or reworked in the future when checkpoints are introduced).

How the payload currently looks like:

javaw_Rmg3csuZJs.mp4

@Pablete1234 Pablete1234 added feature New feature or request discussion Just talking labels Sep 23, 2022
@Pablete1234 Pablete1234 marked this pull request as draft September 23, 2022 10:24
Copy link
Member

@Electroid Electroid left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Design looks good, didn't look at the track code yet.

@Pablete1234
Copy link
Member Author

The track stuff is probably the only somewhat-final thing, everything else is just "in there" to fully piggy-back off of control points, in order to save time and have a minimal implementation for testing/design purposes.

Want to see how well this works gameplay-wise, map-wise, and what other elements would make sense code-wise (eg: checkpoints are a big requirement).

When we have that figured out, the end-game is to split control points into a more generic "ControlableObjective" or similar, and have both control point and payload extend that. The controlable objective will hold most if not all of the logic of a control point, like progression, capture rules, decay, etc, while control point/payload will handle (each in their own way) tracking what players are considered in-the-region, how they display, scoreboard, etc

@Pablete1234 Pablete1234 marked this pull request as ready for review September 24, 2022 09:13
Signed-off-by: Pablete1234 <pabloherrerapalacio@gmail.com>
Signed-off-by: Pablete1234 <pabloherrerapalacio@gmail.com>
Signed-off-by: Pablete1234 <pabloherrerapalacio@gmail.com>
@Pablete1234
Copy link
Member Author

Should be ready to be playtested, even if not final, updated original comment to reflect extra stuff.

Copy link
Member

@Electroid Electroid left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To enable this feature, you'll need to put the following in your config.yml:

experiments:
  payload: true

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Just talking feature New feature or request
Development

Successfully merging this pull request may close these issues.

2 participants