ValveSoftware / halflife

Half-Life 1 engine based games
Other
3.65k stars 617 forks source link

[25th Anniversary] Camera roll feature should be adjustable independently on Client and Server side #3475

Open GTManiK opened 9 months ago

GTManiK commented 9 months ago

As much as I do appreciate an old feel of original vanilla camera roll , I think it's still too much to make them server-only cvars.

EDIT: let me express my thinking (after some discussion below), why I raised this issue in the first place.

I noticed that by default view roll is enabled, presumably to make it feel like it was the good old days. This is an interesting mechanic, but surely it's not for everyone (I forgot it even existed since like WON HL 1.1.0.6 or 1.1.0.8)

While in SP it definitely brings those old vibes, it may look out of place in HLDM (since there are communities who would whine with any slightest changes to their Gauss Jump - Bhop - Etc routine).

So I immediately had an idea that view roll should be an opt-in feature in game settings (on par with filterable textures for example). Then I started a DM server, only to realize that view roll works in HLDM as well, and I did not find a way to disable it. I googled a little bit, asked in Steam Community and found that now we can control view roll with two abovementioned CVARs: sv_rollangle and sv_rollspeed.

But this means that these game aspects are set together for both SP and MP, simultaneously. This also means: if you want to start a listen server, everyone would experience YOUR settings regarding a view roll. Of course, you can have different configs for SP and MP, but it's not too convenient either. (Just think about it in the following way: if you would want to give user a possibility to enable/disable a view roll, where do you put these settings in UI? Regular game settings? Server settings where you create a game? Both?)

@SamVanheer later mentioned that these are server CVARs on purpose (exploitable otherwise), so rather than making them cl instead of sv, I guess the best way would be to make different settings for client and server:

SamVanheer commented 9 months ago

They are server cvars because you can peek around corners with this feature by setting the angle to something more extreme like 90 degrees. Before the feature was removed decades ago they were already server cvars for this reason.

GTManiK commented 9 months ago

They are server cvars because you can peek around corners with this feature by setting the angle to something more extreme like 90 degrees. Before the feature was removed decades ago they were already server cvars for this reason.

I see, it kinda makes sense... But I also think that in HLDM it doesn't matter MUCH. In CS, for sure.

Then it would be better to make them cl_ cvars, plus add some server ones like sv_allow_viewroll or something... Pretty sure those will be disabled server-side, at least there were on some anniversary servers I tried

dystopm commented 9 months ago

They are server cvars because you can peek around corners with this feature by setting the angle to something more extreme like 90 degrees. Before the feature was removed decades ago they were already server cvars for this reason.

I see, it kinda makes sense... But I also think that in HLDM it doesn't matter MUCH. In CS, for sure.

Then it would be better to make them cl_ cvars, plus add some server ones like sv_allow_viewroll or something... Pretty sure those will be disabled server-side, at least there were on some anniversary servers I tried

Server should define those rules. Reasons were given.

pitrii commented 9 months ago

They are server cvars because you can peek around corners with this feature by setting the angle to something more extreme like 90 degrees. Before the feature was removed decades ago they were already server cvars for this reason.

This argument is pretty valid. From my point of view a client side cvar in order to enable/disable roll would be a nice compromise .. so, the ruleset is given by the server (sv_rollspeed and sv_rollangle), but nobody is forced to use it through a client side cvar like cl_roll_enable

GTManiK commented 9 months ago

This argument is pretty valid. From my point of view a client side cvar in order to enable/disable roll would be a nice compromise .. so, the ruleset is given by the server (sv_rollspeed and sv_rollangle), but nobody is forced to use it through a client side cvar like cl_roll_enable

Yeah, because I think view roll should be adjustable via checkboxes (like for singleplayer use), but servers would govern whether it is allowed in multiplayer (like flashlight setting always was)

GTManiK commented 9 months ago

Updated the first message in this thread to better express the reasoning of this.

derBABO88 commented 9 months ago

They are server cvars because you can peek around corners with this feature by setting the angle to something more extreme like 90 degrees. Before the feature was removed decades ago they were already server cvars for this reason.

Which brings up the question: Why re-introduce a feature that was previously removed from the game for a reason?

I'm gonna be honest in saying that rollangle is terrible from a competitive standpoint and won't do any good for the multiplayer scene. Anyone that played the game at a very high level will agree that it takes away from the smooth experience the movement is able to provide in this game. It feels chunky to move around with rollangle enabled in a game, that was otherwise known to have pretty precise movement.

This feature should really be scrapped for good. It was previously removed for a reason. If not, then it should be made choosable by the client as previous posts have already suggested. The issue of potentially being able to peak around corners can be easily mitigated by hard coding a max value for rollangle so that you wont be able to set ridicolous angles, no matter what.

SamVanheer commented 9 months ago

Because the game was meant to have this feature. It was probably removed due to problems with cheating in multiplayer. Games and mods should be able to disable it in gamemodes where it's a problem to have the best of both worlds.

Locking the angle would restrict what modders can do with it.

GTManiK commented 9 months ago

Because the game was meant to have this feature. It was probably removed due to problems with cheating in multiplayer. Games and mods should be able to disable it in gamemodes where it's a problem to have the best of both worlds.

Locking the angle would restrict what modders can do with it.

It's not a problem when it's adjustable both from client and server side. Imagine a case, when you want to play without a view roll on some server, where it is enabled. You do not gain any advantage by disabling it on the client, but currently you simply cannot do it.

A 'flashlight' feature for example - on client you can 'opt-out' by simply not using it if it's enabled on the server. But view roll is embedded into 'strafe' mechanic, and you simply cannot opt-out of it, while HLDM for years was played without it, it might break regular playing feel for some people.

Removing view roll entirely was probably not the best decision. A better way is to allow both clients and servers to decide whether they need it, enforcing server rules in restrictive way - disabled on server = clients cannot use it. But not wise versa - if it's enabled on a server, clients should have an option to NOT use it.

pitrii commented 9 months ago

Because the game was meant to have this feature. It was probably removed due to problems with cheating in multiplayer. Games and mods should be able to disable it in gamemodes where it's a problem to have the best of both worlds.

Locking the angle would restrict what modders can do with it.

I can agree that we do not need more engine based restrictions in modding.

Nevertheless, more competitive players urgently require at least a cvar in order to disable roll (this interval method mentioned by @GTManiK is certainly more convenient). Otherwise, they will be forced to play in mods. It could result in mutual exclusion.

Pinsplash commented 9 months ago

I don't play high level DM but even I have already resolved to not play on any server that has sv_rollangle above 0 because it simply looks like garbage.

sabianroberts commented 9 months ago

Having read this thread I completely understand why Valve have made viewroll a serverside cvar, but I think it lies down to personal preference as well as preventing an unfair advantage. Every server operator on Half-Life is now able to control whether every single player has viewroll or not, and how much roll they have. When I played HLDM over the anniversary weekend I noticed that certain servers had different values and it was inconsistent.

There should be a user-setting / clientside cvar like cl_roll_enabled and if set to 1 the engine allows viewroll to take effect. Or, simply have viewroll not take effect in deathmatch servers at all, because I personally don't like viewroll in deathmatch -- I find it quite distracting considering how hectic HLDM can be. It's great in multiplayer though. I'm still glad in the end that Valve listened to the WON fans and brought these features back

GTManiK commented 9 months ago

It's great in multiplayer though.

I think you meant that it's great in SINGLEplayer (and I wholeheartedly agree then)

h-a-s-k commented 9 months ago

This should be turned off by default on any counter-strike and require sv_cheats 1. How little can you care to think forcing this on by default after 20 years is unironically a good change?

While you're at it, fix the main menu, either you go for the 1.5 aesthetic or stick to 1.6

sabianroberts commented 9 months ago

This should be turned off by default on any counter-strike and require sv_cheats 1. How little can you care to think forcing this on by default after 20 years is unironically a good change?

While you're at it, fix the main menu, either you go for the 1.5 aesthetic or stick to 1.6

The menu for Counter-Strike 1.5 WON was so cool, it would be neat to see that in the Steam version

sabianroberts commented 9 months ago

@h-a-s-k , I've made a simple mod which is up on GameBanana [link below] that alters Counter-Strike 1.6's resource files to recreate the CS1.5 logo. This should hopefully fit CS better. It also has the sounds.

https://gamebanana.com/mods/481877

image

0Ky commented 9 months ago

@sabianroberts You might want to create a separate issue for that.

sabianroberts commented 9 months ago

@sabianroberts You might want to create a separate issue for that.

that's a good idea, then it will be tracked and hopefully Valve will fix it. :)

Pinsplash commented 9 months ago

They are server cvars because you can peek around corners with this feature by setting the angle to something more extreme like 90 degrees. Before the feature was removed decades ago they were already server cvars for this reason.

I can't reproduce that with the new implementation. If you set it to 90, you just get a really jerky camera and simultaneously destroy your ability to strafe.

Locking the angle would restrict what modders can do with it.

It already is locked to whatever sv_rollangle is, so I don't know what this means.

Let me say it again: the camera roll is garbage. You Valve should be ashamed for thinking this is good. You've actually caused me to reconsider how much I prefer Black Mesa. I have never used userconfig.cfg before, but I did just to set sv_rollangle to 0. If I were to recommend Half-Life to someone, I would tell them to use sv_rollangle 0.

0Ky commented 9 months ago

I remember playing early release of Half-Life with the camera view roll which was actually inherited from its Quake engine origins. Playing Half-Life without it makes it less immersive in my opinion. I actually don't know the exact reason why it was removed at one point, since I can't find any changelog relating to the removal of the camera view roll.

...enforcing server rules in restrictive way - disabled on server = clients cannot use it. But not wise versa - if it's enabled on a server, clients should have an option to NOT use it.

@GTManiK In other words, you're saying the server should have control to completely disable the camera view roll or enable it to allow players to opt in or out.

Honestly, there doesn't seem any necessity to implement this feature. Maintaining the camera roll as a server-side only command in Half-Life is crucial for ensuring a consistent gameplay experience for all players on a server. This consistency is vital, especially in a multiplayer environment, where equal playing conditions are fundamental. Additionally, allowing individual clients to adjust the roll angle could be confusing for new players, who may not be familiar with such customization options and how they affect gameplay. Also, it could introduce unfair advantage where players could exploit it:

High rollangle - Model hitbox change ![image](https://github.com/ValveSoftware/halflife/assets/16103757/4f524c4c-8c5e-4842-91a0-56ebedf41e24)
High rollangle - Model Leaning https://github.com/ValveSoftware/halflife/assets/16103757/114f6562-c45e-407b-8c36-4486901798b7

Implementing this feature might eventually introduce unintended consequences or disrupt the balance of gameplay. By keeping these settings standardized at the server level, the game remains accessible and straightforward for newcomers, eliminating the potential for confusion and ensuring that all players experience the game as intended, with the camera view roll enabled. This issue seems to be a matter of personal preference. You could always play on a server that's set to sv_rollangle 0 or host your own with ease using the new steam networking feature.

This should be turned off by default on any counter-strike...

@h-a-s-k The sv_rollangle cvar is set to 0 by default on HLDS build 9899 (cs 1.6).

h-a-s-k commented 9 months ago

@0Ky I was thinking of something else, apparently unrelated to sv_rollangle, made a new issue about it https://github.com/ValveSoftware/halflife/issues/3691

GTManiK commented 9 months ago

@0Ky I would say that at least enabling view roll by default on HLDM servers is a bad idea. Just check any decent 'semi-pro' server, it's disabled everywhere. Occasionally you just find servers where it is enabled (probably because server maintainers either do not care or do not know about these cvars). As a consequence, you have to readjust every time you join another server. And it's not like some gameplay feature similar to 'weapons stay' for example (features which adjust 'game rules') - no, it affects your very intrinsic skill - movement and navigation, which should be guided by a muscle memory - there shouldn't be any distractions for a player in this case.

I guess you would need to be a part of (or just being around) a Pro HLDM scene to really feel and understand that. Look, I understand why they removed Bunny Hopping (well, made it harder to pull at least) - though I never supported removing it... But this? Camera roll angle? I understand that it may provide an unfair advantage in some games (like Counter-Strike), but in HLDM? Would you really have enough time to peek around the corner while you're in the middle of a complex BHop sequence and flicking your mouse like crazy to achieve a proper trajectory for your next Gauss jump, and doing some frame-cancel animation activities on the go in between?...

0Ky commented 9 months ago

@GTManiK I follow whichever direction Valve chooses, as they usually make the right choices. It's their discretion to make changes if they see fit.

Just check any decent 'semi-pro' server, it's disabled everywhere. Occasionally you just find servers where it is enabled (probably because server maintainers either do not care or do not know about these cvars).

Not everyone is a 'pro' or 'semi-pro', it wouldn't make sense to make changes just to suit the preferences of a specific segment of the player base. The rollangle feature is absent on servers that are using the pre-25th anniversary build of HLDS. You should check if the server that doesn't have rollangle is actually using the latest HLDS version which is 9899 (type status in the console to see what version the server is using), if they're using an older version 8684, then the rollangle will be absent. There's also another reason why people prefer the pre-25th anniversary build of HLDS (aka 'steam_legacy' build), it's because some people host using an unofficial modified build of HLDS.

I've just had a look at the server browser, around half of HL multiplayer servers with active players are hosted on Valve's new steam network, almost all that are being hosted on the latest version are playing with the rollangle.

I guess you would need to be a part of (or just being around) a Pro HLDM scene

Doesn't the HLDM Pro/Amateur scene use a custom client like the Adrenaline Gamer open-source client ?

I understand that it may provide an unfair advantage in some games (like Counter-Strike), but in HLDM?

Believe me, if it can be exploited, it will be. There's too many implications to consider, and there's nothing really wrong with the current system as you already have the option to enable or disable the feature as server host, also there are servers with rollangle disabled as you have mentioned too.

GTManiK commented 9 months ago

and there's nothing really wrong with the current system as you already have the option to enable or disable the feature as server host

@0Ky, I would be really happy if it would be possible to opt-out of roll angle on a client, that's all.

I guess you have a point on what you say, but I'll never understand why a possibility of opting-out here would be a bad idea.

Doesn't the HLDM Pro/Amateur scene use a custom client like the Adrenaline Gamer open-source client ?

That is mostly correct, almost everyone uses OpenAG. However they live in a totally separate universe... When HL25 came out, I just wanted to play with regular old-timers on NEW servers, but without a distraction of a view roll. I guess that's it, no more, no less...

di57inct commented 9 months ago

Best thing would be to make a client cvar cl_rollangle and just make it to be usable with values less than or equal to the server's sv_rollangle. Also default it to 0 on games other than hl that usually wouldn't use it like cs.

Pinsplash commented 8 months ago

Playing Half-Life without it makes it less immersive in my opinion.

You clearly have never walked sideways before if this is what you think immersion is.

Maintaining the camera roll as a server-side only command in Half-Life is crucial for ensuring a consistent gameplay experience for all players on a server. This consistency is vital, especially in a multiplayer environment, where equal playing conditions are fundamental.

Please do tell us exactly what effect you think this has on gameplay, in your own words. I already know, but I want to hear it. Please tell the entire internet why you think it's different than playing with the crosshair off, or the HUD off, or the camera flipped upside down for all that anyone cares.

I guess you would need to be a part of (or just being around) a Pro HLDM scene to really feel and understand that.

I'm not, and I can see how terrible it is.

Fesiug commented 8 months ago

The camera roll is nice in my opinion, but a clientside convar like 'cl_roll' 0-1 that disables or enables it and places it in the options menu somewhere would be a nice addition.

OldFriendEr commented 8 months ago

Returned to play some hldm after a long break, that view roll instantly hit me as jarring, would love to be able to turn it off.