Jump to content
newborn

0.30.x - New! Improved! Netcode!

Recommended Posts

Overview (for clients):
 
The new Reflex netcode uses a combination of extrapolation and backwards reconciliation in attempt to keep what you're seeing consistent across clients and servers. 
This lag compensation has an upper limit of 80ms -- if you have more than an 80ms ping, you'll need to lead by ping - 80ms. I.e, if your ping is 100ms, you'll need to lead by 20ms.
Our backwards reconciliation has the same limit -- if your enemy has a ping of over 80ms, they won't be able to shoot you from 500ms in the past.
 
We use these upper limits to avoid the drawbacks of each. For example, with extreme extrapolation values, you get error prone, warpy players. With extreme backwards reconciliation, you get laggy enemies shooting you long after you were safely behind a wall. In Reflex, these drawbacks are minimized.
 

We have several ideas which we'd like to investigate in the future which would further improve the netcode (notably client-side knockback prediction, client-side prediction of projectiles and compression). These features will require significant research and testing so for now, we're going to focus on other areas of the game.
 

We've had very good reports from our private testers with this netcode and we are open to any feedback you have. We are gamers too and we'd like the best possible solution for everyone!
 
Overview (for server admins):

  • The new netcode uses more CPU than previous versions so keep an eye on your CPU load (especially when running multiple servers on a single box).
  • We've increased sv_fps to 70 so bandwidth requirements have (almost) doubled. 

Known Issues:

  • Client crash at end of connecting to server. 
  • Animations aren't working correctly with extraploation
  • Players can push dead players around
  • Pickups can block jumppads/teleports/otherpickups
  • Players take 1 tick of damage on respawn after dying in lava
  • Players in lagstate freeze in mid air

Changelog for 0.30.2:
 
Server

  • Removed com_idlesleep command
  • Improved connection stability client<->server (should fix issue with clients getting dumped from local server)
  • Implemented lag state. If client stops responding, they go into a lag state, when the return, they do a small download to catch back up to game. This also fixes disconnection issues when map is undergoing many simultaneous edits.
  • Increased default (and recommended) sv_fps to 70

Game Balance

  • Reduced Ion Cannon damage (from 9 to 7)
  • Reduced Ion Cannon knockback (from 1.1 to 0.5)
  • Added per-weapon death messages
  • Added combat text for damage
  • Added Aerowalk/CPM22 greybox (thanks to Hubster and Preacher for letting us include this)
  • Added DP4 community map
  • Added XADM1 community map
  • Added end-game camera to xadm1
  • Added biased random spawns
  • Added player joined / left arena messages to HUD

Art

  • Fixed pain effect particles based on damage
  • Toned back IC impact effects

Sound

  • Updated hit sounds
  • Updated player landing sounds
  • Fixed problems with hit sounds not always being audible
  • Adjusted damage ranges for hit sounds

Bug Fixes

  • Smoothing on local client (aka error decay), this signficantly reduces local player jitter when knocked around
  • Lava damage now done when first entering lava, not after delay
  • Fixed client side prediction of pickups, previously if you stood on pickup when it spawned, it would keep spawning on your local client even though not really there on server.
  • Fixed potential server lockup with grenade trajectory
  • Fixed very rare gamestate delta bug where variables wern't synced to client, will increase server CPU load though :(
  • Fixed crash bug which occurred when spectating a client that disconnected (if they were the only other client)
  • Fixed bug with server projectiles going through players (this also appeared as grenades boucning off other players on the client).
  • Removed double jump flag on spawn

Improvements

  • +commands work on mousewheel now
  • Clamped outgoing packets to 125 (previously it was unclamped, so at 1000fps you'd send 1000 packets/second)

Damage reporting

  • Created internal damage entity to help report damage type / amount etc in a more consistent way
  • Ion cannon hit beeps now correctly reported at higher pings
  • Damage numbers now displayed on screen.
  • Damage numbers for SG / burstgun are grouped together and displayed in one number, currently toggleable via cl_text_group
  • Added custom death messages by damage type
  • The hostile pain sound is now only applied once when all 16 shotgun pellets hit one target

Debug/logging

  • Built lagmeter to help debug spikes cl_show_lagmeter 1
    • Scene delay is how far behind the server your client view is.
    • Extrapolation is how far ahead of time your client pushed the view
  • Built traffic meter to help debug trafic use cl_show_traffic 1
    • Shows outgoing traffic in red, incoming traffic in green
    • Shows dropped/missing packets in both directions (missing sent packets is only known once server informs you)

Changelog for 0.30.3:
 
Replays

  • Fixed issue where download UI was stuck on screen after starting replay
  • Replay editor no-longer crashes
  • Hacked fix for replay editor to display weapon correctly
  • Note: The replay editor still need some major maintenance after the netcode changes. Use it at your own risk.

Gameplay

  • Added force respawn -- after 5 seconds dead, players are automatically respawned.
  • Fixed missing health pickup on CPM22
  • Burst gun damaged reduced (from 18 per shot to 10)
  • Reduced bias of near spawns from 5 to 2.5

Bug fixes

  • Players joining TDM games now are properly connected as spectator
  • Fixed bug where connecting spectators could telefrag people
  • Fixed bug where connecting spectators would make a spawn sound.
  • Added minimum time between jumps (to avoid mousewheel spam issues)
  • Fixed several bugs under extreme conditions at connection handshaking time
  • Fixed rare crash bug which occurred during gamestate download
  • Gamestate download speed is now greatly improved over high ping connections

Maintenance

  • New installations of reflex will now be installed to Steam/common/reflexfps to prevent stomping of RefleX.

Improvements

  • Restored com_idlesleep (client only, despite name), stops CPU spinning in client, defaults to 1
  • Changed internal timing method. This improved dedicated server responses. Please let us know if this effects jittering people were seeing in any way! (I don't think it's related)
  • Adjusted servers to report players in format "name (steamid:ip)" to console
  • Dedicated server title bar now contains useful information.
  • Dedicated server CPU load should be lower

Changelog for 0.30.4:

 
Bug fixes
  • client: reworked how grenade trajectory was recorded client side as it was the cause of many overnight crash reports.
  • server: titlebar should now only update once per second

Share this post


Link to post
Share on other sites

Stake Launcher appears to be doing double damage if you hit the feet. Kittles and I were testing it out and noticed we were dropping down to about 40 health instead of about 70 in warmup. Not sure if this is already known/happened in a prev. build but a cursory search didn't turn anything up. Reproduced 4/4 attempts. Doesn't appear to occur with any other weapon (tried the boltgun and didn't notice anything odd when using RL and GL extensively)

 

Other than that, hits feel great, and the stake gun feels much better than when I last used it

Share this post


Link to post
Share on other sites

I'm liking this update except for whats up with the player sound changes? They now sound almost like some lizzard when taking damage and i feel that the landing sound is now like if you was made of stone instead of steel. I feel like the previous drop height sound also described more accurately when you really droppped from high.

 

I liked the older player and landing sounds alot more but other than that, this update feels good. Good job.

 

edit: hope ammo pickups come soon.

Share this post


Link to post
Share on other sites

I really love the new sounds. At first I didn't like them too, but after playing for 2 hours they are awesome. Especially the frag sound is great.

Thanks for putting in the new spawn selection system. Still needs some tweeking though because sometimes you still spawn right in front of your enemy (noticed in duel on at least dp4 and cpm22).

The netcode feels good, great update.

Share this post


Link to post
Share on other sites
Guest d

hi!

 

this update seems to include many cool things. however, i just tried it out and it doesnt feel very smooth at all. does any one else notice a kind of jittery/not very smooth feeling? i have good excellent ping and fps so it must be something else.

Share this post


Link to post
Share on other sites

hi!

 

this update seems to include many cool things. however, i just tried it out and it doesnt feel very smooth at all. does any one else notice a kind of jittery/not very smooth feeling? i have good excellent ping and fps so it must be something else.

 

overall it feels very smooth to me, but when I sneak peek or fast peek it feels weird, dont know why 

Share this post


Link to post
Share on other sites

Thanks for putting in the new spawn selection system. Still needs some tweeking though because sometimes you still spawn right in front of your enemy (noticed in duel on at least dp4 and cpm22).

It's not impossible, it's just not very likely. The logic behind the current design is: Spawning right near where you died isn't always a bad thing. Sometimes it gives you a chance to finish of a weakened enemy or deny the item you were fighting for. This system still allows that to occasionally happen. The undesirable case in a pure random system is repeatedly getting close spawns. This system makes that unlikely. I can't give an exact figure but the chances of respawning at each of the closest spawns is around 4%. The undesirable case in a "spawn furthest" system is how predictable it makes the respawn. This system is designed to be somewhere in the middle, avoiding the worst parts of full-random/furthest -- it still gives variation in respawn positions without "bad luck" letting someone get a 5 frag advantage.

 

Aerowalk is of course the toughest case. It's a small map with limited respawn points and there are a lot of positions where you have LoS on a lot of spawns but lets go through it on paper anyway:

 

If someone has a good hold of the bottom of the RA stairs and kills you at the nearby GA/RL, where is the "best" place to respawn?

  • Obviously at the nearby GA isn't great but it could work out for you -- you're slightly behind your target with a quick escape through the tele, a top tier weapon, potentially an instant armor and a potentially a rush at Mega/YA. The biasing on this spawn would be 5, meaning it's possible but not heaps likely.
  • Spawning at the bottom near the SG isn't great either. Positional disadvantage, mid tier weapon that's really predictable to go for, medium range of the person spawn killing. If they can't aim you could possibly steal a mega or yellow, otherwise you're likely best just taking the tele to the GA to break the line of sight. The biasing on this spawn would be 5 if it was the second closest to where you died, otherwise it would be 50.
  • Spawning on the RA isn't bad, especially if the RA is up. If not, you've still got a quick IC grab and a solid positional advantage. Again, biasing would be 5 if it was the second closest to where you died, otherwise it would be 50.
  • Spawning near the jump pad isn't great -- you're not really close to any significant items and going for IC/RL isn't heaps safe. Once you've taken the pad, you've got a slight positional advantage heading towards RA or RL but generally, this is a bad place to spawn if someone is ready to spawn kill. This would be a middle distance spawn so the biasing would be 50.
  • Now we're getting to the further spawns. Spawning on the GL/GA isn't too bad -- good cover, possible instant GA, safe-ish steal of YA, quick-ish path to BR/RL etc. One of the safer spawns. The biasing of this spawn would be 75.
  • Spawning at upper RL isn't bad either. Safe, instant high tier weapon, lots of options about where to go, positional advantage etc. The biasing on this spawn would also be 75.

Edit: I also just had a simple idea that might provide some defence against your respawn point being prefired at and give you a chance to turn an unlucky respawn into a lucky one.

Share this post


Link to post
Share on other sites

 

 

Spawning right near where you died isn't always a bad thing. Sometimes it gives you a chance to finish of a weakened enemy or deny the item you were fighting for.

 

I honestly can't understand that logic. You fight ...you lose...why should there be a lucky chance to reward you at all? You lost the fight. Point.

 

Regards

Share this post


Link to post
Share on other sites

Is it a known bug that sometimes the direction you're looking is off when you spawn? Seems to happen when you move your mouse around moments before spawning, like if you look down you spawn while looking at your feet. Needless to say that is extremely annoying.

 

I honestly can't understand that logic. You fight ...you lose...why should there be a lucky chance to reward you at all? You lost the fight. Point.

Go pick a fucking health bubble next time you win the fight.  ;)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×