05-29-2013, 01:00 AM | #41 | ||
Join Date: Nov 2010
Gametype: Capture the Flag Posts Rated Helpful 0 Times
|
The amount of labor theoretically required to port FF from Source to a Quake engine seems enormous. Suggesting a port right now seems totally unrealistic. However:
Quote:
Quote:
Modders and engine maintainers have written lag compensation after id's releases. For instance, Quakeworld's maintainers added a lag compensation system that they call "anti lag", and Neil Toronto wrote a mod called Unlagged for Quake 3. Even Quake 4 base does not have server-side lag compensation. If you are playing Q4 with 150 ping, you have to lead rails on a moving target by about 150 ms. I put thousands of hours into Quake, but I would trade vanilla Quake netcode on WAN for Source's or GoldSrc's netcode in an instant. I used the phrase "server-side lag compensation" above. Based on what I've read by Yahn Bernier (Valve, GoldSrc and Source?) and Neil Toronto (Unlagged for Quake 3), here's what I think that phrase means. I first read about this around a decade ago and have only lazily followed new developments, so I may be out of date. Recall that the server operates in discrete time. Consider tickrate in Source or sv_fps in recent Quake engines: these variables specify how many times per second the server will update the gamestate. As the server advances the gamestate in discrete time, it stores the last roughly 500 ms of gamestate snapshots. This is like the server remembering the exact state of play for the last half second. Whenever a client sends a shoot command, the server checks the client command timestamp, loads the gamestate reflecting that moment in time, and traces the shot against the state of the world as the client observed it. This is sometimes called backwards reconciliation. Ideally, the server should then fast-forward to the current time to check whether the shot is still legal. This last step prevents the sensation of being "shot around a corner" by a high pinger, or even worse, being shot by a high ping enemy that you have already killed. This is still a real problem in modern games: see PlanetSide 2. Note that this technique only covers hitscan weapons. There have been attempts to extend the technique to projectiles, but these approaches tend to result in projectiles effectively springing into existence at varying distances out of the barrel, often unacceptably altering game balance. Furthermore, every modern FPS game client does some form of interpolation and/or extrapolation between gamestate snapshots received from the server; fancy lag compensation implementations could potentially simulate the client's interp/extrapolation behavior. |
||
|
05-29-2013, 02:01 AM | #42 |
Beta Tester
Join Date: Jul 2008
Posts Rated Helpful 144 Times
|
My opinions were based mostly what would work best for a fortress game in general; I realize it's completely unrealistic to port FF to quake at this point. Ideally you'd start fresh at that point anyway.
Your interpretation of lag compensation is pretty much correct. The interpolation latencies are included in the calculation. Quake never came stock with lag compensation (other than ql), but most servers since q3 ran unlagged. It worked pretty well. Also, if you have a really consistent connection, fixed time nudging actually works great (it's still present in quake 1/2). Where server side lag comp tends to break down is when player latencies and update rates are inconsistent (ping jumping). Like you said the server tries to "rewind" the game state by whatever the player's latency is from the mouse click to the server message (ping + interp + whatever other internal latencies). The latency is where the guess work is. If everyone's ping was perfectly stable all the time this system would be perfect. Even with a good connection this isn't true; the server has no way to guess when player latency will change, instead it just makes the assumption that it never does. If the server can't get an accurate idea of where the player is aiming and where the target is located, the system breaks down. The negative impact of guess work is proportional to the target speed, hitbox size, and bullet size; which is why fast pace games have a harder time. This is why I support a system using client side in some way; the client doesn't need to guess. It knows where the player is aiming because the player is sitting right there, not 800 miles away. In terms of what source does, no one really knows except the source devs as no one has access to the code. Almost everyone agrees something is broken though. This was one of the motivations for making the head hitbox massive in CSS; headshots were mostly random. Now they're consistent but tack on a million accidental headshots that shouldn't be headshots; this is why spray works so well. Last edited by the_cake; 05-29-2013 at 02:10 AM. |
|
05-29-2013, 02:17 AM | #43 |
internet user
Fortress Forever Staff
Join Date: Jun 2007
Posts Rated Helpful 42 Times
|
what do you mean no one knows what it does? it interps the best it can
__________________
9:17 PM - DEXTER: can you teach me how to play o 9:17 PM - squeek.: you jump a lot 9:18 PM - squeek.: and do sweet moves 8:55 PM - FDA: fart in you fridge and blame it on wild animals |
|
05-29-2013, 02:32 AM | #44 | ||
Join Date: Nov 2010
Gametype: Capture the Flag Posts Rated Helpful 0 Times
|
Quote:
Quote:
|
||
|
05-29-2013, 02:43 AM | #45 |
Beta Tester
Join Date: Jul 2008
Posts Rated Helpful 144 Times
|
All I did was pub q3, and most had unlagged. As far as OSP/CPMA goes, those had full on lag compensation right?
Timestamps don't help anyone much as the server still has to determine where in time your game state is relative to the servers. This changes every time your ping changes, even if only by a couple ms and even if interp is hiding most of it. If everyone's ping was perfectly consistent this wouldn't be an issue. Aside from seeing into the future there really isn't any way to know when someone's ping will change. Last edited by the_cake; 05-29-2013 at 02:45 AM. |
|
05-29-2013, 03:39 AM | #46 |
Join Date: Mar 2009
Gametype: Capture the Flag Posts Rated Helpful 7 Times
|
cakefixyourffthanks
|
|
05-29-2013, 03:44 AM | #47 |
Beta Tester
Join Date: Nov 2011
Gametype: Capture the Flag Posts Rated Helpful 293 Times
|
ya
__________________
Currently equipped: Rad Scarf of liberating happiness. |
|
05-29-2013, 04:54 AM | #48 | ||
Join Date: Nov 2010
Gametype: Capture the Flag Posts Rated Helpful 0 Times
|
Quote:
Quote:
With GoldSrc, I think timestamps were missing from the protocol. So I think GoldSrc used latency estimation instead. |
||
|
05-29-2013, 07:02 AM | #49 |
Beta Tester
Join Date: Jul 2008
Posts Rated Helpful 144 Times
|
So lets say this happens:
1. Server updates me, everything is in sync 2. my ping jumps by 50 3. Server updates me again, but it arrives 50 ms late. I'm now 50 ms out of sync with the server time. Since there are no latency based calculations in this scheme, neither the server or client have any idea I've gone out of sync until the next client message. 4. I shoot something, sending a time stamped message, but message is 50ms late because of lag spike 5. Client updates server, back in sync, hit gets calculated. But now server has to interpolate between my gametime at 1 and my gametime at 4; in other words guess. We're just using gametime instead of ms; and now the server has to wait for a client update to have any idea what's going on. This gets more complicated during short spikes where latency changes more than once between client and server updates. A 66 tick server updates once every 15ms. It's very realistic to have a 50 ms spike in there that disappears between client updates. So the server will basically have no idea. I know some engines can log updates between ticks which helps, no idea which game engines can; though I'm pretty sure goldsrc does as high fps servers seem to make a difference. |
|
05-29-2013, 09:53 AM | #50 | |
Join Date: Nov 2010
Gametype: Capture the Flag Posts Rated Helpful 0 Times
|
Quote:
You also seem to be writing about having a 50 ms "spike in there", where "in there" is a 15 ms interval. I think? It's not exactly clear how you want this to be interpreted. I think you're talking about a client receiving snapshots out of order. It's either that or the "spike" would be unobservable. Keep in mind that the Q3 server delta-compresses client snapshots versus the last snapshot acknowledged by each client. Out-of-order receipt of gamestate snapshots is handled on the client in much the same way as a dropped gamestate snapshot. Unlagged's timestamping approach really does work. You may want a look at a mirror of Neil Toronto's documentation at www.ra.is/unlagged/ (the "Code Walkthroughs" and FAQ are particularly good). There is also a nice commentary on the Q3 network code at http://fabiensanglard.net/quake3/network.php, but it is not exhaustive and doesn't cover Unlagged. The best way to investigate this is through the Unlagged code at http://games.mirrors.tds.net/pub/pla...%5d.01-src.zip and a copy of ioquake3's source; if you are determined to see how this works, you can do so with those two source trees. |
|
|
05-29-2013, 09:44 PM | #51 |
I like to spam binds
Beta Tester
Join Date: May 2009
Class/Position: Scoooooot Gametype: Capture the Flag Posts Rated Helpful 73 Times
|
slow clap for talcum. Dayummm son!
|
|
05-30-2013, 12:32 AM | #52 |
internet user
Fortress Forever Staff
Join Date: Jun 2007
Posts Rated Helpful 42 Times
|
lame pissing contest about unrelated games netcode here
__________________
9:17 PM - DEXTER: can you teach me how to play o 9:17 PM - squeek.: you jump a lot 9:18 PM - squeek.: and do sweet moves 8:55 PM - FDA: fart in you fridge and blame it on wild animals |
|
05-30-2013, 12:48 AM | #53 |
Beta Tester
Join Date: Jul 2008
Posts Rated Helpful 144 Times
|
Didn't mean for it to seem like a pissing contest and I don't think talcum did either, we were just discussing netcode in general as these principals apply to almost all engines. Unlagged is one of the better lag comp systems but my only point was it has it's flaws and could be better. Though this is obviously starting to head south so I'll let it be and you guys can have your thread back.
Last edited by the_cake; 05-30-2013 at 01:12 AM. |
|
05-30-2013, 12:56 AM | #54 |
Nade Whore
Server Owner
Beta Tester Join Date: Sep 2007
Location: Oklahoma
Class/Position: Scout/Soldier Gametype: CTF/TDM Affiliations: blunt. Moto Posts Rated Helpful 128 Times
|
It would be kinda cool to see a Quake style Fortress Forever as long as it's not super fucking fast gameplay like some of today's quake games. I certainly wouldn't mind seeing the Medic with a fucking battle axe, that's for sure.
|
|
05-30-2013, 01:13 AM | #55 |
Stuff Do-er
Lua Team
Wiki Team Fortress Forever Staff |
There are plenty of Quake Fortress mods.
Quake 3 Fortress (apparently died after beta2) Enemy Territory Fortress (port/improvement of q3f on a different engine but still extremely Quake-ish; I know there's an active community for this as NeoNL plays it) Quake 4 Fortress (never got totally finished?)
__________________
#FF.Pickup ยค Fortress-Forever pickups My Non-official Maps Released FF_DM_Squeek - FF_2Mesa3_Classic - FF_Siege_Classic Beta FF_Myth - FF_Redlight_Greenlight Sick of the people on the internet, always moanin'. They just moan. - Karl Pilkington Last edited by squeek.; 05-30-2013 at 01:14 AM. |
|
05-30-2013, 01:33 AM | #56 |
Nade Whore
Server Owner
Beta Tester Join Date: Sep 2007
Location: Oklahoma
Class/Position: Scout/Soldier Gametype: CTF/TDM Affiliations: blunt. Moto Posts Rated Helpful 128 Times
|
Sorry, I mean a new game with amazing gfx and gameplay.
|
|
05-30-2013, 01:42 AM | #57 | |
Beta Tester
Join Date: Nov 2011
Gametype: Capture the Flag Posts Rated Helpful 293 Times
|
Quote:
Tbh ETF is slow as piss nuggets. The acceleration at least. You can get up to a good pace, but quick acceleration via bhoping alone isn't viable. You need to rocket jump or nade boost. Or drop conc, because there's no HH. I hate to say it but I don't really like "quake" styled fortress. It usually implies no HH concing, and that old QWTF style reload, where you have to reload every shot fired from a clip before being able to shoot OR switch weapons. (aka 1 rocket in rpg, can't just reload 2 and shoot 1, reload 2 and switch to shotty) I've played around on listen servers with Q4F and it's certainly interesting. But it has the above mechanics, and there's no ramp sliding which is odd. But on the other hand you don't loose speed trimping, so you can bhop any ramp without loosing speed. It has the potential to play out fairly close to FF, but that reload style and no HH concs really turns me off.
__________________
Currently equipped: Rad Scarf of liberating happiness. |
|
|
05-30-2013, 01:53 AM | #58 |
Nade Whore
Server Owner
Beta Tester Join Date: Sep 2007
Location: Oklahoma
Class/Position: Scout/Soldier Gametype: CTF/TDM Affiliations: blunt. Moto Posts Rated Helpful 128 Times
|
So going forward, what do you think would be a good new fortress game for the future, assuming it would be on the new SDK that is being developed right now?
|
|
05-30-2013, 02:05 AM | #59 |
Beta Tester
Join Date: Nov 2011
Gametype: Capture the Flag Posts Rated Helpful 293 Times
|
FF with a few adjustments here and there. FF is close to my idea of a perfect fortress game. At least in terms of physics and some of the mechanics. Could maybe use some rebalancing of weapons, I certainly wouldn't be sad to see over pressure go. And while I like jump pads, I wouldn't mind nixing those if it was generally agreed for a better fortress. Maybe the spy could have a new toy, maybe...something based around movement. Something fun and different that plenty of new players could enjoy.
I would certainly love to see the sniper and pyro reworked. After burn as a mechanic needs to be dropped completely and forgoten about for ever. And the sniper needs to be reworked into a class that doesn't sit in spot away from the action. Because lets face it, sniping is the entire fucking problem with the sniper. And yes I really do like FF. But I still strongly feel that the next logical step that has any hope of attracting any kind of crowd is a new game.
__________________
Currently equipped: Rad Scarf of liberating happiness. |
|
05-30-2013, 02:10 AM | #60 | |
internet user
Fortress Forever Staff
Join Date: Jun 2007
Posts Rated Helpful 42 Times
|
Quote:
anyway, with the way SDK updates are a ghost town, I hope valve pulls something outta their but for source 2 but am certainly not betting the house on it
__________________
9:17 PM - DEXTER: can you teach me how to play o 9:17 PM - squeek.: you jump a lot 9:18 PM - squeek.: and do sweet moves 8:55 PM - FDA: fart in you fridge and blame it on wild animals |
|
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Display Modes | |
|
|