Quick Questions XIV: A Question Reasked (Part 1)

My brother has this:
image

4 Likes

are you sure they’re really your brother

15 Likes

You are trying to modify which folders are backing up to OneDrive. You should be able to go into Settings > Backup > Manage Backup and choose which folders to stop backing up from there. There’s kind of a similar menu that’s for folders that are in OneDrive and available to sync to your computer within the OneDrive directory.

2 Likes

If you have the space, you might want to make a copy of the files you’re trying to remove from OneDrive no matter which method you use, until you’ve proven it behaves as you expect. And do a trial run on a test folder first.

Accidentally deleting local files thanks to overzealous syncer software not recognizing the user intent is a pitfall I’ve seen on other cloud drive services. They are all much better at adding files than removing them

2 Likes

seconded, it is real easy to remove files across every device and all timelines as opposed to just like, deleting a file locally

onedrive in particular does have deletion protection when you delete a certain number of files or more, it will ask if you are sure you meant to do it, and show a caution symbol until you address it. kind of double-edged really

2 Likes

Is fighting game “rollback” netcode the same idea as Quakeworld’s “client-side prediction” netcode from back in 1998 (and which FPSes presumably still do, although it’s less apparent on today’s fast connections)?

I remember when I played Quakeworld on 300ms-500ms latency, I’d often see the game suddenly flip to a totally different situation as the netcode determines that in fact I was knocked into the air by a rocket half a second ago, and replayed the simulation after rolling back to that point.

(I realize it is probably much more complicated to implement on fighting games because the simulation is not based on a simple physics engine but has all kinds of character-specific quirks, so I still find it understandable that it took decades for that style of netcode to cross genres. Just wasn’t sure if in fact it’s the same thing or there was a further fundamental innovation since then.)

Answering my own question, Quakeworld relied on a server to resolve game state, creating a “host advantage” for the player who owned the server or was nearer the server, whereas rollback netcode is fair and peer-to-peer, so I think there is a fundamental innovation after all.

Although the resulting effect looks quite similar, it actually isn’t correct what I said about Quakeworld client rolling back and replaying the simulation. Rather what what I was seeing is that the client replaced its unofficial game state with the latest authoritative game state provided by the server.

Sounds like you’ve researched further, but yes – rollback is very different from client-side prediction, which continues to be very important and an art as much as a science. Prediction is about having plausible excuses to show what entities are doing up to a second in the future so they can be seamlessly merged with authoritative state when the server gets back to you. The better the prediction, the less the player notices. The worse the prediction, the more players see characters popping or zipping around. The game can’t code better network stability, it can just disguise the hiccups better or worse.

2 Likes

The rollback netcode is also doing prediction in some sense (every description of it I’ve found says something along the lines of “the code assumes the opponent will continue to hold buttons”), that’s why I made the connection. The divergence between rollback and CSP comes in the exact method used to convert from prediction to set-in-stone historical record of what happened.

And they’re both better than simple workarounds on top of essentially single-computer engines such as delay-based netcode, whose only means of altering the simulation state is to apply controller input to advance one way into the future.

I see rubberbanding/teleporting due to CSP mismatches in Destiny 2 more often than any game except Battlefield with 64 players. Neither the server nor an individual client have total authority because the action game “feel” needs more immediacy so it gets hinky with a lot of AI. Oddly enough, less so with players.

1 Like

I think I can explain this based on my latest reading. Aside from the fairness issue, another theoretical weakness of CSP which does not affect rollback is that the server ought to send updated game state for every entity in the game in every network-frame, instead of only sending controller inputs.

This worked well enough in an 8-player game of Quakeworld. However in a game like Destiny 2, there are a huge amount of AI entities in addition to the players so the bandwidth problem becomes prohibitive. In turn Destiny 2 may well end up pursuing tradeoffy optimizations like reducing the update rate of AIs as compared to players.

3 Likes

And my understanding is that it’s a much bigger limitation of rollback, which is only suited for a small number of possible future objects and states. Back in, uh, 2014 we explored rollback for player characters while leaving physics simulation client-side but even managing small AI counts was unfeasible.

1 Like

The cost per entity would go to the CPU instead of the network bandwidth in rollback netcode. AAA games have always lapped at the very edge of being CPU-bottlenecked on consoles so it’s understandable that was infeasible.

PS5 will suddenly introduce a huge amount of extra CPU capacity so maybe this situation has changed? (But more likely the extra CPU will instantly be eaten by fidelity instead)

Because rollback is more like an emulator’s runahead feature, right? The game is simulating future frames ahead of time and holding those states prepped, rather than generating them on demand and in a best-guess direction.

1 Like

They’re related techniques, but my understanding is that rollback doesn’t hold several frames of the future prepped, instead it remembers several frames of the past and stands ready to instantly rewind and simulate forward to the present.

Both are highly CPU-intensive because they involve simulating the events of multiple frames within a real-time single frame. In a single-player runahead setup, it systematically simulates 2 frames every frame. In rollback, it may not have to simulate more than one frame in cases when the prediction proved accurate, but when a rollback is required, it needs to restore that historical state then simulate N frames worth of latency.

So if you set a rollback maximum tolerated latency of 5 frames, then your simulation needs to only occupy 1/5th of the available CPU budget. If either the CPU or the network is too slow, then the CPU is overwhelmed and the player will experience frame drops. Indeed when I run into players with 8-10 frames of rollback in Strive, my framerate drops to 10fps.

2 Likes

Ah, right, that’s it, it’s that once you rollback you then need to have the overhead to simulate several frames before your next ‘normal’ frame.

2 Likes

Another insight from https://near.sh/articles/input/run-ahead

I hadn’t thought about this, but rollback netcode must also be bottlenecked on single-core performance. Kind of a big problem on a PS4 with its Athlon 64 tier cores, no wonder it’s so rare. I’m even more impressed by Guilty Gear Strive now

Yeah, it’s just ugly when you have to coordinate all your thread syncing. Definitely where physics middleware is just an outright no and all your other middleware dependencies will need extra-special attention.

2 Likes

I envy the passion of anyone who loves game so much that they’ll put up with 7+ rollback frame spikes whenever someone lands a counterhit.

2 Likes

how do i get words next to my username

4 Likes