Plausible Multiplayer mode (1-8 players per area)

I know there has been a lot of talk about this and I have read 15+ pages about this but I have not seen anything close to this suggested so please take the time to consider it…

So, I am upset right now… I stayed up till 1 AM writing a huge explanation out giving examples for many different scenarios (I even had a story that made sense with the other background story of the game but…) and when I finished I clicked post… it went to the login screen and deleted the whole post… :confused:
So, here is a basic version as I am not going to take the time right now to write out the whole thing again…
BASIC NOTES:
1)This only works well with a few people in any given area the more people that are together the slower the game would progress. (wars would quickly break out to increase the game speed and should keep the groups small this prevents a “faction” from getting to big and dominating a wide area) with two people instead of one time would likely advance at close to half the rate with each player added making a smaller % difference each time.
2)This idea causes problems with crops, waiting for things to finish (kilns, tanned items, blob parts etc.) and probably other items. (look for “CROP PROBLEM” for a workable solution)
3)This would cause temporary unbalance between players depending on circumstances. One player may be in winter the other summer, one may have day light the other night. (Look for “TIME VARIANCE PROBLEM” for an answer)
4)All multiplayer ideas for this game had a common problem that was never addressed. If one was sleeping another could come up next to them and see their own death as they are blow up by C-4. But I think that making traps set by players harder to spot according to the level of trapping that the setting player had when it was set would help alleviate this. (also, being able to set “Friends” or an alliance would allow turrets to not fire on friends but take down other invading players even while asleep)
5)This would cause a somewhat jumpy progression of time which may cause unforeseen problems…
6)KOWN UNSOLVED PROBLEMS how to decide if a night creature should die when exposed to light. (it will make more sense once you read father down. it does seem quite silly of a problem… {nearest player? They would be taken advantage of with teams.})

So, since this is the third time trying to put it all in a nutshell hopefully it will stay in the nut this time… (though it likely will not… sorry in advance…)
The problem with having multiplayer turn based game is that you have to wait for everyone to take their turn (an example is Starz and old 2d space game that could last for months in real time). Or if you have real time strategy you have to wait a long time to craft things (a lot longer in this game than it would be in others…) so my idea is why care about the time.
Each player would be in their own time. They would be able to craft, sleep, build in their own “bubble” of time.
The problem starts when 2 or more players would get close… so then you have a certain distance that when players are close enough their time would sync. Allowing them to work together or fight with fair time passing…
SYNCRONIZING TIME:
The best setting for time while 2 or more players are in one spot would be a hybrid time. A “tick” that would be the baseline (6 sec was suggested many times) but if all players involved had turns waiting to be calculated the time would proceed as it does now till the first player finished what they were doing. Than if 5 players were crafting things you would only have to wait for those that are starting a new project, then time would advance quickly again. This may cause some unwanted movements in a battle as you may think you have another move but didn’t have it yet and you pushed the wrong button, but I think that it could be gotten used to… Another point that I would suggest is that there be a settings to adjust your baselines. the game would use the slowest setting of the players involved in the time sync, but this would allow friends to have a 1 sec tick, also to have 2 baselines one for friendly environments and one for hostile. (say 3 sec tick if no enemies are in sight, including nonfriend players as enemies, and a 6 sec tick for tactical planning) both settings should be able to be set in the options or by the server, again the slowest setting would be used in the time bubble…
At the start of the synced time there would be a message stating the time tick would start and giving the option of stopping what you are doing.
Now what distance do you use? It has to be farther than any ranged weapon (at least for enemy players) Idk how big the “reality bubble” is but it would probably work.
It would be nice to have a setting that is separate (likely a server setting) that would set a different bubble size for friendly players say 30-50 blocks? This would allow friends to have bases next to each other help each other with invasions but not slow each other down while crafting and sleeping…
(it would be posable to form a chain of people in the same reality bubble with friends… P2 and P3 are fiends)
P1………………………………P2………….P3
P1……………………………P2………….P3
If P1 entered into a tick sync with P2, P3 would be added because of the proximity to P2 even if the friend bubble was smaller. P2 would be in a Hostile bubble which would be bigger, then reaching to P3 (if there are 2 sizes) this may cause a problem if you have a line of friends that are just out of range of the Friendly bubble added many all at once…

TIME VARIANCE PROBLEM
Now there is a problem with letting players have different times. When they sync one may be midnight while the other noon… how would you solve this? Hunting a player while its daylight for you and night for them is not fair… so, light the day person up like a shocker zombie (this would be interesting if the weather was also around the person. Snow falling around someone in winter, rain for someone in a storm etc.). Than the day person can see the night person because he has daylight and the night person can see the light from the day person’s time.
The day person still has the advantage by being able to see obstacles farther away but would stand out in the night being lit up.
The other problem is the zombies… I don’t know how hard it would be to program them to treat each person in their own time. So, the night person would be invisible like normal and the day person as if it was day. I know the zombies have some sort of a priority system to attack one entity before another and I think (I have not looked at how it is coded) that it wouldn’t need much change. Just changing the source of environmental factors to the players themselves (if it isn’t already…)

CROP PROBLEM
So, if one person was in winter and another spring how would you tell if a crop was ready?
Easy the person that planted the crop, their time was the planting their time must advance to the point of maturity and then any player could harvest since their time would be coming on the already harvestable crops.
Same with item that you have to wait for the person that started the wait to advance their time enough to have it finish.
The problem is then what if someone logs one plants a bunch of crops and never gets on again. Easy, have the “baseline” for time continue if someone’s reality bubble covers the crop/object. It would take longer than normal but would still be recoverable…

So, now we come to another point I didn’t read anything about… logging on and off no one will be happy if the come home from vacation to find their base is a pile of ashes. Defenses as they are cannot fully protect a base (nor should they make it impossible to raid a base) but to be able to protect your stuff while not online I would like to submit an idea. Have the vehicle that you are driving when you logoff, be logged off with you. Though this may very much encourage mobile bases they are use most of the time anyway. (while at least by many I have seen in the forums and by me all the time) this would give a small storage (until someone has a cargo dimension) that would be safe while offline. A problem that will occur is people logging off to save from being raided but if you set the mechanics of the game to have a HUGE crash if you base is re-spawned on a car most will fight or run till they are alone before risking a logoff. And it would be an easy way to get back at someone who logs off to not fight. Just park an armored truck where the base was before and come back later for the wreckage. Or set turrets all around it and have a spawn trap for when they log on. landmines disable cars in a hurry :wink:

3 pages in Word… I knew it would break the nutshell…
Anyway, I haven’t seen any problems that wouldn’t be able to be fixed.
It would also allow a new group of weapons time freeze grenades, time machines (change seasons and grow crops etc…) time bombs (large effected area where time is slowed for a short period) etc…
Any problems that are spotted feel free to let me know.
And let me know what you think about the idea. (I may know someone who may be interested in helping program it)

Scenario: you have two people in a shared base, one is continuously crafting or sleeping, the other is doing extensive inventory management.
The crafter/sleeper is stuck in real time (i.e. sloooow) mode for thousands of turns (an hour or many hours, depending on your tick speed), that’s unacceptable.
There are a large number of scenarios that would trigger this kind of thing.

The only way I can think of to make multiplayer work would be to write a total conversion mod that eliminates sleep and moves all crafting to being furniture based.
Even after doing that, you’d need to write the net code for the game, this would be a massive undertaking since usually multiplayer games are written with this kind of thing in mind, Cataclysm definitely wasn’t.
Do all this with very little input from me (I can’t speak for any of the other devs, but I don’t recall seeing any enthusiasm for multiplayer from other core devs), because I’m simply not interested in a multiplayer version of dda. I’d be happy to merge things that allowed such a total conversion to happen, and we could make a separate build of the program that handles the net code, but I wouldn’t help write it.

We’d have to restructure the whole game time around some arbitrary “points” spent on crafting, reading and sleep to even make it manageable. Or get rid of time spent on those by doing what Kevin suggested.
Then we’d have to implement multiple overlapping reality bubbles. The processing would have to be done on central server, because things in one bubble would affect things in other bubbles.

The net code would most likely be horrible pain to design, since the game is supposed to run on multiple platforms. So either it would be incompatible between platforms or would require ensuring it can be encoded and decoded by all platforms equally well.
Unless the entire state was sent every turn (tons of data, would clog anything slower than LAN), there would have to be synchronization. Synchronization depends on random number generator state, which in turn is necessarily affected by player’s actions.

So in short:
No way.
Unless suddenly a horde of fans appeared out of thin air, promised to donate $1000 per month so that I or some other low-maintenance, dedicated dev can spend all day on reimplementing the whole game just so that it can be multiplayer, actually DID keep donating that money for few months, it will simply not happen.

It is so unlikely to happen that if I had to make a multiplayer DDA, I’d rather start from scratch and try to clone Heaven&Hearth style gameplay and then theme it up with zombies (and probably end up with something like Project Zomboid) than try to cram multiplayer into DDA.

The only way I see to cimcurvent the longer turn times for X things would be that to craft and sleep players would need to all get together and have like a “set up camp thing” where a menu pops up, and you’d manage the time you have to read and sleep and do activities that take longer than that, like fixing cars and stuff (everything needed for that should be in the zone for the camp itself, even the vehicles) and THEN there would be a time skip.
Otherwise, crafting would be instant, only taking a turn, but you wouldn’t be able to sleep or read or fix cars.
Every other time taking action thats not as long in the game would be reduced to a few turns. Max 10, in extreme cases.
If all people are in a time taking action time would skip.
Construction would need all people to be in the action, though it would be faster. If one gets attacked while the time skips it stops. Clumsy, but possible at least.

I don’t know what other use cases would make problems with this setup, and the netcode would be nigh impossible considering the amount of data the game works with not counting zlevels, so yeah. Hard.

[quote=“Zacksmiths, post:1, topic:13507”]I know there has been a lot of talk about this and I have read 15+ pages about this but I have not seen anything close to this suggested so please take the time to consider it…

So, I am upset right now… I stayed up till 1 AM writing a huge explanation out giving examples for many different scenarios (I even had a story that made sense with the other background story of the game but…) and when I finished I clicked post… it went to the login screen and deleted the whole post… :/[/quote]

Mate, use the lazarus extension/add-on for chrome or firefox.

[quote=“ribblle, post:5, topic:13507”][quote=“Zacksmiths, post:1, topic:13507”]I know there has been a lot of talk about this and I have read 15+ pages about this but I have not seen anything close to this suggested so please take the time to consider it…

So, I am upset right now… I stayed up till 1 AM writing a huge explanation out giving examples for many different scenarios (I even had a story that made sense with the other background story of the game but…) and when I finished I clicked post… it went to the login screen and deleted the whole post… :/[/quote]

Thanks, I think i will use Word for now… I haven’t had much luck with extensions they usually give me viruses…
Mate, use the lazarus extension/add-on for chrome or firefox.[/quote]

[quote=“Kevin Granade, post:2, topic:13507”]Scenario: you have two people in a shared base, one is continuously crafting or sleeping, the other is doing extensive inventory management.
The crafter/sleeper is stuck in real time (i.e. sloooow) mode for thousands of turns (an hour or many hours, depending on your tick speed), that’s unacceptable.
There are a large number of scenarios that would trigger this kind of thing.[/quote]

I realize that there would be a large number of scenarios that would cause this but, think about it a little.
If you are working in tandem you would set the “friendly bubble” to a low amount say 30 blocks. than it wouldn’t be hard to set sleeping quarters on a different level (which i think make the reality bubble up top stop. since none of the enemies seem to move unless they are coming up or down stairs.) and you would be able to sleep ll you want.
This setup would limit the amount of difference that friends would be able to do at the same time. your scenario is one of them but if they are working together they will not try to cause this for one another and if they are not friends they will fight till one dies or runs away.
All in all most of the problematic scenarios would be posible to avoid by working on something that compliments your friends.

That trouble will actually balance the game in the long run. you will never get an army of 20 people hunting down people who join. I even said in the topic that it would be for small groups “1-8 players” this probably would’t be public servers but rather among friends…

I would like to look in to this even if others don’t want to right now… but i would like to ask few questions that will help me determine just how much programming will go into this.

Will any of the “core devs” answer a few questions about the coding that is already here?
It would save me a lot of time dissecting the code trying to get basic answers…

[quote=“Zacksmiths, post:7, topic:13507”]Will any of the “core devs” answer a few questions about the coding that is already here?
It would save me a lot of time dissecting the code trying to get basic answers…[/quote]

Ask away.

i would like to ask few questions that will help me determine just how much programming will go into this

Would require total reimplementation of reality bubble mechanics to deal with variable size of the bubble, which in turn would mean reimplementing all map caches. That’s hard without even considering disjoint bubbles.
Then netcode. No netcode exists in the game so it’s hard to even tell how much would that be. But knowing other games with non-trivial synchronization, a LOT.
Then UI and turn mechanics. This would be more of a design problem than programming problem.

It seems that multiple player controlled characters are not feasible. Would AI controlled player charater work?

One player uploads their character to server. Server spawns the character in another player’s active world. The AI controlled character will complete his mission: killing the other character, sending medicine, killing jabberwocky, trading moose pemmican, etc. Then he leaves the reality bubble and disappears. When the first player connects to server, he will see his character come back.

If the character died in the other world, or the second player deleted the save, he could not come back.

Couldn’t the real time progression option be toggled as mandatory to avoid sleeping/crafting players waiting on the actions of the other?

correct me if I am wrong your understanding of “real time progression” is time progression as setup for single player right?
I wrote out a whole paragraph explaining why this wouldn’t work but… if you only ignored the time sync between “friends” while no enemies were in sight this might actually work.
It would cut out a whole bunch of scenarios that would slow teams down, yet still allow team efforts in the areas that most would want help.

[quote=“Kevin Granade, post:2, topic:13507”]Scenario: you have two people in a shared base, one is continuously crafting or sleeping, the other is doing extensive inventory management.
The crafter/sleeper is stuck in real time (i.e. sloooow) mode for thousands of turns (an hour or many hours, depending on your tick speed), that’s unacceptable.
There are a large number of scenarios that would trigger this kind of thing.

The only way I can think of to make multiplayer work would be to write a total conversion mod that eliminates sleep and moves all crafting to being furniture based.
Even after doing that, you’d need to write the net code for the game, this would be a massive undertaking since usually multiplayer games are written with this kind of thing in mind, Cataclysm definitely wasn’t.
Do all this with very little input from me (I can’t speak for any of the other devs, but I don’t recall seeing any enthusiasm for multiplayer from other core devs), because I’m simply not interested in a multiplayer version of dda. I’d be happy to merge things that allowed such a total conversion to happen, and we could make a separate build of the program that handles the net code, but I wouldn’t help write it.[/quote]
Thinking about this sort of problems that make MP near impossible to do, i’ve thought of an idea that is not multiplayer, but still might be a fun addition to the game, and less nightmarish to implement i think.
Basically, give players an ability to play DDA as a Jagged Alliance style team based single player game, with direct control over multiple characters at the same time. Technically we already can do that minus the “at the same time” part.
The balance, PvP, disconnection and netcode issues are nonexistent to begin with, the “bored player doing long craft\read\sleep” problem is solved by the fact that the player will just simply leave the “busy” characters busy and do stuff with the others, and large part of the features needed, like detailed human NPCs and handling multiple player characters on the same maps are already there.

The only issues i can think of is running multiple, possibly overlapping “reality bubbles” for all the characters with related increase in hardware resource use which may or may not be a major problem depending on the number of characters and harware, and adding UI features to make multiple character switching and moving not be a pain in the ass.
The extra player characters could either be added through the usual character generation (say, an option of “is friend of option”) or “assume direct control” option for recruited NPCs.

Such a system would also squeeze a lot of extra use from all the already present features like building, crafting (characters to spare work hours on that), vehicles (multiple seats, turrets) and NPCs (recruited ones really worth the effort due to not relying on AI all the time) .
Nevermind the massive amount of new possibilities in combat tactics due to having multiple characters able to act in a smart way or properly use advanced item fuctions that AI can’t.

If multiple reality bubbles are not feasible at all, the alternative would be to just have an expanded reality bubble, and letting “stray” player characters out of it get handled similarly to allied NPCs that get outside the reality bubble.
Might also create a use for radio items, allowing switching between which character(s) should be “active” and which should be outside of the bubble.