C:DDA Multiplayer implementation details creative high containment thread

A groundbreaking new idea for how to make cata multiplayer fun has led to a range of developers jumping in with ideas for implementation.

Please discuss all programming concerns and ideas in here, and go to the new game design thread for game design ideas unless they are relevant to an implementation issue.

For prototyping I would suggest to modify game code so that NPCs, who already behave like really dickish online players, take a random amount of time to make a move, and that “realtime turn progression” also happens when you open a menu.
This way we can see if it would be any fun at all to move around like that.

From the little debugging I’ve done today it seems like this would be easy to implement, or does anyone know of a technical reason why the game MUST be paused when a menu is opened?

[quote=“User, post:2, topic:12790”]For prototyping I would suggest to modify game code so that NPCs, who already behave like really dickish online players, take a random amount of time to make a move, and that “realtime turn progression” also happens when you open a menu.
This way we can see if it would be any fun at all to move around like that.[/quote]

I’d avoid the NPC portion of that approach. To see if the game would be any fun to move like that, it’d probably best to assume the worst case scenario, IE somebody had their attention drawn away from the game, so every turn takes X seconds to process regardless. Its not improbable that someone will get a call or have to deal with family or even use the bathroom for a while, and testing the worst case scenario will give us an idea of how long, real time, we can let turns take. Then realtime can be tweaked in length.

Its also much easier from a server-side perspective to know that a turn will always be X seconds long, especially if the server is responsible for most of the updates and calculations locally, which it most likely will be. Damage rolls, accuracy rolls, etc, will have to take place serverside anyhow, along with pathfinding and other entity interactions. If players are playing REALLY quickly, such as combat across multiple reality bubbles, then it’ll bog down fast. Building around a set time period makes it easier to break down what the server can do, and how long it has to do it, even in those scenarios.

I'd avoid the NPC portion of that approach. To see if the game would be any fun to move like that, it'd probably best to assume the worst case scenario, IE somebody had their attention drawn away from the game, so every turn takes X seconds to process regardless.
Can you please read [url=http://smf.cataclysmdda.com/index.php?topic=13530.0]the other thread[/url] before you post here? See below:
If a player doesn't perform an action, others will have to wait until his turn times out. If a player repeatedly doesn't perform an action and doesn't press '5' or '.' for 'do nothing', the game will assume he is AFK and not wait for his input anymore until he presses a key.
Random AFK'ing can be easily simulated with NPCs.
Its not improbable that someone will get a call or have to deal with family or even use the bathroom for a while
If the player has the time to press a key he can go to IKEA dimension or go into AFK mode if he is in a safe place.
Its also much easier from a server-side perspective to know that a turn will always be X seconds long, especially if the server is responsible for most of the updates and calculations locally, which it most likely will be. Damage rolls, accuracy rolls, etc, will have to take place serverside anyhow, along with pathfinding and other entity interactions. If players are playing REALLY quickly, such as combat across multiple reality bubbles, then it'll bog down fast. Building around a set time period makes it easier to break down what the server can do, and how long it has to do it, even in those scenarios.
I don't think having turns always take the same amount of time is fun. If you think otherwise, discuss it in the game design thread first. If nobody likes it then whether or not it is easier to implement doesn't matter.

From a previous thread:

Code quality is good enough to allow adding multiplayer within reality bubble, but making reality bubbles separate yet connectable would be a big undertaking. Not because bubble code is atrocious (it's not perfect, but it's OK), but because 90% of effects that span entire map assume that it is a rectangle with dimensions of a reality bubble.
Can someone point this out in more detail?
I think it is not beyond consideration that turning CDDA into a MOO/MUD is not something that the base source code should be considered for (less effort to manage if written from scratch).
Because, from what little digging I've done in the Cata code, converting the game from how it handles worlds and the like now, to something that will sensibly run on a server type setup, while not suffering desync issues wouldn't be trivial, to say the least. While you could probably salvage some code from Cata, lots of things are operating on assumptions that go out the window as soon as you have two players. Designing something from the ground up with multiplayer in mind would absolutely be easier from a design standpoint, and likely a code standpoint too, since your not trying to work around obscure issues from code that wasn't designed to do what your doing.
Does anyone agree with this? Is the current code really that strongly locked on one character?

I haven’t posted here much, but as someone who’s design minded and hates games that prematurely blow their load on large scale ideas, this one’s gonna be a rant.

While I haven’t played around in the code much (as I’m not a programmer, as much as I know game design), anyone can see this in action if they just look at how things function mechanically for long enough. The first and most obvious thing, which most players will realize exists in some manner after a few games, is the reality bubble. Online games do have a reality bubble of sorts, as it’s just smarter to not have the servers processing things that aren’t in use, hell most games do for that matter- You can glitch Super Mario 64 to hell and back by abusing unloading. But very few have such a large base of variables potentially interacting with it. Starbound is a decent example of one, and you get stuff like rain clipping through the floors and walls of your house on the edge of the screen if you’re not careful about how you build due to rain being attached to what the player can see. Starbound and Cataclysm actually handle the way plants grow off screen very similarly.

When you leave and reenter an area, taking your reality bubble with you, not only does that trigger enemy behavior, so that someone could, completely by accident, trigger a group of zombies a screen away that get lured to someone’s base somehow and demolish it without them even knowing… But things that are calculated outside the reality bubble and have to catch up would have to do so for however many players are wandering around your world. Meaning you’d need to have someone program all that logic and make sure it runs efficiently and without strange, gamebreaking bugs, as well as ensure the game is balanced in such a way that players can’t constantly screw each other over in really esoteric ways. They’d also have to find and rework a lot of odds and ends, such as the clothing fit system, which as far as I’m aware is a tag on items and actually doesn’t do any kind of a check against the player. Which means you can have a tiny Chinese girl who wears the same clothing as a giant nine foot tall mutant lizard from freaking Asgard.

The first thing you’re going to come to grips with is just what kind of multiplayer you want to attempt, which is going to depend on what the programmers in question can do, as well as what they want to do, and most importantly even if not your primary concern, what players will actually really enjoy. This is why you actually do need programmers at the idea stage, so you don’t overdedicate to a scheme that isn’t practical or possible.

You will have to start considering game design, and one of the first things that would go out the window (in some cases for better, in others for worse) are many of the typical things in a roguelike. Permadeath can maybe go or stay, but save scrubbing by nature is going to go, which is frankly something that keeps a lot of us playing who like the adventure and complicated nature of these games but not the super punishing nature of failure. Secondly, online games also tend to put more pressure on players optimizing for a variety of reasons, as just by introducing other players, even in a cooperative setting, indirect competition will arise.

And player versus player competition in a roguelike… Well, I don’t think I need to explain that one. The game will probably end up with a softcore setting that most of the online players end up using just because of that alone. That or a dramatically accelerated progression curve. Or have the game be strictly player versus AI. And whether you decide screw the average player or not, balance is going to become more difficult, and many (probably for the better, to be honest) changes will have to be made to player skills, mutations, gear, etc to ensure the game’s meta doesn’t end up lopping off half the player’s total options.

There’s also a plethora of (delicate) design choices that need to be settled on that will directly impact how you implement things on the programming end, so this is in fact a two way situation. Again, you need the people working on the actual code hand in hand with the people designing the gameplay. There’s a reason why Treasure used to have their lead designer also always be a programmer. Chances are you’re going to end up settling on a more mass-multiplayer, real time implementation of the muliplayer simply because that’s what most people are going to want out of a multiplayer Cata. As a survival game people are going to want some level of persistence and a world that feels like it’s there even when they aren’t. You could do a small server/client setup, but you wouldn’t get the same amount of impact or player investment you would on something bigger.

Assuming you do go for larger servers with higher player counts, and work out all the issues with the actual implementation of mechanics you chose… Well, there’s a ton of ways to deal with long term stuff, modern MMOs even give a few good ideas. But it will make cata a fundimentally different game. The whole reading or long term crafting problem can be handled how “logout” bonuses work, or long term away missions in a game like STO, I. E. you’d set your character to perform a certain activity while you’re logged out and for the next 24 hours they’d perform some combination of that activity and sleeping while you’re offline, in a sort of quasi space, with a chance to get a few injuries and degrees of success. But this would mean no more, for instance, preparation and read/craft cramming sessions, nor (for better or worse) zombie brutes (or hulks depending on how crazy your settings are) personally ambushing you at night on your first few days while you’re trying to read by a candle.

On the flip side, it also makes a ton of interesting changes. Construction suddenly becomes a HUGE part of the game, as players beging to cooperate with each other and try to “rebuild” the world. But then you’ve gotta decide how you want enemy AI to react to that. Zombies will probably attack more in force, and you’ll need to maintain perimeter defenses, invading alien species that are smart will probably try to group up and make coordinated attacks (likely programmed to do so when lots of players are detected active and in the area), etc. Things like farming become more lucrative, and you’ll see players starting to take up roles or jobs in order to get materials/work done for them, and suddenly an economy can form around people’s offline crafting activities… You’ll even see weird stuff like mutants taking up specific tasks like night hunting, or furred mutants seeing after food storage in frozen labs, etc.

But this is kinda what people are trying to tell you here. You actually don’t have a lot of the game’s developers, or developers period, onboard with this idea… And you need them. Lots of them. You need people who have actual coding ability on the boat and willing to go the whole ten miles for this sort of thing, because it’s frankly a huge, HUGE undertaking on a scale that would fundamentally change the game completely. And at that point, the question is do you really want this to be the future of Cataclysm, or do you want another game that’s like Cataclysm but built around an engaging online experience? Because I think the only way an online Cataclysm would survive past very early prototypes would be as a basically new game.

It’d also be an absolute bombshell of groundbreaking gameplay, but with innovation comes struggle and backbreaking work. All this talk is fun and stuff, but someone needs to pick up the tab.

That was an excellent description XaoG. I agree with pretty much every thing you said there, very well said.

i reposted your post in the game design thread, please delete it here, xaog.
i let profugo’s off-topic post pass because he pretended that it was relevant to the implementation but yours does not even come close to be about programming, no matter how many tech truisms and buzzwords you put in it.

[quote=“User, post:7, topic:12790”]i reposted your post in the game design thread, please delete it here, xaog.
i let profugo’s off-topic post pass because he pretended that it was relevant to the implementation but yours does not even come close to be about programming, no matter how many tech truisms and buzzwords you put in it.[/quote]

What? I agreed with XaoG because he expressed the difficulties I was trying to explain to you much better than I have so far.

And what he’s written there does indeed contain elements of implementation concerns, and belongs here. I’m starting to seriously think your trolling or something here, because your just spouting nonsense now, not to mention your “Administrator of the boards” attitude in regards to giving people “Passes”.

I don’t know if any admins are looking at this, but could we please get this thread merged with the other one User’s made. The leaping around is pointless and confusing, and this would belong more accurately in The Drawing Board, as no mod or contribution is being discussed here.

profugo i was talking about xaog’s post, not your agreement with him.
his post does not belong here.
mods, do not merge those threads. they are in separate boards for a reason.
profugo please stop trolling and sabotaging, you already killed one thread and are the reason why i created two new ones with separate topics.

I hate forum drama, but here we go.

XaoG made a huge, very wise detailed post, that my limited written english (and grammar) cannot fully appreciate. Those are REAL concerns, feet firmly on the ground. I understand too, that Profugo was trying to explain that.

User, we can get very excited about our own ideas, feel the urge to do something about it, tell people how it’s awesome, I get it. What concerns me, in this thread, is that you are being kinda bossy about it all, and having a generally bad attitude, I don’t know how to tell you differently.

I hate to be the person to tell you that, but this seems to be a kind of maniac episode of bipolar disorder. It seems you don’t want to see that at the moment, you don’t have the carisma, forum “political influence”, technical (real programming skills), and so on.

If you carefully appreciate the CDDA Github, you I’ll see how huge and difficult is to do even the tiniest of things.

It’s not that you have a bad idea. I guess we all would love to try a Cataclysm-Online kind of game.

Again, what concerns me is that something is going on in your mind that made you blind to the above mentioned things. Like, the way you are talking to people, the “thread cleasing” thing, and this is just the beginning.

As it probably sounds too invasive of my own, to make these kinda personal and sensitive critics, I profusely “beg your pardon”, my real intentions here is that you neither hurt yourself or blame the others if this project end’s up nowhere.

Forgive me for asking, AdonaiJr, but have you even looked at the posts and threads?
To me it seems like you somehow missed something.

The only “technical” “information” in XaoG’s post was “hey guys did you know some games use reality bubbles??? you gottsa be real careful with them!!!” which is ridiculously condescending of him and not even worth a comment.
The rest was game design related and similarly abstract truisms.

Please have the courtesy to not derail threads any further, especially if you do not know what you are talking about, AdonaiJr. I have so far refrained from touching the “report to moderator” button because I’m hoping you and profungo discover some sense of respect towards others in you but if you can’t deal with the anarchy then here is no place for you.
This forum has rules like “stay on topic”, yes? Or do I have to create an alternative forum just to be able to discuss an idea without getting spammed by trolls?

[quote=“User, post:11, topic:12790”]Forgive me for asking, AdonaiJr, but have you even looked at the posts and threads?
To me it seems like you somehow missed something.

The only “technical” “information” in XaoG’s post was “hey guys did you know some games use reality bubbles??? you gottsa be real careful with them!!!” which is ridiculously condescending of him and not even worth a comment.
The rest was game design related and similarly abstract truisms.

Please have the courtesy to not derail threads any further, especially if you do not know what you are talking about, AdonaiJr. I have so far refrained from touching the “report to moderator” button because I’m hoping you and profungo discover some sense of respect towards others in you but if you can’t deal with the anarchy then here is no place for you.
This forum has rules like “stay on topic”, yes? Or do I have to create an alternative forum just to be able to discuss an idea without getting spammed by trolls?[/quote]

User, you’re the one not showing any respect to anyone here. You’re being condescending. You are also being willfully ignorant of people who are trying to help you. I’m not here because I want to shit on your idea and giggle all the way to the bank. I’m here because I DO want to discuss possible implications of a multiplayer Cataclysm fork, or similar game. Instead, I’m being stonewalled, I’m being accused of killing a thread that was already dead for two years before being revived by you (Hint, it was dead for a reason I figure) and I’m being accused of trolling.

Even if we disregard the fact that I don’t feel that its a good idea at ALL to separate the concerns of gameplay from the concerns of implementation (To quote XaoG, “This is why you actually do need programmers at the idea stage, so you don’t overdedicate to a scheme that isn’t practical or possible.”), If you insist on the separation, you need to at least acknowledge the people who DO know more about actually implementing things are going to have things to say that are relevant that you may not recognize, because you do not know how to implement things. Your “prototype” is not a technical implementation test at all. A technical implementation test for the turn system would probably involve a couple mock clients sending randomized movement data to a server running the game session, and making sure it can fetch and respond to all these things appropriately, without suffering desync, and enforcing movement rules and whatnot. Because if the server code can’t do that, then real time turns and gameplay die right there, no matter how much you may want it. Your proposed prototype would be a gameplay mockup, as it attempts to show a single user how it might feel to run. If you insist on these separate threads, then I’d recommend you move that idea over there.

And that’s why implementation is tied so heavily to the gameplay features you can have. It doesn’t matter how clever your gameplay solution is to a problem, if the programmers cannot write it in a way that makes it work, the idea is dead. It will never be implemented, because the people who are actually writing the code cannot make it work. Getting more/better programmers is rarely an option, unless your willing to put money into the project. See the github’s code bounty section, there’s some real hard shit that needs some real clever people to fix it, to the point where people have offered cash to get it done. Another implementation issue is team cohesion. Even if the idea is doable, if the programmers don’t want to do it (If your idea would require an insane amount of work, even if doable, most hobbyist programmers are gonna balk) then a compromise is gonna need to be made on the idea. If you come up with genuinely the best idea in the world, and the programmers just say “Nah”, then there’s not much you can do.

Your complete disregard for the concerns of programmers, especially regarding the scale of this project (Quoting Coolthulhu here from the other thread; “Are you sure you have enough dedicated programmers to be able to pull that off?”) Is really off-putting as well. If you think being concerned about the reality bubble issue is “Condescending and not even worth a comment” then I can’t imagine how you’d react to getting into some of the real meaty issues waiting just beneath the surface in a multiplayer system.

I’m not trying to hurt you here User. I’m not trying to be intentionally rude or anything. I’m just getting frustrated with you. So far, rather than try and address concerns people have brought up, you’ve brushed them off, accused the comment of being unworthy of response, or accused it of being off topic. Your not inspiring any desire to work with you here. And before you accuse this of being off-topic, I’d argue otherwise. You see, we’ve found a notable implementation problem here, and the problem is how you’re responding to people. We’ll need to overcome that problem to be able to progress further.

sorry i can’t hear you over the sound of how successfully i’ve been at containing you in the containment thread. i’d have preferred to use it for constructive discussion and with your month-long experience of constantly posting in multiplayer threads i somewhat thought you might even be able to contribute here but it seems you just want to troll. anyway, as long as you do it only here that’s fine as nobody except you thinks that anyone will start coding this anytime soon, lol.

reading some random excerpts from your “contribution”

technical implementation test for the turn system would probably involve a couple mock clients sending randomized movement data to a server running the game session, and making sure it can fetch and respond to all these things appropriately, without suffering desync, and enforcing movement rules and whatnot.
oh wow I WOULD HAVE NEVER THOUGHT OF THAT!!!! THANK YOU SO MUCH!!!! :D :D :D

anyway, to stop you from running out of breath, handle this:
some guy suggested to not use the cata code but rewrite from scratch so all of your worries don’t apply. i wonder if we’ll get it done before christmas.

Having wasted most of my lunching time thinking wtf just happened in this thread (and others), In fact I’m pretty sure you are a full bloat troll, User. I can’t help myself not to guess that you are having some psicotic episode or drugs influence, really.

From now on, I’ll just watch the show on the various topics you are posting. You seemed like a reasonable guy, but yeah. The little bit of fun you are having, mocking us all, won’t last long though.

Have a nice Day! :wink:

[quote=“User, post:7, topic:12790”]i reposted your post in the game design thread, please delete it here, xaog.
i let profugo’s off-topic post pass because he pretended that it was relevant to the implementation but yours does not even come close to be about programming, no matter how many tech truisms and buzzwords you put in it.[/quote]
I wont be deleting anything. In fact, I’m really tempted to cross post my post into the original thread just to piss you off.

You clearly have some problems that you need to work on, and these are not your personal forums. Furthermore, if you don’t like the truth, that’s your business, not ours. But don’t expect anyone to take you seriously when you start trying to hand wave it away.

Christmas? Haha, hoooooooly shit. Not to mention thinking the server-client relationship worries won’t apply if you write from scratch instead is incredibly shortsighted at best. That said, now I am certain you are trolling. Go ahead, recreate a decade of cataclysm in less than ten weeks, without any consideration to the actual structure of it. Don’t know who the “we” is though, seems to just be you.

You want to add to that team? Go open up a github issue to start working out what needs to be done if you decide to use Cata as the basis for this. I’m sure they’d love to help you there. If you want to rewrite from scratch, its not really a Cata thing anymore. In which case, I’d recommend a separate forum, or a post in the other games section of the forum instead. Set up a github repository for that, get a couple programmers together, work out a list of requirements and mechanics, and the path should be mostly clear from there.

And this is just… Incredibly childish. You really need to get over yourself.

XaoG why do you think it would piss me off if you posted your game design posts into a game design thread?
i want you to post in the game design threads because you have good game design ideas.
this thread here is just so profugo stops spamming in the other threads, kind of the soft alternative to reporting him. i explained this before. are you alright?

Profugo, I’m sure we can easily achieve this, why do you think we can’t? I already wrote some Java and haven’t run into problems so far.

[quote=“User, post:17, topic:12790”]XaoG why do you think it would piss me off if you posted your game design posts into a game design thread?
i want you to post in the game design threads because you have good game design ideas.
this thread here is just so profugo stops spamming in the other threads, kind of the soft alternative to reporting him. i explained this before. are you alright?

Profugo, I’m sure we can easily achieve this, why do you think we can’t? I already wrote some Java and haven’t run into problems so far.[/quote]
I was talking about the thread that was over a year without a new post that you bumped, proceeded to try and boss everyone around, told people who dared bring reality into the discussion that they were off topic, called people weird while you were busy acting like a spazmonkey, and proceeded to try and push people into different threads because you didn’t like the way the discussion was going.

Honestly, I’m not entirely sure you aren’t trolling at this point, and if you start going on about reporting people I guarantee you’re going to piss off some of the regulars and possibly some mods. Have fun with that.

User, if you actually think another person here is being abusive, breaching forum rules, or is going off-topic to the point of social detriment/obscuring thread function, please follow through and use the report feature.
If you are just going to threaten the ability to sic moderators on issues you don’t think are report-worthy, please be aware that everyone has this function, but moderators and their time are finite. We’re not your personal guns on speed dial.

We’re people who are here because we choose to be, not a casual threat to leverage other people into cooperating with you.

Report actual problem users silently so as not to escalate the situation, and we will look into it when able. Otherwise, don’t backseat moderate. It’s not making people any more compliant.

I would like to note that this thread nor any posts in it were reported. I just personally resent being used as a hollow threat.