You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Insofar, we've not really approached how to make the main quests in multiplayer work.
At the moment, many quests check some one-time conditions - as they're meant to be breakable paths to boss fights, more or less, and the quests are designed to be the one-time way to get access to the otherwise infinitely repeatable " Map".
As such, a quest like the Frigid Beast (Deerclops boss domain quest) - which requires getting one item from a standalone pre-built structure - would be impossible if I complete it before my friend does.
As such, how would we want to approach this? My thoughts are:
Step-Synced
That boss domain quests are, when activated, activated for everyone (including people who just join, aside from people without the first class quest done). The quest is still updated individually, but reaching the next step updates it for everyone else. This should be fairly simple to do.
For example, if I start Frigid Beast, talk to Rhine, get the Antlers and give them to Rhine, a person who just joins would be on the same "Talk to Elara" step alongside myself.
This could be done in many ways; at the moment, I'm thinking just a simple "SyncedQuest" set or attribute that determines if a quest should be synced, and a simple packet to update quests on incoming & pre-existing clients. Only concern is managing subworlds in multiplayer.
Finish-Synced
Alternatively, the quests would still be entirely local, my accepting a quest does not affect any other player, but completing any of these needs-sync quests would autocomplete it on other clients. This would still allow non-participants to finish the quest and get required loot, and reduce backend work. It might be substantially more confusing for players, though, and potentially make them feel like the game cannot work if they don't understand this system.
Individually Reproducible
Quests are completely unsynced in every way, but are designed to be played individually. For example, instead of me breaking the antlers in the Deerclops quest, I'd right click them to get the item, and then be forever unable to right click it again. That would still allow my friend to join and do the same thing individually; though this'd be a little annoying with certain things.
Any input? I'd personally probably go with Step-Synced as it makes for the smoothest experience, but I can't say that either other option is terrible either.
Reasonings
Making sure the mod is designed to work cohesively in multiplayer.
The text was updated successfully, but these errors were encountered:
I think the best path forward is a step-synced. I do want to challenge us moving forward to think about how this would effect the "Hosted Servers" idea I had a bit back. We are a LONG way from that but just something to keep at the back of the mind, so if we do ever end up doing that we don't have to backtrack a ton of work.
I also am interested to see how subworlds will effect this
I know you can send packets between subworlds (i.e. to main world from a subworld), so it shouldn't be too bad, just a new thing to handle. A wrapper around this and it should be clean and a nonissue.
And yeah, I'm trying to keep the - more or less - MMO style concept in mind. Multiplayer is, while always important, even more important here if we want to hit the ideals of the project.
Summary
Insofar, we've not really approached how to make the main quests in multiplayer work.
At the moment, many quests check some one-time conditions - as they're meant to be breakable paths to boss fights, more or less, and the quests are designed to be the one-time way to get access to the otherwise infinitely repeatable " Map".
As such, a quest like the Frigid Beast (Deerclops boss domain quest) - which requires getting one item from a standalone pre-built structure - would be impossible if I complete it before my friend does.
As such, how would we want to approach this? My thoughts are:
Step-Synced
That boss domain quests are, when activated, activated for everyone (including people who just join, aside from people without the first class quest done). The quest is still updated individually, but reaching the next step updates it for everyone else. This should be fairly simple to do.
For example, if I start Frigid Beast, talk to Rhine, get the Antlers and give them to Rhine, a person who just joins would be on the same "Talk to Elara" step alongside myself.
This could be done in many ways; at the moment, I'm thinking just a simple "SyncedQuest" set or attribute that determines if a quest should be synced, and a simple packet to update quests on incoming & pre-existing clients. Only concern is managing subworlds in multiplayer.
Finish-Synced
Alternatively, the quests would still be entirely local, my accepting a quest does not affect any other player, but completing any of these needs-sync quests would autocomplete it on other clients. This would still allow non-participants to finish the quest and get required loot, and reduce backend work. It might be substantially more confusing for players, though, and potentially make them feel like the game cannot work if they don't understand this system.
Individually Reproducible
Quests are completely unsynced in every way, but are designed to be played individually. For example, instead of me breaking the antlers in the Deerclops quest, I'd right click them to get the item, and then be forever unable to right click it again. That would still allow my friend to join and do the same thing individually; though this'd be a little annoying with certain things.
Any input? I'd personally probably go with Step-Synced as it makes for the smoothest experience, but I can't say that either other option is terrible either.
Reasonings
Making sure the mod is designed to work cohesively in multiplayer.
The text was updated successfully, but these errors were encountered: