How I would implement multiplayer in CDDA

lots of people request multiplier but few talk about how it could be done. One method using SDL_net would involved having it bound to the action keys. In this manner no network traffic is sent until someone hits a key, this will work as CDDA is turn based and not in real time, a simple 0.25 second timer can gauge weather or not other players have hit a key in the game as well, if they have not it could be considered that they passed (there could even be a sever setting to adjust this/always wait for their turn no matter what). From here its only a matter of sending the key bindings to the other connected machines to have them interpreted. Many commands such as wear and eat and wear don’t even need to be processed by the server as they don’t really effect the games state (just hey im using my turn for something this can be handled with basic inspect commands). basically it could send f, f, tile, to know you shot at a specific tile or smash tile/direction.

That’s the easy part, how do you handle things where time is experienced at different rates, such as crafting, reading, waiting, and sleep?
Those features are the reason we haven’t seriously looked into interactive multiplayer. If I were designing a cataclysm-like game for multiplayer I’d either eliminate these long term actions or turn them into rarely-used “downtime” actions that you’d queue up to do when you’re not logged into the server, or offload them onto other entities like NPCs so you can start one and then go do other things until it’s done. If it’s not obvious, doing all this stuff to DDA isn’t something we’re interested in.

If I were doing “multiplayer” for Cataclysm, the closest I would get is psuedo-multiplayer.

Periodically update the locations of each player in the world, from a central server, and treat them as regular mobs. Everyone is on the same map, etc. and certain player actions “change” everyone’s map (ie. everyone’s items are different in their own worlds, but certain player actions will add or remove items from their world).

You could make a classic MUD with a couple of thousand turns per day, whereas shelters are sanctuaries (no-PVP). The server can hold the world and some parameters for persistent monsters on a map square, so you don’t have to wait for your buddy fight off some mob you cannot see on your screen. You can even have some dummy NPCs this way.
On the other hand, this should override any Tired flags. Also, some encounter rating is needed based on current player equipment, and perhaps some dynamics with item spawns to prevent serious looting/reselling.
I think it’s lots of work, mainly due to the simple fact that you need to design a completely commited serverside app.

I would put IRC client on CDDA.

Games would be individual thus you would not have competitive/co-op in that sense but “survivor community” is online and reachable ingame.

The thing is … you need to have radio to listen to the “community broadcast” in-game and you need HAM-radio to be also to talk … All this in cost of batteries. When you open the radio game keeps going around you. If you go out of batteries you must scavenge some more to keep talking… Its still a singleplayer, but it has other players “mental presence” too… :slight_smile:

The idea with IRC is pretty neat!

Also, I think there was a pseudo-multi CDDA server once…

The IRC radio IS a pretty cool gimmick. Though it could be easily bypassed, by, you know…
actually using an IRC client…

And there WAS a Cataclysm pseudo-multiplayer server at some point.
Riiight here…

[quote=“Derschlact, post:7, topic:4131”]The IRC radio IS a pretty cool gimmick. Though it could be easily bypassed, by, you know…
actually using an IRC client…[/quote]

Well, just to make things a little bit complicated just for sake of making it complicated - client could ask randomized channel key from CDDA “main server”, channel key gets automatically changed every 20 minutes or so and CDDA client doesnt show channel key in clients but keeps it as internal data. That way the bare minimum to “come in” is to use custom client to access the channel key.

And you could auto-boot everyone who stays more than 6 hours automatically and set (temporary) IP based bans on the key server. They dont have batteries for it.

Its not foolproof but its quirky enough to promote “survival IRCing” :wink:

Oh. And unless you have very good gear (battery concuming) and electronics the client automatically corrupts your texts so its like “Hello static"ike, how’s your dastatic*” :wink: