Friday Facts #76 - MP inside out

Regular reports on Factorio development.
User avatar
vampiricdust
Filter Inserter
Filter Inserter
Posts: 317
Joined: Wed Jan 14, 2015 1:31 am
Contact:

Re: Friday Facts #76 - MP inside out

Post by vampiricdust »

kovarex wrote:The main reason why we don't consider it to be fully internet ready is the latency. The problem is the delay between sending message and receiving it (ping time).

Solving this problem is the main part (apart making some better support for opposing teams) of the changes we plan for the 0.12.

The solution is to act like player started moving immediately, although the "real player" will start to move later. The mechanism needs to be simple, and there is never ever some kind of reversing, you really can't reverse in Factorio. The "ghost player" will just be reversed to the real player when he can't get to the position anymore, but this is mainly visual trick to make the game feel more responsive.
Now I suddenly want to have a ghost image moving ahead of where the real player is. Though, I had an idea for a small army of construction bots following you around, be fun to have the little army of bots moving ahead as the ghost and the player catches up as it confirms the commands. The resync would the bots running back to the player.
User avatar
Khyron
Fast Inserter
Fast Inserter
Posts: 178
Joined: Fri May 30, 2014 5:47 pm
Contact:

Re: Friday Facts #76 - MP inside out

Post by Khyron »

Rakshasa wrote:It isn't original, EVE Online does the same thing to enable 3000+ player fleet fights.
It isn't original, but you're way off in saying Eve Online works this way. Eve has a fundamentally server-client architecture. You can read more here.
FrozenOne
Fast Inserter
Fast Inserter
Posts: 177
Joined: Mon Mar 04, 2013 8:10 pm
Contact:

Re: Friday Facts #76 - MP inside out

Post by FrozenOne »

Maybe they want that Factorio game can be only hosted when you have 60 dual core processors and 4 Gb/s internet connection :mrgreen:
Cloner
Fast Inserter
Fast Inserter
Posts: 100
Joined: Tue Dec 09, 2014 12:59 pm
Contact:

Re: Friday Facts #76 - MP inside out

Post by Cloner »

It would be great if the game checked the connection of each peer to each other peer BEFORE downloading the map. Also, if some of the peers cannot connect to each other directly (one is in LAN other in WAN) it would be good if the game could find out the best route to relay the information from inaccessible peer to others.
With more players over the internet it will often happen that some data packet is lost between two peers – making a delay to resend that packet. Can you send redundant information if my connection allows it. For example I could send not only my actions to other peers, but also actions received from other peers. This way if someone didn’t receive the data from one peer directly he can use that peer’s data from me.

Can we please also have the following information visible:
1. ping between each pair of peers
2. who is the slowpoke
ofca
Long Handed Inserter
Long Handed Inserter
Posts: 77
Joined: Sat Feb 21, 2015 1:49 pm
Contact:

Re: Friday Facts #76 - MP inside out

Post by ofca »

I would really abstain from suggesting (obvious) features until at least 0.12. Due to the overall quality of the game, I strongly believe that reminder that this is alpha (unbelievable, right? ;p) is in order :)

There are already mechanisms in the wild, like host migration, dynamic proxies for nat traversal/latency reduction etc.; that's a large field, full of trickery and ideas -- coding net components can be fun and rewarding and I doubt that final iterations will be anything less than being on par with rest of the game :) - while the game is purely p2p now, I feel it won't stay like that for long; underlying protocol may be unchanged, but security/administrative features and notions of hosts/servers will probably come to life sooner or later.
Cloner
Fast Inserter
Fast Inserter
Posts: 100
Joined: Tue Dec 09, 2014 12:59 pm
Contact:

Re: Friday Facts #76 - MP inside out

Post by Cloner »

ofca wrote: while the game is purely p2p now, I feel it won't stay like that for long; underlying protocol may be unchanged, but security/administrative features and notions of hosts/servers will probably come to life sooner or later.
What people want is not a server-client model, what they want is a coordination server - an easy place to find games, and to leave a saved map for others to continue without the need to upload it. Everything else is better done in peer-to-peer for such large scale maps.

Server wont help the bad PCs - each time they cant process a tick you will have to send the whole map to them.
Server wont offer less lag - you have longer connection peer to server+ server to peer.
Server runing a game isnt nesesary for having a game lobby, leaving your map for others, controlling peers.
Metin200
Manual Inserter
Manual Inserter
Posts: 4
Joined: Sat Nov 01, 2014 11:13 am
Contact:

Re: Friday Facts #76 - MP inside out

Post by Metin200 »

Image Is this behavior still existing? :D
slpwnd
Factorio Staff
Factorio Staff
Posts: 1835
Joined: Sun Feb 03, 2013 2:51 pm
Contact:

Re: Friday Facts #76 - MP inside out

Post by slpwnd »

Cloner wrote:
ofca wrote: while the game is purely p2p now, I feel it won't stay like that for long; underlying protocol may be unchanged, but security/administrative features and notions of hosts/servers will probably come to life sooner or later.
What people want is not a server-client model, what they want is a coordination server - an easy place to find games, and to leave a saved map for others to continue without the need to upload it. Everything else is better done in peer-to-peer for such large scale maps.

Server wont help the bad PCs - each time they cant process a tick you will have to send the whole map to them.
Server wont offer less lag - you have longer connection peer to server+ server to peer.
Server runing a game isnt nesesary for having a game lobby, leaving your map for others, controlling peers.
Just a quick comment. We have stated multiple times that we don't intend to change the Peer2Peer model because of good reasons (transferring map state is too big). However that doesn't mean there won't be a "Matching server" in the (not so far) future. Something like Battle.net for Starcraft (conceptually - it will start very small=)). Basically a place to connect and find people to play with. This falls into "improving the multiplayer" category.

Other thing is servers that would hold a game and you could simply connect / disconnect. This is till Peer2Peer as the server is just another peer. The difference would be that it would run the game on a known address and the whole business of players getting organised to play the game would be gone. Just connect /disconnect.

Also while still being Peer2Peer using some relay servers to help cross inefficiencies in the network or problems with addresses is also a possibility.
windowslasvegas369
Manual Inserter
Manual Inserter
Posts: 1
Joined: Tue Mar 24, 2015 5:15 am
Contact:

Re: Friday Facts #76 - MP inside out

Post by windowslasvegas369 »

I love the technical posts to see how the inner workings of Factorio work.
Koub
Global Moderator
Global Moderator
Posts: 7784
Joined: Fri May 30, 2014 8:54 am
Contact:

Re: Friday Facts #76 - MP inside out

Post by Koub »

slpwnd wrote: Just a quick comment. We have stated multiple times that we don't intend to change the Peer2Peer model because of good reasons (transferring map state is too big). However that doesn't mean there won't be a "Matching server" in the (not so far) future. Something like Battle.net for Starcraft (conceptually - it will start very small=)). Basically a place to connect and find people to play with. This falls into "improving the multiplayer" category.

Other thing is servers that would hold a game and you could simply connect / disconnect. This is till Peer2Peer as the server is just another peer. The difference would be that it would run the game on a known address and the whole business of players getting organised to play the game would be gone. Just connect /disconnect.

Also while still being Peer2Peer using some relay servers to help cross inefficiencies in the network or problems with addresses is also a possibility.
I think it's the main reason why people keep asking when/if the game will be released on Steam : I don't know what proportion of Factorio players also use Steam, but a vast majority of people I know from gaming on the Internet also use Steam. Steam has a huge community, with already many features going towards sharing with friends and with the community, and playing with the community, ... I don't know how easy (or not) it is as a developper to adapt one's game to Steam in order to use these features, but I guess it would spare a lot of time and money (especially in the upkeep of the infrastructure. On the other hand, Steam started like that, it might be the first step to create yet another platform, grow big, become The Steam killer, and take over the world mouahahahaha. Well I might have lost the track of my thoughts at one moment :mrgreen:
Koub - Please consider English is not my native language.
Dave_Scream
Manual Inserter
Manual Inserter
Posts: 1
Joined: Mon Sep 07, 2015 8:57 am
Contact:

Re: Friday Facts #76 - MP inside out

Post by Dave_Scream »

Cloner wrote:Can we please also have the following information visible:
1. ping between each pair of peers
2. who is the slowpoke
Good Ideas! In Starcraft 1 it often was a pain to find who lags.

Also for server I want the option that will reject connection from clients with latency higher than I set. And better check it before map download process, so server just reject player without disturbing others.
maxdeliso
Manual Inserter
Manual Inserter
Posts: 2
Joined: Sat Mar 19, 2016 11:19 pm
Contact:

Re: Friday Facts #76 - MP inside out

Post by maxdeliso »

Dave_Scream wrote:And better check it before map download process, so server just reject player without disturbing others.
I like this idea, and I think it could work with some minor variations.

Due to the Lockstep architecture, as I understand it, what matters is not just the network latency between the master and each peer, but also how long it takes for each peer to update their game state. A slow peer will degrade the experience for a group if it lowers the current average time to send back an updated game state, either due to a slow network or due to a slower than average CPU clock speed. I think it's difficult to determine whether a peer is going to degrade the average update interval before they even connect. Also, each node on the network will see different performance relative to the master. As mentioned in this thread previously, some tricks are employed to exploit this relativity to give the illusion of responsiveness by speculatively updating the local game state, essentially betting that the update will succeed soon and accepting the fact that two nodes will be temporarily out of sync. This speculative updating could complicate the perception of decreased performance by a human player.

Taking all this into consideration, I think one strategy that might work is for each node to keep some measurement of the update interval over time. After each new player connected, once the variance was sufficiently low (due to sufficient time passing), this number might somewhat accurately represent the current total performance of the game for each node. If, after a player joining a public large multiplayer game, enough players saw a decrease in their current total performance beyond some threshold, their clients could vote (automatically) to kick the slow peer for lagging. If the threshold was met, the master would carry out the kick with some automated message. This would essentially automate the process of a slow peer connecting, everyone complaining, and then that peer getting kicked.

A lot of problems with this approach come to mind. First, how to pick the arbitrary acceptable threshold which accurately captures the acceptable performance difference (how much slower is too much slower), and how long to wait before calling for/collecting the votes. Also, if many people are joining and leaving frequently, the system may not settle long enough to get accurate measurements. Finally, if there was some temporary network event that hindered communication for a subsection of the network temporarily, depending on the time interval, they might get kicked. None of these problems seem insurmountable, though. There may be other approaches that are similar to this one that are better.

Could this be written as a mod? I actually looked in the Factorio Mods listing for something like this but did not find it. If it does exist, someone please let me know. It would help with the situation where someone is hosting a public game and then a slow peer connects and degrades the experience for many, requiring manual intervention.
generalmek
Long Handed Inserter
Long Handed Inserter
Posts: 73
Joined: Sun Sep 29, 2013 1:13 pm
Contact:

Re: Friday Facts #76 - MP inside out

Post by generalmek »

when you make new enemys? not interesting survive
Post Reply

Return to “News”