Another Small Update

This weekend was particularly productive, mainly because I provided a test version to some players who seemed happy with the progress.

As you may imagine, from tweaking the code I ended up with a version very far away from PK++. This step change is not ideal for testing properly, so it is important to trickle the changes into PK++ over a length of time.

My main objective was to put a lot of the netcode fixes into PK++. This is mainly concerned with interpolation, and determining where issues are in PK netcode and gameplay.

Before I add more, understand that interpolation is important because it allows players to run at much lower data rates from the server. This is important:

1. If you want the game to be stable with lots of players on the server.
2. If you want to add lots of monsters.
3. If you have demos of low quality and want to watch it smoothly.

Firstly before anything else in added a netgraph. This plots (much like Q3), ping over time (indicating packet loss too), as well as interpolation deltas (basically indicating how much interpolation is taking place). Testing indicated that PK suffers from a degree of flux in ping, with occasional lags due to certain events. On the whole though it didnt look that bad. Command is \drawlatencygraph 1. Obviously there is a lot of processing for this, so fps is damaged.


Next for interpolation, I wrote three methods. The first is linear interpolation for each player. I decided that it is possible that lagging players on bad connection might not update the server at the same rate, so would still move badly if interpolation was done on a per-game-frame basis. Instead what I decided to do was look for updates on players themselves, and have each player in their own interpolation space-time. The second and third methods are quadratic, and the average of linear and quadratic, respectively. At very low update rates I would suspect the quadratic to be slightly better (mainly on vertical movement). Command is \interpolation 1/2/3. Testing showed that it was playable at \serverframerate 15 (equivalent to snaps), although 30 was playable. Remember \netstats 1 to view what is going on.

Here I also added timenudge (which qw and q3 players will know). This moves the interpolation forward or backwards in time. A positive timenudge can allow more for variations in ping, whereas a negative timenudge may draw the players closer to their actual position.

Next I added an option to interpolate from the previous position or from the last interpolation position. What I found was that the last interpolated position method gave worse results.

Next I added a method to automatically adjust timenudge for latency variation. Although this was damped quite heavily, it looks to be unstable on first testing at certain times. I would be a nice method if it works.

Next I tweaked teleport behaviour on the client. Up until now on higher pings, teleporting would either result in a judder or double teleport. Teleporting is now entirely predicted on the client, so server updates are ignored (mistakes are captured in synchronisation frames anyway). Likewise the jumppad was updated. Both methods help reduce the feeling of lag on the client which is important for movement. Weapon prediction needs to be completed, and possibly zero ping at some stage soon.

Console commands were altered slightly so that settings could be edited. This will mean less actual code, and less inconsistency between what is seen in the console between commands.

Finally I will update you on my next task – looking at rendering framerate. I was aware testing that my fps dropped heavily in FFA once it got above 10 players. Without players on the server I get 190fps on sacred, but it can drop as low as 40 in FFA. As a quick test it seems that 90fps of the drop might be from drawing items which arent required for rendering (which can be fixed by hiding things you cannot see), and 60fps from the game ticks themselves (although admittedly I was testing with bots). I have already done some work on improving ticks, so will migrate that across and test. I would suggest that even saving 10 or 20 fps might have a real impact on game playability.

For a test version I will provide this soon, but please do not expect too much yet since it is work in progress and most of the work is elsewhere and yet to be transferred. You can download a test version always here:

LScripts.pak

which you pop into \Data\ (remember to back up the old one. Then run normal (not PK++), or alternatively rename this file to PKPlus.pak and use PK++. Please set \interpolationnosmooth 1 though or you will have issues. If you do not understand it, or have issues, I am not yet helping you fix them until I reach a beta test phase. You are welcome to paste feedback though, positive or negative (if it is negative – remember it is work in progress!). Also fixes/bugs/suggestions are more than welcome, either here or direct email to kerberos99@hotmail.com

I am grateful for any help from now on, be it images/sounds/code/testing/ideas. I am more than willing to accept help in any way since my free time is limited.

Have fun and happy fragging!

0 thoughts on “Another Small Update

  1. [B][I]…a voice from the darkness…..[/B][/I]

    I keep testing it since I’m lazy to switch back to the old version… 😀

    I love the fast loading times, now I’m in the arena on ROD while the game is counting down at 7 seconds, and reconnecting is very quick also…

    Fixing the lag-issues with teleports and jumppads is also a very nice thing! 😉

    Interpolation is better, that’s a fact: players are smooth even with 15-10-5 serverframerates! The game is the best still at 30 serverframerate, but it’s usually playable even at 15 with no problem..what uses up far lesser bandwidth. The only problem here that sometimes something is wrong and then players start doing some weird movements for a while, like they are “shaking” (kinda timenudge-effect)..this is happening for about a second and then they are smooth again…

    The FPS-drops (FPS is unstable and jumping like a mad between 70-125) momently kills me, so I’m waiting for the next update, what hopefully will fix this problem. I’m getting these FPS-drops only with the latest version and this kills the movement, but I found that movement was easier in the earlier versions. I didn’t loose speed that many times or not at all. Blowfish told that this feeling may be due to the lesser lags now… So when FPS is stabilized again, it will be a very good feeling, I think…

    There are a few not yet fixed glitches yet, like players always hold the RocketLauncher, and I can’t see the Electro’s beam when someone is using that on me (but I can see mine)..also there are a few when an opponent is killed and when he is respawning…

    Finally, there are a few humoruos/cool adjustments also, like that military skin for players (though I want back my pure yellow brightskins! :D) and the “Houston, we have a problem” comment… 😀

    [B][I]SYS “No sin is too great to be forgiven.”[/B][/I]

  2. SYS – thanks for the feedback.

    FPS should be much calmer soon. Right now there’s far too much calculation going on. I would like to settle with \interpolation 1 if that is okay.

    The rocket launcher weapon was a test which can be set back – it was to check some animation issues were not causing lags.

    The electro beam is a known work around since I did not want to add other fixes elsewhere yet.

    The flash of enemy as he respawns where he died is also an easy fix.

    The skins I will add as a option (both the colours and the insignias). The Houston message is to let me know when a player is created without a model (or when he leaves the game). I will turn that off.

  3. MasP, I emailed them immediately.

    The reply I got back was:

    ‘Hi Steve,

    Thanks for your support, we definitelly want to stay in touch, but currentely we cant reveal more about this project. We will definitelly get back to you.

    Thanks!

    Karel’

  4. Heh, thx Petja. I will check it toomorow

    Blowfish, did you see MP skins in Hell Wars? Do you think it could be done?We could no longer play with those awfull brithskins

  5. Dont push!

    And what is nice about the Hellwars skins? The red/blue lightning/shining wich cant be disabled in X-Box?

    The brightskins should be 0/1 voteable while replaying the demos? Thats more a demorecord/replay fix but a GOOD idea!

  6. MasP, I think I did, but can you show me a picture?

    The skins in the test will be optional alongside any others we add.

  7. Just a note about progress:

    I did a lot of testing to see what was causing the FPS drops. For a while, many had suggested (and I had thought) that it was possibly the bot processing which, say, gave bad fps on localhost when you had 4+ bots. Meanwhile online I had thought that the fps drops might be associated with processing lots of netcode data. This does not seem to be the case, since testing with low serverframerates still gives these high fps drops. I came to the conclusion that the main reason for fps drops is neither netcode online, nor bot thinking.

    I should say before I start that my test machine here is a P3 1GHz, with a Geforce 4 MX graphics card. I would guess this is relatively low-spec.

    To test this I set up a server, along with a version of PK++ which I can write and update realtime. On sacred with no items drawn I get 115fps lowest, and ~90fps with all items on (tested at one location). It is not surprising that items such as health impact on fps.

    Secondly I tested with bots. With all items removed and no bots, I get 170fps. Adding one bot, with no animation, no bot thinking 67fps. Bot thinking makes it drop 3fps or so, animation has about the same effect. Removing the bots weapon being drawn has a small effect also. To test another way, I added a bot, animation on, thinking on, but without the player model being draw (i.e. invisible). This way in the same location I got ~150fps. Testing with 10 bots without bot thinking, all drawn, I get 15fps which is unplayable.

    What it seems to be (and some of you have already seen this), is that players and items are drawn regardless of whether you can see them or not. To test whether it was possible/whether there was any impact of turning rendering on/off during gameplay, I wrote a function, and there seems to be little effect.

    The plan therefore is to write a function which turns off entity drawing if you cannot see the item. This shouldn’t take too long to do. I am sure most of you can appreciate, that even with 10 players on a server, you might only see 2-3 at once on the screen.

    Since with interpolation now, players are being rendered as images of what is on the server, there seems little need to class them as physics objects and include them in the Havok calculations on the server. I will look at whether there is any benefit in disabling them.

  8. Regarding quick loading times.

    In normal PK, all items are cached before the map starts (i.e. pre-loaded into memory). With quick loading time, this pre-caching is skipped. Other games such as Q3 only pre-cache items which will be needed on the map to reduce loading time. Since I wanted to test whether disabling pre-caching in general has any bad effect, I disabled everything (it is a configurable option though (look under \defer…). The next step will be to slimline the pre-caching for what is likely to be needed (models etc).

  9. Oh just a quick note on rendering… it looks as though simple items would help a lot too. If anyone wants to design some (I am thinking a simple monotone icon in a circle), that would be awesome. Don’t forget it needs alpha channel set.

  10. I would think:

    shotgun – orange
    freezer – cyan
    stake – green
    rockets – red
    electro – white
    shruikens – magenta
    rifle – cyan

    etc.

    health – yellow
    soul – red
    mega – blue

    bronze armour – yellow
    silver armour – orange
    gold armour – red

    ?

  11. I have now updated the LScripts with some minor tweaks. In this there is a crude way of hiding the drawing of player and armour models. The bigger impact on fps, which I believe to be meshes (items, projectiles) and particlefx’s (health etc) will be dealt with next. See what you think.

  12. The biggest problem now is strange movement. I can’t feel that I’m controling it. Aiming is smoother now tho (when there is 8 ppl on setrver)

  13. No, I have not tried changing any parameters. Let me know what is the normal setting and what values you want me to try.

    I did forget to ask if there was any specific testing you wanted me to perform. Probably won’t be able to do any until about 20 hours from now.

  14. Thanks Uuber, the FPS adjustments are not even half completed yet, so I think that will be an improvement.

    Your 20% sounds like synchronisation errors rather than teleporting errors, which could be the result of packet loss yes.

    For chaingun accuracy – I would argue that if you are lagging, it is much easier to predict ahead if the movement of your target is smooth. Perhaps this is what you are seeing.

    The skins were really me just playing around, they change randomly on each respawn – I will set them back to how they were before.

    I can’t tell from your reply though – did you try lowering \serverframerate yet?

  15. No, I have not tried to change any parameters. I can not in PK++ since I can not use console. Unless you can tell me if they can be done via config.ini or other file.

    Let me know what values you want tested for serverframerate and what the default value is so I know how I am moving it.

    I did forget to ask if there was anything specific you wanted me to test. Please let me know.

    I probably won’t be able to test again until about 20 hours from now.

  16. Oh, to make new desktop icons to run new code for PK++ I assume I can just change -lscripts pkplusnewcode.pak to the end of command line. Is that the same thing for PK Original since it just has “C:\Program Files\DreamCatcher\Painkiller Black Edition\Bin\Painkiller.exe”? I can just add the -lscripts to the end of that calling your new file?

    Save me from having to rename files in /data during testing as I like to go back and forth between the 4 versions during testing to compare.

  17. Thanks Uuber – I will be focusing on the fps now for a while anyway, since a faster PK will make it easier to work out what is wrong 🙂

  18. Just a note to say that once I am happy that I have improved FPS sufficiently I will move onto looking at fixing demos (or at very least improving them).

  19. I assume it is on here are my config settings for that:

    Cfg.Interpolation = true
    Cfg.InterpolationNoSmooth = true
    Cfg.InterpolationTolerance = 100

    Cfg.NetcodeEnemyPredictionInterpolation = true
    Cfg.NetcodeEnemyPredictionInterpolationFactor = 0.5

    Cfg.NetcodeMinUpstreamFrameSize = 0
    Cfg.NetcodeServerFrameRate = 45
    Cfg.NetcodeServerFramerate = 45
    Cfg.NetcodeStatsNumberToAverageFrom = 1

    Not sure why the serverframerate is in there twice, but it is. The out of the box settings seems to be 30 and it is in there onyl once in my backup config.ini.

    Also notice: With new code I freeze for a second (fps drops big time – probably to 1 or so) when new game starts and I: 1. pick up a new weapon. 2. switch to new weapon. 3. new player joins. 4. pick up some ammo.

    It seems after it does it the first time it doesn’t do it again the rest of the game.

  20. Let me fix your console, that would make the most sense 🙂 …

    Cfg.Interpolation should be 1 or 2 or 3.

    The freezes are due to the lack of cache – I will modify that also for options. I would think weapons, player models are suitable for caching.

    P.S. There is a new version up

  21. As a shortterm measure you can add

    Cfg.Bind_F1 = “toggleconsole”

    to your config, which will at least allow you to pull down the console in game. You type \toggleconsole to make it go away again.

    I will get a nicer fix soon

  22. New version up, console now bound also to F1.

    Please remove Cfg.Bind_F1 = “toggleconsole” from your config if you added it because it will conflict.

    Download at the usual location. F1 seemed most sensible, but I can make it configurable if people want.

  23. Also see if the following settings affect loading / stuttering on first use better:

    \DeferLoadingPlayers = false
    \DeferLoadingRest = true

    Happy testing

  24. Also note there are some changes to fonts (you need the PK++ Fonts.pak for this if you don’t have it already, or you will get low fps!)

    Also the player settings page has been slightly altered.

    Give me a list of other things you want 🙂

  25. Uuber, you are also in a good position to tell me what else feels laggy (like the teleporter etc.) Do all weapons feel laggy, or just some? Is the jumppad better now too?

  26. Also please note a small change that means \crosshairsize is unlimited and immediate (\crosshairsize 10 is quite fun 🙂 )

  27. Also spectator mode is now slightly different, and there are some settings \spec* to allow for adjustment.

    Also Console behaviour now supports setting adjustment directly (which I know may create problems too). Which means I can remove some console commands.

  28. From killua please add:
    – simpleitemweapon 0/1
    – simpleitemamor 0/1
    – simpleitemhealth 0/1
    – simpleitemflag 0/1
    – etc
    … if new simpleitems are aviable oneday …

  29. OK. Tried new code in PK++ mode about 3 full games and parts of a few others.

    Console works with F1 !!!! Thank you !!!! (but I would like to request it is configurable – F1 = gg for me(old habits).

    First thing – In PK++ and original PK with latest version I can not break out of title screens (DC – PCF – Nvidia). ESC does nothing. PK++ used to skip these screens but not with new ver.

    Do not like new fonts. Hard to read in my resolution (640×480).

    Weapons and health never disappear when picked up (new problem). Ammo is ok.

    Loading times for new maps is back to normal. I start about 7 seconds after game starts instead of the 5-7 seconds before game starts as with last version. I guess that’s what you mean you can choose between lag and starting early.

    Lag when picking up new weapons and people joining is gone.
    Teleporters are same as last ver. Some doubles but mostly clean. Need to test more to see if I am being slowed down at all – will test now wait a sec… Same as last version but maybe a little more doubles but real hard to tell – too many variables.

    “Cfg.Interpolation should be 1 or 2 or 3.” – Can you tell me what this is supposed to effect and what I should be looking for. I did not try it yet. Still set to true.

    “\DeferLoadingPlayers = false
    \DeferLoadingRest = true ” – Tried without changing these and then changed them to recommended settings. Did not notice a difference. No lag/freezes either way now.

    Did not look what default was so can’t say if I even changed them from default. In config.ini file they are now:

    Cfg.DeferLoading = “players false”
    Cfg.DeferLoadingPlayers = false
    Cfg.DeferLoadingRest = true

    Jump pads seem fine but also tested with original PK, no new code, and they seemed fine today. Yesterday I noticed some double or laggy jump pad behavior but I’ll have to test that more. Could not recreate it today with any code. Maybe describe what problem was for me so I can look for specific issue.

    On weapon lag – do you mean the pick up problem (fixed) or firing? I almost forgot how they are supposed to fire. I’m so used to shooting ineffectively way way ahead. But remembered enough last night on Shamcks (40-0 with 7 players – go Uuber).

    Suggestions: 1. Make console command configurable (but I’m probably the only person that this effects so spend no time on it). 2. Give me old fonts back. 3. If possible make lag vs. fast start an option (better yet, give me no lag AND fast start). 4. Weapons and health need to disappear when picked up. 5. Allow break out of title screens on start up. 6. Let me know what to look for on jump pads. 7. Let me know what interp… 1/2/3 does.

    Features (just for me): 1. Auto aim/fire – so when I go to the bathroom my player can defend himself. 2. Weapons damage increase as ping goes up. Only fair, right? 3. Start health 200/200 when player name=Uuber.

    Thanks.

  30. [B][I]…a voice from the darkness…..[/B][/I]

    I’ve tested it again, because I wanted to see it with only a bot in the arena. Yesterday it was very bad even with 3-4+ players: I was getting FPS between 56 and 80, and no more. I had no chance, couldn’t move, nothing hit, and so on (hehe, 1 year ago I could play much better under such bad conditions, it seems I’ve deimproved :D). Then I went back with the good old PK++ 1.2.1.64, and they had no chance anymore, though to be honest, that wasn’t much better either (the enemies weren’t that smooth! noticable)… This means there are some good things in the updates already, but there are some bad also what need to be fixed/optimized/dunno..or..or I’ll go mad slowly… :DDD

    So I wanted to see how it works with only 1 opponent. Now my FPS was between 117-125, but still there were many annoying “hangups”, I can’t explain: when things just stop for a few milliseconds and the target and the speed is lost, and so on. Usually there were FPS-drops when these things happened, but I remember 117 as a minimum..however it was noticable…

    I also noticed something interesting. I checked netstats and the sent data caught my attention: 142 packets, 127 frames – is this okay? Earlier these values used to be the same… Also one more thing: when I lower my maxfps, my ping goes up, this is true anyway even with vanilla PK. When I typed /setmaxfps 5, my ping went up to 183… o_O It’s just strange, because most players experience exactly the opposite: as they increase their FPS, their ping starts increasing too. I can increase my FPS or I can type /setmaxfps 0, my ping remains the same around 35, even with 300 FPS. It was the same earlier with ADSL and now with Cable-connection also. Just thought of mentioning it as something interesting…

    I don’t know what to say about hitscan now: so-so… Sometimes it’s quite good, but usually I miss a lot with the Shotty (what is the most important weapon and I should have around 60-70%+ with it but now I have around 30-40% only, what is crap) and I usually can’t hit with stakes at all now. But all in all, it’s true about all weapons: some are the same and some are worse..maybe ChainGun seems to be a bit more effective, but for example Electro is crap here recently. Maybe here’s that thing about aiming ahead the opponent a bit and this is what I can’t get use to..well, I don’t like that thing at all, to be honest. Somehow we should achieve that we hit when we hit the model..not a bit before/after the model..but exactly the model. That would be the optimal, and if this would be possible somehow (but maybe interpolation messes this up completely?)… 🙂

    Also, there are still lags: it doesn’t give me speed or I loose it randomly, the mouse is somehow sluggish, it switches between weapons slowly, there’s a delay before each shot (I want to fire a rocket and it comes out noticable later than it should), and so on. These are things what need to be fixed too somehow, sooner or later… Actually that would be amazing if the damned weapons shot when I press the button and not half of a second later (or not at all)… 😀 This bug is typical: I’ve just respawned, I’m picking up someone’s soulweapon what is a RocketLauncher..I switch to it and I want to do a RocketJump immediately to get Gold Armour, and..what happens? Nothing, it does not do the RJ. This happens me a lot, and such little things are enough to ruin down games completely in PK (I can’t reach one damned item at the last second, let’s say an armor, the opponent frags me and then he is going to make some more spawnfrags on me and I can’t get into a good situation again, etc., and the game is lost or bad, due to a stupid technical issue)… :/

    Most of the above mentioned issues are not urgent to fix, concentrate on what Your plans request (now to optimize the FPS), I just mentioned them as known and very annoying issues in the game…

    I tried the defer-settings too, earlier: I set them all to true and the loading time became faster…

    Oh yeah, the starting FMVs should be disabled and I also would like to get back the earlier charset, as Uuber suggested also… 😀

    [B][I]SYS “No sin is too great to be forgiven.”[/B][/I]

  31. SYs reminded me of one last problem/change I noticed. The souls now are just glowing red things. No weapons display.

    Sometimes with old, nonBlowfish, code at the beginning I see megahealth and armors after they have already been picked up. For some reason they do not disappear at the beginning of matches. Sometimes.

  32. “Next for interpolation, I wrote three methods. The first is linear…” OK, I think I found what it means. I’ll try all 3.

    And as SYS mentioned, to be able to shoot at a model, not behind or ahead, obviously is the goal. That would be nice.

    Does anyone play a lot of Q3 of Q4. Does this happen in other games? I have never noticed this problem in Q4 but I don’t play it a whole lot.

  33. First up this morning I was getting Cd key invalid on all servers. It was reporting a different CD key in error message each time. I reloaded PK over existing files to clear. First time that has happended. Patched it up but didn’t run pk++ installer. That seems to work after original PK install.

    OK, with cfg.interp… set to 1 2 and 3 I find it doesn’t play as well as when it is set to true.

    All 3 cause players to twitch somewhat (3 seems to cause this the least, 1 the most). Maybe there are other settings to help this. But I didn’t find I could track and hit players as well.

    Also FPS seems lower (30-40) with 7-9 players and it is harder to move (like bunnyhopping in mud).

    I also get small flashes (explosions?) at random on the floor when no weapon had been fired. And white streaking lines (about 4-5) slash across screen from time to time. Like the trails of 4-5 rockets being fired at the same time from upper right to lower left of screen. Sometimes they are close and sometimes far away.

    Also after killing player and heading to pick up soul, player model will flash alive for a second and go away. It is disconcerting to see the face of someone you just killed flash before your eyes. I will need therapy now. Thanks.

    Set cfg.int… to true and tried again. It played better.

    Another fix: The PK++ hit sounds do not always work. I have killed people with chaingun and it was not sounding before frag. Not sure if this is a known problem.

    I will have to sit down with pen and paper and make notes as I play again with 1, 2, 3, and true set to be more specific. This is what I observerd so far.

  34. Not sure if this possible but all changes should be switchable.

    Playing today with and without changes w/pk++ there were some improvements and some problems with new code. It would be nice to turn on the stuff that helps and not use the stuff that doesn’t.

    I couldn’t tell you what works now. Lost track. Hope I captured it all in comments above.

  35. [B][I]…a voice from the darkness…..[/B][/I]

    I’ve just tested the latest update, and WOW, it’s quite good! It feels like the good old 1.2.164 now but it’s better than that. At least it seems to be better when I get the 125 FPS (smoother and seemingly better hitscan). When I first joined to ROD with this latest update, it was very smooth and the playing was very enjoyable. Then somehow later the FPS dropped and sticked at around 70-80 again, like it was with the previous PAK..though it still was better playable than with the previous PAK, even with lower FPS. So when I started it was good, but later it went bad again… I noticed that let’s say GA doesn’t disappear now when it’s partly behind that column, but opponents still do. And the actual charset is nicely readable at 640×480…

    About interpolation again… The opponents are now total smooth, I think..this is very good! They don’t do those “weird movements” anymore. When I saw some of them warping sometimes, that was due to their or my packetloss…

    [B][I]SYS “No sin is too great to be forgiven.”[/B][/I]

  36. I don’t know how to tell when new versions come out but tried latest per sys’s note.

    Nice game play. Weapons and health disappear like they are supposed to. Fps good (170 for short time).

    People standing at GA are invisible intermittantly as I head for GA.

    Players are smooth but hard to hit w/chaingun (need more game play). A few lag situations around jump in SA room but might have been net.

  37. Also, loading is real slow and disconnecting slow too. Loading takes 20-30 seconds. Disconnecting probably 15-20. First time I thought it locked up so I ctl alt del and killed PK.

  38. Thanks guys!

    Interpolation should be mostly fixed now (including the flickers, and dead-respawn flashes). Also interpolationtimenudge is now working. Let me explain how that works…

    Basically it moves the position where the player is drawn forwards or backwards in time (in reality it predicts ahead or lags behind). The time you set is the time in milliseconds (like ping).

    A positive timenudge is useful if you have high relative ping variation and want to smooth things out a bit. The positive timenudge will act like a buffer so that it will not render to the new position until the timenudge is reached and the new data has arrived.

    A negative timenudge basically predicts ahead (but there is a limit to this). The greater the negative timenudge, the further ahead the prediction, but the more unlikely the prediction is to be correct. What happens here is it will start getting jerky. I would suggest you experiment to see the largest negative timenudge (perhaps -50 ?).

    Also comments about serverframerate vs lag:

    You’ve said that high server framerate can feel more laggy and unresponsible at times. But also low serverframerate can do too. There is an optimum here.

    High serverframerate leads to lots of data which can lag your connection (which is not necessary). Low serverframerate will have a latency in updating (basically 1000/serverframerate in ms).

    What you need to do is tailor this rate to the number of players on the server, and your connection.

    I did think about doing this calculation for you and having a general \rate command instead, which adjusts to gameplay.

    As for keeping track of versions – I will put the version number in the code. \version

  39. New version up:

    1. Uuber – I fixed what would have caused your cdkey error. Sorry about that.

    2. With \blowfish config, I now get 200-350 fps on sacred (test machine is a AMD XP 2800+, Geforce 4 Ti). I am still looking to optimise this a bit.

  40. Just tried new version (assuming I get it from link in first posting in this thread).

    I get this error when trying to get into any server: net error we have different scripts but same version please reinstall game – or something like that.

    Oh, if possible I still couldn’t break out of opening credit screens (NVidia, etc). Would be nice to bypass those like original PK++.

  41. Thanks Uuber (you’re being a great help)! Should be fixed now. Also I suspect this version should be higher fps again – let me know…

    New version up (1.41.1.64)

  42. Do not hear grunting as I jump.

    Server goes unplayable (choppy, jittery, slow) from time to time (not including that bug where you die in an item). I switched back and forth between original pk++ and this code. It was the same so it isn’t code.

    Still testing.

  43. [B][I]…a voice from the darkness…..[/B][/I]

    It’s getting better and better, this new update is good again, but the problems what Uuber mentioned do exist: the jittery movement of the opponents, still FPS-drops especially with more people, weaponlags, and so on…

    It seems timenudge doesn’t help here, I like to leave it at 0, because the negative values make things rough a bit..I’m enjoying the smoothness… 😀 I’m waiting for the serverframerate-calculator though (very good idea!), but maybe I’ll try some testing with lower framerates too (back to 15 again, we’ll see what happens with hitscan)…

    I believe, maybe some things can be fixed from serverside only. Now it gets unplayable from 5+ players, though it’s just partly the code. I personally think (ya, maybe I’m alone with it or not, I don’t care :P) that most of PK’s maps can handle players only up to 4; playing with more players (especially 8-10) just makes most things senseless, that’s no real game anymore… There was a server (clanserver4u.de), back in January-February, I loved that, because the maxplayers was only 4 there… 🙂 But of course – as every good things – that disappeared very soon…

    I now enjoyed the better hitscan: I think Shotty became quite effective now, and other weapons also. However chain is not that good for some reason, no idea why… Also, chain doesn’t make decals on walls, only that weapon…

    [B][I]SYS “No sin is too great to be forgiven.”[/B][/I]

  44. Thanks for the feedback guys – you’re being really helpful and I appreciate that a lot!

    [q]Do not hear grunting as I jump. [/q]

    This is now fixed, I disabled local player information, which turned this off too

    [q]Server goes unplayable (choppy, jittery, slow) from time to time (not including that bug where you die in an item). I switched back and forth between original pk++ and this code. It was the same so it isn’t code. [/q]

    I am curious as to what is going on here, whether it is rendering, or tick/physics processing, or network. I screenshot of this with your latency graph drawn would be helpful if you can.

    [q]It’s getting better and better, this new update is good again, but the problems what Uuber mentioned do exist: the jittery movement of the opponents, still FPS-drops especially with more people, weaponlags, and so on… [/q]

    The jittery movement *should* be almost gone now – certainly it is very smooth on my pc. The only issue I’ve seen is where AFK players respawn and don’t move, they jitter mid air. The fps lags (by this I assume you mean a surge of fps drop which lasts half a second or so?) I am trying to determine still. The netgraph didn’t show much flutuation, so I don’t think it is that. I did notice that on sacred, to the side opposite to bronze armour, facing the main room, there does seem to be a low fps point or two. My fps can drop from 120 to 50 here, which gives a heavy mouse feel moving through it. I think this is what you mean? If it is continuous, the \list command can remove useless entities, or you can take a look at activity with \scan. Weapon lags – I believe all weapons lag differently, and randomly (since the code is sawtoothing). At some stage we might test zero ping (i.e. what you see is what you can hit on the client). My only reservations on this are that (unless I am cunning) it might require a new netcode version (I don’t want to break everyone else’s PK++), and secondly I don’t know how it might be exploited with connection settings.

    [q]It seems timenudge doesn’t help here, I like to leave it at 0, because the negative values make things rough a bit..I’m enjoying the smoothness… 😀 I’m waiting for the serverframerate-calculator though (very good idea!), but maybe I’ll try some testing with lower framerates too (back to 15 again, we’ll see what happens with hitscan)… [/q]

    Right. Timenudge at the moment will probably only be effective up to the update rate time period (i.e. 1000/30 = 33ms, so -33). Since after that the mid position is discarded. I need to tweak this some more, but I have had reasonable help (as good as it can get) here. I would suggest for serverframerate 30, a maximum negative timenudge might be about -15. After that the players will jerk around at 30Hz. Putting it to a very small positive number will make it smoother, but add lag. It is probably best to leave it and get used to aiming ahead. This is similar to other games. I don’t think you need serverframerate much less than 30 yet. What it tells me though is that we can now run servers at 30, which means lower demand (more servers on a single box?). We need admins to test this out though.

    [q]I believe, maybe some things can be fixed from serverside only. Now it gets unplayable from 5+ players, though it’s just partly the code. I personally think (ya, maybe I’m alone with it or not, I don’t care :P) that most of PK’s maps can handle players only up to 4; playing with more players (especially 8-10) just makes most things senseless, that’s no real game anymore… There was a server (clanserver4u.de), back in January-February, I loved that, because the maxplayers was only 4 there… 🙂 But of course – as every good things – that disappeared very soon… [/q]

    It probably depends on the game type. I started writing clan arena already, and coop shouldn’t be too far off later. I don’t know how many players that might take. I would hope lower depends on a server (and perhaps me taking some time to make the installer easier), would help get more servers up.

    [q]I now enjoyed the better hitscan: I think Shotty became quite effective now, and other weapons also. However chain is not that good for some reason, no idea why… Also, chain doesn’t make decals on walls, only that weapon… [/q]

    I will have to look into this. Also the LG trace.

    At some point I should tidy this and release it to Steamfish for all players. I think there is enough of benefit here.

  45. big thx for your great work and effort dear blowfish <3

    several issues i experienced with latest fix today (serverframerate 30 , interpolation 1)

    -enemymodel ghosting/warping sometimes
    -enemymodel hangs off spawn, sometimes it spins (similar to warps)
    -sound issues (ie teleporter)
    -framedrops -> mouse blurr, shivering/quaking

    but i will play with other console cmd\’s tommorow u told me 😉

  46. Tried latest code (from link above). Looks like the same.

    I did get over 300 fps. Looking at blank wall it went from 313 max to 256 up and down. Just me and 1 bot on ROD. On Shamcks (Illuminati) I got 380-390 looking at blank wall. That is compared to original PK (not ++) where I got 400-416 looking at same wall. Could not test original ++ (can’t use console to up maxfps).

    One big fix that would be nice (and I mentioned it before but killing a bot tonight reminded me again) is to sync the hit sounds to hits. As the bot was backing away I could see blood but hit sounds didn’t match and then he died. The sounds are not reliable.

  47. [q]enemymodel hangs off spawn, sometimes it spins (similar to warps) [/q]

    I will look into this, it is the one remaining artifact of interpolation.

    [q]enemymodel ghosting/warping sometimes, sound issues (ie teleporter), framedrops -> mouse blurr, shivering/quaking[/q]

    I really need you to describe these in more detail to see if it is what others are seeing too.

    [q]I did get over 300 fps. Looking at blank wall it went from 313 max to 256 up and down. Just me and 1 bot on ROD. On Shamcks (Illuminati) I got 380-390 looking at blank wall. That is compared to original PK (not ++) where I got 400-416 looking at same wall. Could not test original ++ (can’t use console to up maxfps).[/q]

    That sounds good for the impact of a bot. I believe original PK++ is much less.

    [q]One big fix that would be nice (and I mentioned it before but killing a bot tonight reminded me again) is to sync the hit sounds to hits. As the bot was backing away I could see blood but hit sounds didn’t match and then he died. The sounds are not reliable. [/q]

    I looked into this earlier. The problem is that the hit sounds are confirming a hit from the server, so will always be delayed. There are two alternatives here:

    1. Let the sounds ‘predict’ when a hit occurs (which might wrong occasionally.

    2. Let the sounds occur on the client and allow ONLY the client (not the server) of the attacker to determine the hit and the amount of damage. I have thought of a way of doing this without breaking netcode. It would obviously require a server modification. It would of course mean that Uuber, you would be unstoppable, with only ping holding you back right now 🙂

  48. “Uuber” and “unstoppable”. Two words that will never be used in the same sentence again. And it’s more than ping that’s holding me back.

    Let me know when the next release with player sounds is out.

    With your code the first thing my player does when it dies is to go spread eagle (arms straight out) then goes rag doll. Old code skips the arms out move. Haven’t noticed this on people I frag, only my model I see top down after one of my frequent deaths.

    On sounds, improvement would be nice but if it is the same for everyone then it’s OK. I know it would improve some people that don’t need any more improvement.

  49. [q]With your code the first thing my player does when it dies is to go spread eagle (arms straight out) then goes rag doll. Old code skips the arms out move. Haven’t noticed this on people I frag, only my model I see top down after one of my frequent deaths. [/q]

    This is known – will adjust

  50. Re: 1. vs 2. for sounds…

    I will enable clientside prediction… ideally I should go through weapons etc and see what needs predicting there. I believe some of the gun animations have prediction already (i.e. they animate immediately even if the projectile comes out lagged). It is possible I might be able to build in better lag compensation for projectiles. Any of this will need testing!

    For full zero ping compensation – I am not keen on this, since it could mean someone plays by turning on Bittorrent making them warp around while they hit everyone perfectly.

  51. Other issue. With 1.41 I joined 2 servers today and both times it kicked me back to the menu but text messages about nat negotiation… displayed and then it joined but locked up PK in menu screen. Once I hit esc and I went to menu to resume game and I was in. Once I had to ctl alt del to kill PK. Then tried with original PK++ and got in no problem. 2nd server disappeared before I could test both.

    The server it locked up on was Mexican Painkiller.

  52. Forgot to mention that I also get the “please run/install pk++…” server message on some servers when running pk++ 1.41.

    This is the msg you get every 1-2 mins when running native pk on a ++ server.

    I think I do not get it on Rod but do on some other servers. Can’t test right now but can later if details needed.

Leave a Reply