Multiplayer?

I cannot see a way to make it synchronous.
So it 'll have to be asynchronous if at all.
I mean, let each player be in his own timeframe, unless interacting with another player (being in the same bubble).
On that occasion, both players have to follow the slowest clock.
The problem with this approach is that the passage of time in the game is universal. This includes seasons, day/night cycle, plants growth, monster evolution, food rot etc.

For these kinds of stuff, there could be a ‘universal clock’ independent of player activities.

Case in point: Assume two players, A and B.
A enters the game at 8:00 universal clock time (server time) and batch crafts. For him time passes fast so long as he is alone in his reality bubble, but the universal clock time is not advancing much, only the game loop runs for as many turns as it should, without affecting day/night, rot etc.

B enters the game at 16:00 and he goes to raid a lab. Again, universal clock time passes independently of what he’s doing, but what he is doing influences how many turns he takes to do something.

For both A and B, some things will depend on UCT, but others only on the turns it takes to do somehting, while the turns should not be affecting the UCT.

This approach solves it, but the catch is that it would need tons of balancing, because the time balance would get out of whack, resulting in batch crafting in a spiffy and likewise behaviour (rot taking UCT weeks, etc.)

PS. I much prefer Cata in its current form, tbh. Many of the best stuff in cata would have to be simplified/changed for the worse for MP to work semi-acceptably.

LOL I think I may have figured a way this could work.

Who here has played Kerbal Space Program with the DMP mod?.

If you have you will understand about syncing reality bubbles.

So it works like this

Player one decides to craft some thing which will take 3hrs.

Player Two is off out side reality bubble doing other things.

Player one asks for help after he has crafted what ever he was crafting.

Player two says roger that on way. Now obviusly both players are in different time zones but here is the clever part.

Player two as soon as he enters reality bubble of player one gets a pop up saying SYNC TIME TO PLAYER ONE.

If he says yes time is synced and they can both iteract.

If he says no then they stay in there own little world/bubble.

If both players are all ready in reality bubble and one decides to craft etc then they both have to agree on this and take the time hit together.

[quote=“stk2008, post:22, topic:1266”]LOL I think I may have figured a way this could work.

Who here has played Kerbal Space Program with the DMP mod?.

If you have you will understand about syncing reality bubbles.

So it works like this

Player one decides to craft some thing which will take 3hrs.

Player Two is off out side reality bubble doing other things.

Player one asks for help after he has crafted what ever he was crafting.

Player two says roger that on way. Now obviusly both players are in different time zones but here is the clever part.

Player two as soon as he enters reality bubble of player one gets a pop up saying SYNC TIME TO PLAYER ONE.

If he says yes time is synced and they can both iteract.

If he says no then they stay in there own little world/bubble.

If both players are all ready in reality bubble and one decides to craft etc then they both have to agree on this and take the time hit together.[/quote]

That still doesn’t solve the issue of item sync. If two players interact in the same area, but neither of them sync up for a while, then the items in the world wouldn’t sync either. I could pick up a rare item, then he could pick up the rare item, then we’d sync worlds. Instant duplication glitch. The KSP mod relies on the fact that players spawn in their items from nothingness. CDDA is pretty much based on crafting, looting and combat, which cannot operate on asynchronous bubbles without introducing an exploit into every single thing. Trying to sync up enemies would be even worse.

The only ways to manage it are either hard sync, every player must make an action before any actions are executed, which means someone doing a long craft will just sit there for a loooong time in real life waiting. Or handoff games like I described in my previouis post,

Could we not have the server update items in real time so items dont dupe?.

But how do you define real time, without disadvantaging people? If I pick up an item at 6pm in the game, its easy enough to have it disappear from everybody’s game when 6pm hits. But what happens if its 6pm in my window, and 3pm in another players. I pick the item up. Does it immediately disappear from the past in the first persons game? how does the server handle this? what if I’m looking over a tile, deciding what to loot. Someone six hours in the future see’s the items on the ground, because I’ve not picked anything up yet, and picks them up. Despite the fact that I’m in the past, the items just got stolen away into the future. And if items are managed outside of time, that means that someone a week into the future could drop stuff and someone from the past would suddenly see them.

However you look at it, you end up with incredibly wonky logic of things poofing in and out of existence. For all this to work, you need some way to ensure that items cannot be interacted without outside a managed stream of time. Pass-off gameplay handles that by only permitting one player to interact with the entire world at a time. Everyone matching time units handles this by forcing everyone to have their realities synced up.

Permitting player interaction, indirectly through items across reality bubbles that might not match up is a clusterfuck.

Currently what we’ve got is asynchronous. And, as mentioned, things can get pretty weird if two players access the same submaps at the same time. Basically you just create a race condition that is resolved by whoever saves first winning IIRC; so both players would be able to pick things up and move them around independently, but when they both left it would end up looking like whatever it did for the player who managed to save that particular submap first IIRC.

i have some ideas how multiplayer can look, of course making this a mmo is impossible and it cost a lot of work for barely working feature but for lan co-op with friend it should be good (because everyone is in one player faction with this same quests and npc relations)

of course it sounds simple only on paper, coding something like this will be something hard

speed is something like action points now

crafting, stun, sleeping and other things what take time drop speed to 0

turns look like this:

[ol][li]turn start[/li]
[li]check if any of the players have more than 0 speed[/li]
[li]if speed of every players is <=0 npcs and monsters what still have speed (monsters use speed too, right?) move and start new turn
else
players input commands[/li]
[li]after all player who have speed input commands characters, npcs and monsters (monsters use speed too, right?) move[/li]
[li]goto 1[/li][/ol]

of course we have some wariant of that like players moving in order (like in most turn based games) or players do thier turns in this same time and ai do thiers after all players stop moving like in hybrid turn mode of civilization but i think that my first idea is not bad at all

only host save game, when he saves everybody sync data with host, realy bad solution if host have slow connection but it should work (frequent saves will decrease desync)

best solution will be setting up a server and doing everything severside

when both players move on this same title or pickup this same item faster player (with more speed, if equal who first issued command) do it and another player do not lose speed

what happens when someone have few car controls and more than one player start to drive? prevent other players from taking over controls?
how to view other players?

known bugs:
when one player gets halucinations, everybody get them
when player feed LSD to npc all players gets halucinations

The problem with me making suggestions is my total lack of code skills lol as u nowmrealise.

Any ways it would be a bloody thing of beauty if mp was some hoe ever implemented :open_mouth:

Again though, a “sync everyone’s movements” system doesn’t work when you consider the scale of some actions. A turn, regardless of the movement points in it, is six seconds in the game.

Grinding flour, to just use an example, is one hour. Some crafts are significantly longer than that. Therefor, once a player has embarked on a craft, they cannot do anything until the other player has performed three hundred and sixty actions, or their equivalent. Its not just a matter of sync. Its a matter of enjoyability. Collaboration sounds great, getting twice the things done, but in reality your looking at having significant downtime for one, or both players at various points. Sometimes when I’m playing Cata, I’ll get through a week or two in a day of play. Sometimes, It takes a hour or two to do a game day. Sitting down with a goal that involves ten hours of crafting is going to be extremely tedious for the player doing it.

So yea, my objections to that aren’t based on mechanical ability, I know enough coding that I could probably hammer out something ugly that permits it. But I genuinely feel that it wouldn’t be a particularly fun experience, as you’d have large swatches of mandatory downtime based on the nature of the game. Even if the other player(s) can go through enough moves quickly enough to get that downtime to a few minutes per action, you tend to have a lot of actions to perform, so that few minutes turns into half an hour of “Push button, select crafting recipie, watch netflix”.

This has been suggested over and over, once by me. It doesn’t really work well. Maybe if a day comes that it is decided that there are no more mountains to conquer in this game, maybe then multiplayer could be seriously considered.

There will be so much to change in this game to accommodate real time multiplayer that it might just be easier to redo everything and lift some chunks from this game every once in a while. It is a gargantuan task.

I once saw a multiplayer mod for Kerbal Space Program. The mod worked in a way so that players had their own time and could sync with other players time. Maybe that could work on cata, but it would need to make the game not be turn-based-ish; instead of waiting or pressing 5 to skip a turn the game would have a clock running down. Movement would then be a problem too, though. Or maybe scaling down the time on all actions to an extent that it would be multiplayer-acceptable. There are ways to make it work, but they’re pretty damn hard to pull off. It is a thing I’d like to see in the future, though.

Take game concept X and apply multiplayer. This is a terrible idea. (sorry!)
Why?
Because to create a successful multiplayer implementation, player interaction needs to be incorporated into the design process from the get-go. I’ve played a few games that caved to user pressure to add multiplayer functions and they’re always really clunky.

actualy this game is turn based, making players synced will be not that hard task just throw away idea of real time multiplayer (and MMO idea too) we must focus on small co-op

hardest part is managing multiple reality bubbles and making players see other players

for world syncing only host should manage saving, host what is currently playing on computer what is host will probaly notice some preformance loss (because computer have to process all reality bubbles) so we need server edition of game where host can only create and host worlds (loading world create server but host do not have any character in control) maybe some administration tools will be usefull too (ban, kick, force saving)

for time sync when someone craft, skiping time is terrible idea imagine that you are surounded by zombies too and then someone decides to batch craft 2 katanas if my memory is good it is 16 hours so you are dead
better solution will be having him skiping turns when he do things what need a lot of time to do, of course it will turn this time in maybe even half hour of RL time so if you need to craft something what thakes a lot of time try cooperating with other players to start crafting together so turns will pass faster because making crafting skiping turns will only help with people boiling water or dehydrating meat

:slight_smile:

I was thinking how about like you said only allowing server host to save the world.

Wish I could programme would LOVVEEEEEEE to see this become COOP of sort me and my bro have always dreamed of a day we could play together in CDDA.

Would NEVER play any thing else tbh

[quote=“Arek_PL, post:34, topic:1266”]actualy this game is turn based, making players synced will be not that hard task just throw away idea of real time multiplayer (and MMO idea too) we must focus on small co-op

hardest part is managing multiple reality bubbles and making players see other players

for world syncing only host should manage saving, host what is currently playing on computer what is host will probaly notice some preformance loss (because computer have to process all reality bubbles) so we need server edition of game where host can only create and host worlds (loading world create server but host do not have any character in control) maybe some administration tools will be usefull too (ban, kick, force saving)

for time sync when someone craft, skiping time is terrible idea imagine that you are surounded by zombies too and then someone decides to batch craft 2 katanas if my memory is good it is 16 hours so you are dead
better solution will be having him skiping turns when he do things what need a lot of time to do, of course it will turn this time in maybe even half hour of RL time so if you need to craft something what thakes a lot of time try cooperating with other players to start crafting together so turns will pass faster because making crafting skiping turns will only help with people boiling water or dehydrating meat[/quote]

As for time sync when some one crafts the idea I have is

Your both in reality Bubble lets say

player A decides to craft it will take 5mins of game time
Player B agrees to the time jump and presses accept on the confirmation pop up.
They both take the time skip together.

Your both in different Bubble lets say

Player A decides to craft it will take 5mins of game time
he crafts and his game time is now 5 mins ahead of player B

They decide to meet up as soon as they enter the edges of each others reality bubble they both have to agree to SYNC time.
The player with the latest time in the day keeps it as it is but the other player who is lets say 5mins behind all that happens is his time is now changed to the others players time.


TBH if this game could some how become COOP I know I keep saying this but it would be bloody truly amazeing and I realy cant imagine playing any thing else.

Me and my bro are always playing this alone but together WOW I mean WOW it would be truly some thing

You could always make it so that things that take time, like reading a book for example, would scale for what you wanted to learn about the book.
IE: skim over it = 30 seconds
IE: read important/noticable parts = 3 minutes
IE: read the entire book = 7 minutes

You would get recipes and skill increases based on how much you read. Minus skimming, which would show you whats in the book.
This would apply to things like crafting and what not, all of the times would be scaled down.

In order for everything being scaled down to make sense, however, you would have to modify the game, so that every 1 turn, or 1 time, is every 0.1-15 seconds in real life.
Someone already mentioned that you could be given action points, in which would be how much time/energy you could spend before the next turn.
Which if its 0.1 seconds, the delay wont even be noticable, if whoever is hosting the server wanted to slow the game down, for whatever reason, it would be adjustable in the settings.

Now, i don’t know much about coding, i honestly don’t know anything about coding, really. But assuming we can’t very HEAVILY modify this games code to be able to incorporate multiplayer networking and player interactions, along with the ridiculious meta-game that is constantly running in the background, then we are going to have to port everything in the game to a new platform

Now, 30 person servers would be a place to start. I’m just going to assume the worlds in DDA are completely infinite.
Keeping this in mind, it would be convient to incorporate better map generation into the game, meaning that it’s not completely random if you try and generate a world on a multiplayer set up. You could make it similiar to how the world is now, with major cities like washington DC and new york all having relevant places on the map, of which would be shaped like the USA.

Non-major cities wouldn’t be incorporated, and the space in between them would be filled with randomly generated towns and such.

You would also need to incorporate better water coding, instead of deep water and shallow water, you would have beach tiles, coast water, river water, and ocean water. Meaning you could eventually start mapping out europe and asia, and allow survivors to create large marine vessels to travel to these lands.

This of course, would happen once the server hardware backing CDDA becomes very very firm, and we are able to support a good 2000-3000 people on one server.

Untill we are able to do this, in order to insure players will continue to interact, the USA map will be scaled down, meaning the distances between all the major cities will be much much smaller, and there will be no water traffic/other continents to visit


On a seperate note, incorporating CDDA to be a global representation of the planet would allow for the lore to be changed based on server set up, (which once we get into the hefty 3000-4000 population servers, they would all be hosted by CDDA’s staff)

By changing the lore, i mean changing what apocolypse wiped out the entire planet. You could create a scenario generator than ran before the world was generated, that determined how it ended, be it nuclear war, (in which zombies would be based around radiation), a super virus created naturally (which would generate slower moving naturally decaying organic attack based zombies)

Or a super virus that was created mechanically, and was released by bio-terrorists, of which still exists and have created a large hostile settlement in the middle east.


Quite literally, the possiblities become endless once you scale CDDA up into a server supporting thousands of people, and a deep metagame that works and moves every waking moment.

This would be better off being a triple A game with a budget of 30 million, instead of a privately ran game sitting in the dark corners of the internet, played by only true survivalists.

I’ll ramble on about possiblities and scenarios for how we could scale it up if you want, but this is already a good 70 lines.

Tbh i would be happy if coop was just one more person so two people in total.

I wonder if its possible to port this game to unity3d and if that would make it easyer to make coop.

Oh so so wish i could code i would try to add coop into this beast of a simulator :slight_smile: