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.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.
Friday Facts #76 - MP inside out
- vampiricdust
- Filter Inserter
- Posts: 317
- Joined: Wed Jan 14, 2015 1:31 am
- Contact:
Re: Friday Facts #76 - MP inside out
Re: Friday Facts #76 - MP inside out
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.Rakshasa wrote:It isn't original, EVE Online does the same thing to enable 3000+ player fleet fights.
Re: Friday Facts #76 - MP inside out
Maybe they want that Factorio game can be only hosted when you have 60 dual core processors and 4 Gb/s internet connection
Re: Friday Facts #76 - MP inside out
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
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
Re: Friday Facts #76 - MP inside out
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.
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.
Re: Friday Facts #76 - MP inside out
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.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.
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.
Re: Friday Facts #76 - MP inside out
Is this behavior still existing?
Re: Friday Facts #76 - MP inside out
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.Cloner wrote: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.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.
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.
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.
-
- Manual Inserter
- Posts: 1
- Joined: Tue Mar 24, 2015 5:15 am
- Contact:
Re: Friday Facts #76 - MP inside out
I love the technical posts to see how the inner workings of Factorio work.
Re: Friday Facts #76 - MP inside out
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 momentslpwnd 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.
Koub - Please consider English is not my native language.
-
- Manual Inserter
- Posts: 1
- Joined: Mon Sep 07, 2015 8:57 am
- Contact:
Re: Friday Facts #76 - MP inside out
Good Ideas! In Starcraft 1 it often was a pain to find who lags.Cloner wrote:Can we please also have the following information visible:
1. ping between each pair of peers
2. who is the slowpoke
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.
Re: Friday Facts #76 - MP inside out
I like this idea, and I think it could work with some minor variations.Dave_Scream wrote:And better check it before map download process, so server just reject player without disturbing others.
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.
-
- Long Handed Inserter
- Posts: 73
- Joined: Sun Sep 29, 2013 1:13 pm
- Contact:
Re: Friday Facts #76 - MP inside out
when you make new enemys? not interesting survive
my youtube chanel https://www.youtube.com/user/generalmeks