LCWeapons (build 0020) [LCWeapons_0020]

Search, find and discuss about Mutators!

LCWeapons (build 0020) [LCWeapons_0020]

Postby Higor » Tue Oct 22, 2013 1:44 am

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:
- Minigun
- Enforcer
- 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:
- Shock-Rifle
- 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.

Other features
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:
- SniperArena
- ShockArena
- ImpactArena
- InstaGibDM
- *NYACovertSniper_RIFLEMutator
- *h4x_HeadshotMut
- *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.

Version note:
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 51 times
Tons of bugfixes and reliability improvements.
Shock Rifle combos massively improved.
(297.25 KiB) Downloaded 171 times
Stable prediction system, user customizable.
(290.9 KiB) Downloaded 145 times
(281.15 KiB) Downloaded 144 times
Demoplay crash fix
Team colored shock
(348.72 KiB) Downloaded 159 times
Last edited by Higor on Tue Oct 02, 2018 11:33 pm, edited 20 times in total.
Posts: 1756
Joined: Sun Mar 04, 2012 6:47 pm

Re: LCWeapons (build 0001)

Postby » Wed Oct 23, 2013 3:59 pm

medor wrote:Can we have more explanations about working CustomGameConfig. May be exemples.

Probably should not be used with an other ZP.

Re: LCWeapons (build 0001)

Postby EvilGrins » Wed Oct 23, 2013 4:43 pm

Screenshots or it doesn't exist!
medor wrote:Replace Skaarj with EvilGrins :mrgreen:
User avatar
Posts: 6203
Joined: Thu Jun 30, 2011 8:12 pm
Location: Palo Alto, CA
Personal rank: God of Fudge

Re: LCWeapons (build 0001)

Postby Higor » Thu Oct 24, 2013 8:05 pm

The mutator does exact class type replacement, meaning that only the original weapons (and a few, known mutated ones) will be replaced by LC equivalents with the exact same graphics and functionality.

All it takes is load the mutator en register this package as ServerPackage, without editing any of your previous config except for removing ZP. I will expand the amount of custom weapons to be implemented over time, providing me with links will help as well especially if your box/server is running those.
Posts: 1756
Joined: Sun Mar 04, 2012 6:47 pm

Re: LCWeapons (build 0002)

Postby Higor » Fri Nov 01, 2013 5:48 am

Updated to 0002:

Position markers rewritten, now they require a single actor per player (instead of ~40) and the maximum supported ping has increased.
Individual LagCompensators and LC subengine optimized.
Weapon respawning code now copies AmmoName and PickupAmmoCount to the new weapon.
Minigun, ShockRifle base code simplified and more customizable to allow easier creation of sub-weapons.
Added extra sub-weapons.
Posts: 1756
Joined: Sun Mar 04, 2012 6:47 pm

Re: LCWeapons (build 0003)

Postby Higor » Thu Nov 21, 2013 10:09 pm

Updated to 0003:

Monsters also get position markers now, although these process every 4 frames and rely on interpolation during calculation.
LC subengine immensely optimized during the phase of reverting all eligible object's positions, a server can perfectly handle LC for up to 3000 monsters.
SiegeXTreme, SiegeUltimate and SiegeIV are now supported.
Smart Automatic bind scanner and fixer for non-pure servers.
Kickers are now simulated, producing smooth movement on clients.
Posts: 1756
Joined: Sun Mar 04, 2012 6:47 pm

Re: LCWeapons (build 0003)

Postby » Thu Nov 21, 2013 11:51 pm

medor wrote:How to use NYACovertSniper in a CustomGameConfig ?

Re: LCWeapons (build 0003)

Postby Higor » Fri Nov 22, 2013 1:11 am

medor wrote:CustomGameConfig

Mapvote you mean?
You'd need to load the original NYACovertSniper mutator and then the LCWeapons mutator (both must be in ServerPackages):
Posts: 1756
Joined: Sun Mar 04, 2012 6:47 pm

Re: LCWeapons (build 0003)

Postby » Fri Nov 22, 2013 3:00 am

medor wrote:OK thx i'm going to try it.

And for the others ... maybe you can upgrade the Installation.txt

Re: LCWeapons (build 0004)

Postby Higor » Mon Dec 02, 2013 1:08 am

Updated to 0004:

Shots can be processed a second time in a different scene during the same frame if the first process fails, this greatly increases reliability of the ZP engine making it's security checks less prone to fail.
Weapon switching is almost delay-less and allows the client to shoot the weapon as soon as it's up.
Pending weapon icons simulated.
Added MH2Beta Rifle and ChamRifle.
Most of the new features can now be disabled via INI, in case something else handles those.

Tested here on various gametypes:
Posts: 1756
Joined: Sun Mar 04, 2012 6:47 pm

Re: LCWeapons (build 0004)

Postby *Kr!D_o) » Thu Dec 12, 2013 7:47 pm

What ways is this mod different from GlobalUnreal a.k.a newnet ?

I should of thought about that a little before I asked. But does this mod offer lag-compensation for the player movement as well? Very interested in the mod tho. Keep up the good work.
User avatar
Posts: 67
Joined: Thu May 02, 2013 2:55 am

Re: LCWeapons (build 0005)

Postby Higor » Wed Jan 08, 2014 6:54 pm

Updated to 0005:

Fixed bug causing only one of the two enforcers to have LC.
Fixed bug in time classification checks on ZP subengine, causing shots not to register if client UT hangs for some reason.
Shots register rate is much higher, specially on warping players.
Fixed bug causing GetWeapon binds to bring up weapons with 0 ammo.
If a mod attempts to give a player an existing weapon, it will replace the existing one with a the new one, instead of keeping both weapons in inventory.
Posts: 1756
Joined: Sun Mar 04, 2012 6:47 pm

Re: LCWeapons (build 0005)

Postby UnrealGGecko » Thu Jan 09, 2014 6:20 am

:gj: Thank you for your hard work!
"NHL Rock The Rink" (PS1) announcer wrote:...And there are no stunt doubles in this game, folks!

My work for UT99: Counter-Strike VP, MaleOne+ & FemaleOne+ voicepacks (NEW!), DM-XC-NaliTreeV2 (from the Xmas Contest mappack), my small spec of files at Google Drive

List of console converted maps, models & more!
User avatar
Posts: 2180
Joined: Wed Feb 01, 2012 11:26 am
Location: Kaunas, Lithuania
Personal rank: GEx the Gecko

Re: LCWeapons (build 0005)

Postby SC]-[WARTZ_{HoF} » Thu Jan 09, 2014 11:43 pm

GEx wrote::gj: Thank you for your hard work!

What Gex said^^^^.
Posts: 391
Joined: Tue Feb 21, 2012 7:29 pm

Re: LCWeapons (build 0005)

Postby Wises » Fri Jan 10, 2014 1:53 am

Bit of a NUB Question but what is the ServerActor="<what goes here>" , from the .int file the Mutator="<info goes here>" is evident.

Secondly .. the Siege Server Appears to have player compensation inbuilt.. where as this mod seems to NOT have this same compensator..

just curious..
User avatar
Posts: 1087
Joined: Sun Sep 07, 2008 10:59 am
Personal rank: ILLEGAL!


Return to Mutators

Who is online

Users browsing this forum: No registered users and 1 guest