Replies: 2 comments 1 reply
-
Hi @thormme Let me share our research and plans so far and we can think after how we can fit your work there. Me and @polycone did 2 POCs for the similar thing: we made client creatures follow chores picked by the host. (one POC is in the main branch but with disabled harmony annotations, second one is here https://github.com/onimp/oni_multiplayer/tree/research/dupes-sync-via-preconditions ). Both of them
So all in all I feel like either of those 3 POCs are affected by mentioned issues in different ways.
So I feel like the entire epic could be broke down to following steps:
One more thing that I like about approach above is that it will allow us to enable chore syncs by small controlled groups. Instead of releasing the entire epic with quite drastic patches of the game logic. Feel free to ask more question and join our discord server https://discord.gg/3TQ97w8Qwq |
Beta Was this translation helpful? Give feedback.
-
Hi, But here some updates: In general I'd be happy for your contribution. However I think we need to go smaller steps here and try to address individual problems from table separately and enable those syncs only for some chores (until we are fully sure in it). So far AFAIK neither me or @polycone continue working on our POCs about chore selection. So we are still missing this piece. Btw I've also introduced few |
Beta Was this translation helpful? Give feedback.
-
Hi! I've been using the mod quite a bit, and have really appreciated it existing, so thanks!
I've also been looking into getting chores properly synced. I started using the FindNextChore patch as a base.
I modified it to only assign the next chore when the previous one had finished (if that's what happened on the host). I also added a patch to WorkChores that synchronizes them a little better by waiting until the host finishes before finishing on the client.
I did run into a couple of other issues, one is that often a chore would be picked up and sent to the client before it existed on the client. My solution was to create a queue that used coroutines to wait until the chore did exist.
I'm also a little worried that no amount of messing with chore priorities will be enough, since if the order of events is off at all between clients different chore will end up being available and quickly leads to unfixable desync. My only thought for getting around this is syncing the StateMachine Instances themselves, but they are both tricky to patch and have a lot of entry points. I have managed to patch GoTo, but haven't attempted to actually use the messages to sync the state yet, since I haven't sorted out where/how to interrupt the state transition.
My working branch is here if you're curious: https://github.com/thormme/oni_multiplayer/tree/thormme_chore_sync
It certainly isn't cleaned up or working much better than what was already there, I have mostly been throwing things at a wall and seeing what sticks, so I wouldn't expect it to get merged, but I thought I'd share.
What is your plan to sync them? Let me know if you'd like my help/input, or if you already have it sorted.
Thanks for a great mod!
Beta Was this translation helpful? Give feedback.
All reactions