التعليقات
موضوع: Unreal
Masterkent1 year ago

OK, AFAICS, what people consider cheats is a matter of personal taste. After all, if "SwitchLevel QueenEnd" were considered a legal "non-cheat" command, it would be difficult to prove the opposite point, since I can't recall any official document from Epic MegaGames with formal rules that would distinguish cheats from fair methods of playing the game. So people just rely on their own intuition in this regard or accept some existing point of view. Anyway, the technical insights above may be helpful for people who dislike seeing Load-related glitches in speedruns and may form their own opinion on what is cheating and what is not.

موضوع: Unreal
Masterkent1 year ago

It's pretty clear that console commands like "QuickLoad", "LocalTravel ?load=<SlotNumber>", "SwitchLevel ?load=<SlotNumber>" do not represent legitimate movement/action user controls. They are service commands which are not supposed to give players magic capabilities like zeroing velocity, a possibility to jump in air, or turning into walking zombies after dying.

Since loading saved games is not a regular part of the gameplay and it's not available in multiplayer mode, I'd consider it as a soft singleplayer-only cheat even when this functionality works correctly as intended (as in version 227j and above). Note that the current edition of the speedrun rules for Unreal literally says:

"Console commands that do not function in multiplayer mode are considered cheats and are disallowed even in singleplayer runs."

However, the rules also explicitly allow loading saved games (that cannot be done within a multiplayer game):

"The console commands LocalTravel, Open, or similar, are only allowed when combined with the ?Load=# variable."

To resolve the contradiction and make the rules more clear regarding the intended restrictions (you actually can execute cheats in multiplayer mode as long as you have admin rights), the former sentence should be reworded like this:

"Console commands that do not function in multiplayer mode without admin rights and are not explicitly allowed are considered cheats and are disallowed even in singleplayer runs."

On the other hand, in case if loading a saved game gives a player some really magic powers (as mentioned above) because of the bugged implementation (see the technical explanation below), it should be considered as hard cheating - similarly to using things like "LocalTravel QueenEnd" or "Set PlayerPawn GroundSpeed 10000".

In case of version 226b, it may be easily proven that QuickSave followed by QuickLoad (or a sequence of other console commands with a similar effect) internally does at least the same thing as the "Walk" cheat command:

// This pawn was possessed by a player.
event Possess()
{
	local byte i;

	if ( Level.Netmode == NM_Client )
	{
		// replicate client weapon preferences to server
		ServerSetHandedness(Handedness);
		for ( i=0; i<ArrayCount(WeaponPriority); i++ )
			ServerSetWeaponPriority(i, WeaponPriority[i]);
	}
	ServerUpdateWeapons();
	bIsPlayer = true;
	DodgeClickTime = FMin(0.3, DodgeClickTime);
	EyeHeight = BaseEyeHeight;
	NetPriority = 8;
	StartWalk();
}

exec function Walk()
{	
	if ( !bAdmin && (Level.Netmode != NM_Standalone) )
		return;

	StartWalk();
}

Function Possess is called whenever the player enters the game - including the case of loading a saved game. StartWalk (invoked by both Possess and Walk) may significantly alter player's physics: it may change player state (so a dead player may walk again), set velocity to zero, change physics to PHYS_Walking (so a player may jump in air as if on the ground). Such magic powers are the reason why the "Walk" console command is clearly classified as a cheat and its usage is prohibited for non-admin players in multiplayer mode. An attempt to legalize this explicit cheat through usage of a service console command (such as QuickLoad) that unintentionally produces basically the same effect as "Walk" (by means of executing the same code internally) doesn't make sense to me.

Having said that, I wouldn't accept many of the currently known Unreal speedruns as legitimate cheat-free runs. And from my point of view, it would be better if cheating speedrunners just used "Walk" instead of all those perversions with Save/Load, since eventually this command makes the same thing but without distracting Loading/Saving blue screens interrupting the game.

As the final note I want to point out that in version 227j the implementation of Engine.PlayerPawn.Possess was fixed, so that any modern game builds now fairly restore the player's state and properties without the aforementioned side effects. This means: no more speed breaking, no more jumping in air, no more magic resurrections.

نبذة عن Masterkent
تاريخ الانضمام
1 year ago
عبر الإنترنت
1 year ago
جولات سريعة
0