Friday Facts #46
Posted: Fri Aug 08, 2014 7:09 pm
The usual wall of text describing what we have been up to: http://www.factorio.com/blog/post/fff-46
hehe, indeed.Lone_Player wrote:Look´s more like kovarex, take´s a close look at the network stuff. Surrounded with Green & Red Wires. Now where ist the chest....
If they want semi-decent internet in Australia they're going to have to take to the streets at this point. Australia and Canada are two countries where I'd expect proper infrastructure but instead they have horrific cable monopolies worse than here in the U.S.bobingabout wrote:The main question I have is how will the game perform when I try to play a multiplayer game with my friend.
I live in Britain, with a local ISP monopoly who have recently started providing Fibre to some areas, on a system that was already very strained and throttled to provide ADSL, now it's even worse.
My friend lives in Australia, literally the other side of the planet, and his local ISP monopoly is even worse. Aparantly, Sony tried to set up a server in Australia, and an admin wrote in the local chat "HOW CAN YOU LIVE WITH THIS SHIT!!!". that basically describes australian internet access. I think my friend has something like a 100kbps upload speed, thats kilobits, mine is supposed to be 1Mbps up and 8Mbps down, but last time I checked it was only 500kbps up, due to poor line quality.
we were having an unplayable multiplayer game of UnEpic together the other day, I'd swing my sword, and it would take about 2 seconds to actually swing, and then it went link dead.
so just to see how the link was, he pinged me. It wasn't a problem with the line, he said it was 280ms, thats a new record for his connection to mine. INSANELY FAST!!! 400ms is normal.
So... keeping scenarios like this in mind, how playable do you think multiplayer factorio would be between us?
As for (2) I would expect quite unplayable. A friend of mine lives in a part of the country where internet connectivity is quite poor and our internet situation is similar to yours and your friend's. We can barely play awesomnauts with 3 players in game and once player no. 4 joins is a lag-fest at its finest.bobingabout wrote:/snip
something like a 100kbps upload speed, thats kilobits, mine is supposed to be 1Mbps up and 8Mbps down, but last time I checked it was only 500kbps up, due to poor line quality.
/snip (1)
he pinged me. It wasn't a problem with the line, he said it was 280ms, thats a new record for his connection to mine. INSANELY FAST!!! 400ms is normal.
(2)
So... keeping scenarios like this in mind, how playable do you think multiplayer factorio would be between us?
Like the auto save lag since 0.10 which I blame on replays. 0.9 saves were much smaller, too, 6mb in 0.9 vs 124mb in 0.10 for a much bigger factory. I blame that on replays, which I would love to disable, and, hopefully, tons of debug data which will vanish in time.from the usual wall of text wrote:Big annoyance at the moment, which prevents us from "playing more", is very frequent waiting for the other peer (which results in pausing the game for fraction of a second). In theory this should happen only occasionally due to the network lag, but now it happens pretty much all the time
Theory means that you know how it works but it doesn't.from the usual wall of text wrote:In theory this should /snip
Only the regular synchronization heartbeats (couple of bytes) and player inputs (only when player does something) will be transmitted over the network. The estimate is that this will add up to couple of kilobytes per second.mrrobot wrote:When I learned about this game it said "single-player" then I read about multiplayer in the FAQ and I was all excited. However after I learned about the decision for a peer-to-peer setup my hopes of being able to play it in multiplayer tend to go against zero.
I just can't see it working in this scenario. There's so much going on in the game that has to be kept in sync which reminds me of two games that failed to do it. One being Anno 16- or 17-hundred-something where they promised to implement MP but due to massive de-sync in game that promise was dropped. The other game being settlers 4, I believe. That was quite funny in a sad way. Sad because it was a LAN game and funny because it was de-synced so much that the game I played and the game my friend played were completely different. There was a forest in his dimension that I had chopped down to the last tree and our settlement flourished and thrived in my dimension and we were very close to kick the enemies rear and win the game when suddenly I heard my friend telling me it was game over because the enemy had defeated us.
The way I understand it is, with an example of a 4 player coop session, that there are 4 versions of the game running on 4 PCs. Each doing their own thing and syncing as much as possible everyone from and to everyone else. But you can't sync everything for everyone, thinking about a conveyor line that stretches for a few kilometers covered with ore - like several thousand bits of ore, mine fields, biters, hundreds of drones, etc. pp., each being an entity of its own - unless you've got a GB connection. That means the clients have to be running game logic by themselves which means duplicated effort. 1 world is simulated on 4 machines. Which will either result in a complete lag-fest or de-sync in the extend as described above and/or both. I guess there's a reason why peer-to-peer games that support more than 4 players are hard to find.
Edit: I mean MMORPGs use a client-server architecture for a reason.
We are counting with latency of about 100ms, but this will be (later on) customizable. Though the latency will be the same for all the players in the game (so if one has slow connection the others will be slowed down as well).mrrobot wrote:As for (2) I would expect quite unplayable. A friend of mine lives in a part of the country where internet connectivity is quite poor and our internet situation is similar to yours and your friend's. We can barely play awesomnauts with 3 players in game and once player no. 4 joins is a lag-fest at its finest.
The situation is quite similar for warframe - 3 players barely playable and no. 4 turns it into a lag-fest.
And about all the other peer-to-peer games we've had tried to play.
It doesn't matter that much where on the world you're located but what's in between point A and point B. I get a worse connection with my brother only 2 hours by car away, latency of 150-250 ms is usual, than to most places across the ocean all the way to the USA, latency of 50 ms is usual.
Client server wouldn't work simply because the game state is sooo huge. Think of all the entities on the transport belts. Therefore we believe that the "lock step" multiplayer model is the only viable for us.mrrobot wrote: I'm sorry, devs, for the lack of confidence in your decision but I just can't understand why you didn't decide for a client-server setup where the world simulation runs on one dedicated server with broadcasts of the state of the world and the clients making requests to the server about how they want to interact with the world. There's no need to wait for a reply to a can-I-walk-here request but instead update the real position is it wasn't possible, for instance. I know, easier said than done and all that(tm) and server-client has disadvantages of its own. It's just the way I would go about it. You've thought this through and didn't make this decision by tossing a coin so we'll see how it turns out in the end![]()
This however confirms my fear about de-synced games, as in a Settlers kind-of-way.slpwnd wrote: Only the regular synchronization heartbeats (couple of bytes) and player inputs (only when player does something) will be transmitted over the network. The estimate is that this will add up to couple of kilobytes per second.
However, network latency is something beyond the player's control. So if you update per tick, bad latency sounds like the game will be slow motion on latency worse than 100 ms. Fair enough as long as it's stable, i.e. I'd prefer a stable (if need be) artificially worse latency of ~180 ms than some jumping latency between 75 ms - 150 ms or rubber-banding or stuttering and the likes.slpwnd wrote: We are counting with latency of about 100ms, but this will be (later on) customizable. Though the latency will be the same for all the players in the game (so if one has slow connection the others will be slowed down as well).
That's what I'm saying. It's a huge simulation with potentially hundreds of thousands of entities. That's why I thought it would be more feasible to broadcast it like a radio station stream. But eventually it would be too much to handle. I can see your reasoning.slpwnd wrote: Client server wouldn't work simply because the game state is sooo huge. Think of all the entities on the transport belts. Therefore we believe that the "lock step" multiplayer model is the only viable for us.
Right now we only have one player starting the game and others joining at any time.mrrobot wrote:Are you planning on support for logging off a game and later rejoin after the game moved on ? Or even new players join a game at an arbitrary time ?
You rock! Awesomecube wrote:Right now we only have one player starting the game and others joining at any time.mrrobot wrote:Are you planning on support for logging off a game and later rejoin after the game moved on ? Or even new players join a game at an arbitrary time ?
I kind of wonder if by "peer to peer" they meant "client server" to begin with. It makes sense from a coding standpoint to have one host and a bunch of clients that connect to them. This is how, for example, Warcraft 3 worked.shadoh wrote:I hate peer-to-peer, trying to play Command & Conquer 3 on multiplayer is plagued with connection issues. I know 3 people who would have played that game if it weren't for issues such as that. We ended up having a few games over VPN (such as hamachi, OpenVPN, tunngle) but those programs are so hackish, wish it just worked properly.
Will it be possible to perhaps get around the connectivity issues by having the client-server model as an option?
Maybe have it automatically fall-over in to a client-server model if peer-to-peer fails to connect.
Here's my idea of how the fail-safe mode could work:
* client fails to establish connection to every other player (even if one connection fails)
* client connects to a primary player, who is the only one who really needs to do port-forwarding or UPnP stuff
* client directs all traffic to that primary, and the primary forwards his net messages to the other players.
* internally1 the other players would know about his fail-safe status, and not try to connect to him.
* the primary would then send other players status updates to the fail-safe player
1By internally I mean the players wouldn't know unless perhaps they checked the connection quality screen (or something similar), perhaps a message in the chat box upon connecting as well.
For me and every friend I know who plays Command & Conquer 3 (Tiberium Wars), nobody has any problem with hamachi or connection issues. C&C 3 is one of the games which work very well with Hamachi, unlike some others like Far Cry 2. I can't remember ever having problems with the game. (But maybe my brain is just a little forgetful... :> )shadoh wrote:I hate peer-to-peer, trying to play Command & Conquer 3 on multiplayer is plagued with connection issues. I know 3 people who would have played that game if it weren't for issues such as that. We ended up having a few games over VPN (such as hamachi, OpenVPN, tunngle) but those programs are so hackish, wish it just worked properly.
I assume that if someone is cheating, the game will desync and everyone reloads from the host. You have to trust the host of course, but that's the same as trusting the server.Glyph wrote:When MP servers become popular, P2P opens up all sorts of security issues, along with the standard sync issues it can cause.
In true P2P there is no host, correct?DaveMcW wrote:
I assume that if someone is cheating, the game will desync and everyone reloads from the host. You have to trust the host of course, but that's the same as trusting the server.