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

Adjust spawn protection dedicated server option to allow use of invuln powerup #295

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

GooberRF
Copy link
Contributor

@GooberRF GooberRF commented Oct 22, 2024

This PR adjusts the implementation of spawn protection via the dedicated server config file in two ways:

  • It is now a boolean on/off toggle with a duration optional parameter. This is very minor, but I think it is more intuitive than the previous method and aligns better with other options with configurable parameters like hitsounds.
  • It now has a new $Use Powerup optional setting (defaults false). If true, instead of using the standard method of spawn protection, grant newly spawned players an invulnerability powerup for the specified duration. This probably would never be used in normal servers but it would be fantastic for run servers. It's effectively what Cyrus and many other mappers were intending with all the invulnerability powerups scattered around.

New syntax for the configuration is (with default values shown):

$DF Spawn Protection Enabled: true
    +Duration: 1500
    +Use Powerup: false

@rafalh
Copy link
Owner

rafalh commented Dec 7, 2024

I've seen someone complaining about it making a lot of noise. Have you used it in practice and determined that it is useful? Do you use it currently on any of the servers?

It's effectively what Cyrus and many other mappers were intending with all the invulnerability powerups scattered around.

They intended the people to not kill each other. Not to glow in the darkness.
It's already possible to disable killing in Dash servers ($DF Player Damage Modifier). This power-up works only for the amount of time configured for spawn protection, not all the time, right? Do you intend people to set long spawn protection in run servers? It sounds like a hack.

Invulnerability powerups affect performance:

  • they cause entities to be rendered twice
  • they add dynamic light (also dynamic lights are limited)

At the same time some indication of people having spawn protection active sounds like an improvement.
I wonder if we should somehow include that information in entity spawn packet (or maybe just tell the joining client that every spawned entity starts with this powerup). That way there should be no unnecessary noise + there will be no delay between spawn and first obj_update packet when entity may not have it (is there a delay? not sure if obj_update will be sent in the same frame for the spawned player).

What do you think?

@is-this-c
Copy link
Contributor

is-this-c commented Dec 8, 2024

They intended the people to not kill each other.

It changes gameplay! If you are invuln you cannot die from what is supposed to be able to kill you.

At the same time some indication of people having spawn protection active sounds like an improvement.

Indeed. But I think it would be absurdly annoying to do it this way. A better way might be to render the player in black and white.

@GooberRF
Copy link
Contributor Author

GooberRF commented Dec 8, 2024

At the same time some indication of people having spawn protection active sounds like an improvement. I wonder if we should somehow include that information in entity spawn packet (or maybe just tell the joining client that every spawned entity starts with this powerup). That way there should be no unnecessary noise + there will be no delay between spawn and first obj_update packet when entity may not have it (is there a delay? not sure if obj_update will be sent in the same frame for the spawned player).

I think that could be a great way to do it, and a great alternative to using the invuln powerup directly, which as you said does have some downsides.

I do think though that it would make a lot of sense for the visual indicator for spawn protection being active to be the blue invulnerability vbm overlay (without dynamic light). That is an effect universally recognized in RF already as "this player can't be damaged" and leveraging that pre-existing knowledge would make it more intuitive.

@rafalh
Copy link
Owner

rafalh commented Dec 8, 2024

It changes gameplay! If you are invuln you cannot die from what is supposed to be able to kill you.

Not sure what you mean here? AFAIK in runmaps events like Continuous_Damage can still kill you, can't they?

But I think it would be absurdly annoying to do it this way

Could you elaborate why? Is it because those visuals would be too distracting or because of sounds?

A better way might be to render the player in black and white.

That would be much harder to do at this point. We would need shaders and right now we only use them in experimental DX11 mode.

I do think though that it would make a lot of sense for the visual indicator for spawn protection being active to be the blue invulnerability vbm overlay (without dynamic light). That is an effect universally recognized in RF already as "this player can't be damaged" and leveraging that pre-existing knowledge would make it more intuitive.

That's a good point although I don't think it necessary mean we can't introduce a different effect if it makes more sense. But considering that options like white-and-black are much more difficult at this point and would be inconsistent with existing mechanics I think it is acceptable to use invulnerability overlay.

Not sure if disabling lights is worth it, it would cause inconsistency, and would require additional patching.

Now that I think about it it may be worth it to somehow differentiate people with spawn protection from people with invulnerability powerup. When I see someone with the powerup I must assume they will be invulnerable for a long time (30 sec?) so I run from them as quick as possible. But spawn protection is much shorter. Those overlays would scare enemies for no reason. Maybe we could tweak alpha so the overlay is less intensive, e.g. 0.5 alpha. The same thing could also be applied to normal powerups to indicate that it is nearing its end, e.g. 5 seconds before the end it would smoothly reduce the alpha until 0. WDYT?

@nickalreadyinuse
Copy link

nickalreadyinuse commented Dec 9, 2024

Not sure if disabling lights is worth it, it would cause inconsistency, and would require additional patching.

I haven't played any games with this tweak yet, but dynamic lighting is quite a big problem for this use case IMO. This will reveal where people have spawned and what they do afterward much more clearly than just the blue flash and sound does currently.

For an example, on WL if you are on the 1st floor/ground in the base and someone spawns above you it's often ambiguous if they spawned 2nd or 3rd level. With this change, as long as there are fewer than 2 floors above you, you would be given perfect information on where an enemy has spawned. In competitive play this would not be trivial. Good players spawn with alt fire and don't spam pistol immediately. You can hear people walk around above you if they keep the pistol out but it's never as clear as some kind of visual tell would be. And you'd be able to see where players are going through the floor for the duration of the spawn protection.

That's not to say that this is entirely a dealbreaker, but my hunch is that this would be pretty bad for the game overall. And pragmatically speaking, I would actually be more concerned with casual play on custom maps, especially micros or anything where players might spawn 2 or fewer floors above the player. Especially at long ranges this might make it a lot more clear where people are spawning and what they're doing after spawning.

The same thing could also be applied to normal powerups to indicate that it is nearing its end, e.g. 5 seconds before the end it would smoothly reduce the alpha until 0. WDYT?

I kinda like this idea, but I don't think it's a change that should be default behavior. Keeping track of when the enemy amp will expire is some kind of skill (albeit a very minor one, which this wouldn't impact all that much). But the bigger issue is that I could see newer players being misled into thinking the amp's damage boost gradually reduces while the alpha fades. Depending on map visibility and what exactly the fade looks like this could be very confusing for players. Even more so with invincibility.

In Quake there is a count down/metronome sound cue for the last 5s of quad which is a lot less ambiguous. I forget if this only plays for the player with the power up or others hear it as well though, but I suspect it's the former.

All of that said, I think a visual indication on the enemy model that shows whether or not they have spawn protection would be a really nice QoL feature and would make spawn protection a lot nicer to play with. Retail RF's spawn protection was very clunky gameplay wise because it was always hard to tell exactly when you should start firing at a spawner, unless they cancelled the protection by firing. Which a lot of players did because they also had no idea it even existed.

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

Successfully merging this pull request may close these issues.

4 participants