shanecelis / SeawispHunter.RolePlay.Attributes

Defines role playing attributes like "max health" using generics that are modified non-destructively and notify on changes
MIT License
29 stars 4 forks source link

Replication over network #1

Open Shelim opened 1 year ago

Shelim commented 1 year ago

This work is amazing.

One question through - how would you support/implement replication of attributes' modifiers through network? We have fairy low-level UDP library so we can actually strongly define what and when will we send, but I wonder if you considered any kind of synchronization (especially on timed modifiers) over master/client kind network? We are taking here authoritative master with client-side prediction scenario.

shanecelis commented 1 year ago

Hi, thank you. Sorry for my late response. I hadn't seen this till now.

Gosh, that's a good question. Off the top of my head, I'd try to construct my modifiables in their entirety in memory on both client and server. Basically add all the possible modifiers and disable them. Then refrain from adding or removing modifiers at runtime, only enable or disable. That way you don't need to synchronize a graph. You could just have a bitstring that defines which modifiers are enabled assuming they can be ordered. And if your bitstrings have different lengths, you know their modifiables are not the same.

Would that solution be applicable to your situation? Seeing as you commented a while ago I'd be happy to hear if you found another solution already.

Shelim commented 1 year ago

Actually not - we focused elsewhere :) Creating database of all possible modifiers is not a viable solution - some modifiers might be dynamic. And some timed. I would go more into event-based solution, but that still needs to take account ownership, client-side prediction and all that stuff. I will research that more, but later on.