There was a thread a while ago which asked if rollback netcode was possible, met with mostly "no" because the price of saving state every frame is simply too high. I think rollback might actually still be feasible as there is a way to remove most of the serialization cost. Because rollback only needs to roll back to the confirmed frame between both clients, you can only serialize the data that was changed each frame from the confirms frame, taking the delta between the frame before the current frame and the current frame eliminates the vast majority of the serialization cost and makes rolling back low-cost since you just need to patch specific areas of memory, not load the entire state again.
This would make the main bottleneck running the game fast enough to resimulate the frames with updated input, you could have a fixed maximum amount of rollback frames recommended by CPU speed to ensure that this is possible in most cases, and possibly fall back to delay if required.
I think this might be the best way to improve dolphins netcode for users with computers that are able to handle it, in cases where the system cant resimulate fast enough it would probably be best to give users the option to switch to pure delay.
This is purely an idea at the moment, I haven't actually tried to implement a proof of concept for this. I'm inexperienced with dolphins codebase and would love if some developers were able to give me feedback on this, e.g. things I'm missing which would make it infeasible, more possible optimizations, etc.
This would make the main bottleneck running the game fast enough to resimulate the frames with updated input, you could have a fixed maximum amount of rollback frames recommended by CPU speed to ensure that this is possible in most cases, and possibly fall back to delay if required.
I think this might be the best way to improve dolphins netcode for users with computers that are able to handle it, in cases where the system cant resimulate fast enough it would probably be best to give users the option to switch to pure delay.
This is purely an idea at the moment, I haven't actually tried to implement a proof of concept for this. I'm inexperienced with dolphins codebase and would love if some developers were able to give me feedback on this, e.g. things I'm missing which would make it infeasible, more possible optimizations, etc.