LCWeapons mutator is a standalone version+extension of the XC_LagCompensation mutator used in latest Siege builds, it can be described as a glorified ZP with some elements of full-serverside processing for hitscan weapons with some additions.
There's mainly 2 sub-engines in use depending on the weapons:
=== LC sub-engine ===
- No functions called, 100% serverside processing.
- Impossible to hack.
- Usage of interpolated timeframes of older positions of Players and Monsters.
Weapons that implement this:
- AsmdPulseRifle (SiegeXTreme, SiegeUltimate, SiegeIV)
- Unreal 1 Minigun.
- Impact Hammer (primary)
- Slight lack of precision in timeframes due to fluctuating pings.
=== ZP sub-engine ===
- Zero obfuscation, relies on a huge amount of client-server security and integrity checks per shot.
- All replicated objects can be eligible for a shot.
- Eligibility of client hittable objects is easily changeable, and affects all ZP weapons (projectiles and moving pawns are chosen right now).
- If a non-eligible actor is shot, server does a normal trace ignoring the actors that are eligible, preventing double hitscan bugs.
- None of the old ZP bugs.
- Anti-speed hack prevents firing the weapon serverside if the client runs too fast or too slow.
- Usage of old timeframes if victim is a Player* for extra reliability and headshot integrity.
Weapons that implement this:
- InstaGib Rifle
- Sniper Rifle
- Given the amount of security checks, packet loss or ping ping spikes can severely hurt the ZP engine by making shots not register.
Players*: Anything with a PRI counts, Bot, Bots and Botz classes included.
Another characteristic is the simplicity of the code applied on the weapons themselves, while leaving all the complicated stuff to the engine actors.
Mixing said simplicity with how the LC/ZP code is very similar among said weapons, it makes the implementation of the system in any other hitscan weapon easy and mechanic.
Sub-weapons currently implemented:
- NYACovertSniper <-> ZP
- ChamRifle <-> ZP
- h4xRiflev3 <-> ZP
- MonsterHunt2Beta Rifle <-> ZP
- SunlightShockRifle <-> ZP (loaded from AWM_Beta1)
- Liandri Minigun <-> LC
- SiegeInstagibRifle <-> ZP (SiegeUltimate, SiegeIV)
- Some small weapon variations from AWM_Beta1.u
(this is a showcase, more to come, you may ask for your own weapon set implemented)
Enhanced inventory replacement
Using a combination of Mutator/SpawnNotify methods, weapons are more reliably replaced, allowing other code to still interact with weapons they create (although replaced) without losing the actor reference.
With this method, a mutator won't break any automatic 'GiveTo' commands used when respawning players (or monsters with weapons), or any specific modifications a weapon may have in runtime the moment it is created.
Also, LC Weapon variants carry their old relatives' PickupAmmoCount and AmmoName variations to themselves and will respawn without losing these custom properties.
Clients can now use boosters (only Kickers) smoothly as if they were the local player, swJumpPads supported as well.
Automatic bind scanner to make the new weapons work.
Weapon switching and firing has no delay, and pending weapon is highlighted just like in offline mode.
Compatible with ExtendedClientMove plugin for better movement compensation.
Enemy projectiles moved up to 30ms ahead in time on clients, helps avoiding them when you're seeing them closer to their real position.
Team colored shock rifles, load the mutator FV_ColoredShock along with LCWeapons.
Fixes double enforcer ammo bug.
Support's XC_GameEngine's Dynamic Package Loader, applies it to some mods as well when set as mutators.
Clientside prediction of positions.
Affects players, monsters and projectiles.
The time prediction is capped to 110/GameSpeed milliseconds.
Time prediction is adjusted dynamically to lower values when players have less ping than the prediction value.
Uses both velocity and last 4 positions to predict turns and stops more accurately.
Players and guided warhead's position prediction also applies interpolation to make them look smoother.
Players can also alter how prediction works on their clients using MUTATE PREDICTION _PING_ and MUTATE GETPREDICTION commands.
Generic arena mutator
The generic arena mutator detects a known generic arena and will replace it with it's own implementation, which is extremely flexible allowing it to replicate the behaviour of said old arena mutators while replacing the intended weapon with a version that has a LC/ZP engine applied on it, which also works with PURE binds.
Known arena mutators that can be processed:
- *AlienAssaultMutator (AARV17)
(more can be added)
* These are automatically added to send list by the XC_GameEngine's Dynamic Package Loader if loaded as mutators.
When replacing a custom arena, DO NOT GET RID of the original package, nor remove it from ServerPackages list, simply load the LCMutator and then load the arena you want to run!
Textures, sounds and other resources are taken from said packages to remain versatile and size efficient.
If setting up on a Siege server, read the installation notes for instructions on fixing the Suppliers (method is analogous, yet shorter than for ZeroPing).
Coop and MH servers are great candidates for testing given the fact both ZP and LC sub-engines track monsters.
- Bugfix build
- (298.67 KiB) Downloaded 36 times
- Tons of bugfixes and reliability improvements.
Shock Rifle combos massively improved.
- (297.25 KiB) Downloaded 163 times
- Stable prediction system, user customizable.
- (290.9 KiB) Downloaded 132 times
- (281.15 KiB) Downloaded 133 times
- Demoplay crash fix
Team colored shock
- (348.72 KiB) Downloaded 145 times
Last edited by Higor
on Tue Oct 02, 2018 11:33 pm, edited 20 times in total.