BenSeidel wrote:Zavian wrote:Also for players that don't have a good internet connection
Don't create systems to the lowest common denominator. If you apply this mentality to the graphics options then we would only have low-quality graphics. If some of your users are able to do something, but some aren't ADD AN OPTION.
Too many options are bad ui design. An option page with 10 different categories each with 20+ options overloads users such that they don't find the option they are looking for. That results in more posts to technical support and bug forums, about issues the users would otherwise have managed to solve themselves. They just didn't find the right option. (Alternatively some of them probably enabled an option that had detrimental effects that they didn't understand. When they come across the detrimental effect they then blame the developers and the game, not realising that they have enabled an option that isn't appropriate for their computer). Options are best saved for "we want to support X but we also need to support Y", and where X and Y are mutually incompatible.
Take graphics options. If the devs thought they could give everyone high res graphics, without running into memory/fill rate/performance issues and tanking the frame rate for players with older/slower GPUs, then I expect graphics options would consist of just fullscreen [yes/no], vsync [on/off] and UI Scaling factor []. Even then they would probably prefer to get rid of UI scaling if they thought they could. Almost all the graphics options are tweaks to reduce the load on older/slower/less powerful GPUs.
If you implement all the options someone suggests, then you end up with options to disable train deaths. Options to enable trains deaths even when friendly fire is off. Options so that if you get hit by a train you go flying (instead of dying), options so that if get hit by a train you remain standing on the tracks, and the trains just instantly stops. (Then options for the train to take damage in both those cases). Options for longer reach, longer mining range, smaller hitboxes (similar to squeak through). Player belt immunity, car belt immunity, electric power transmission costs, bots which can't be mined, biters ignoring bots that path over them;more inserters; less inserter; options to enable loaders; probably options to enable sideloading to compress belts, inserters compressing belts, inserting into undergrounds to compress belts, disabling/enabling belt braiding, disabling/enabling lane splitting using undergrounds.
Each of those options is more code the devs have to design, write, optimize, balance and maintain, and more code that potentially contains bugs that manifest when they change something else, or only appear with particular combinations of options. They make the code more complex, which means the devs are more likely to add new bugs, and break something whilst trying to fix/change something else. (Witness 0.16.3 breaking texture compression when the devs fixed another bug in the rendering pipeline).
None of this means the devs can't add an option for this if they want. But I wish people would stop with "That's a cool idea. I understand not everyone will want it, so the devs should make it an option". Lots of those cool ideas can be done through mods, and that adds a lot of good ideas to the game. But lots of them would require code changes to the c++ part of the game. And that's something that should only be done if the devs are convinced the change is worthwhile. (As I said earlier, and as i repeat in more detail down below, I don't think this will work well in practice for players with poor connections, and as such it isn't a good idea, but ultimately my opinion doesn't matter. The only opinion that does matter is the devs).
Instead look at it from an optimisation standpoint. If your Internet is bad then pinging all the servers is something you want to do! Otherwise you have to connect to each server, download & load the map before you are able to tell if the server is playable. In all cases waiting for all the pings to arrive back is better than even connecting to a single server.
Ping is a really important measure for any gamer. Please give us the option to auto-ping & sort by the servers ping.
First the last sentence. I've never really cared about ping times for factorio. All the servers I've played factorio on have been located in Europe or North America, with a roughly 250ms ping from Australia. Yet I hardly ever notice lag. Occasionally when fighting biters, or when I'm crossing train tracks and a train comes whizzing by, but most of the time I don't notice it. (Yes if this was a shooter or a fast paced action or rts game, then low lag would be more important, but in factorio I typically don't notice it). Much more important to me is such things as what type of map (railworld, or deathworld or some other scenario), what mods (vanilla, qol mods, or bobs+angels), how many players online now, how old is the map, what's in the server description, whether I need a password, and whether this a server, or a group of players I've played with before. (I do understand that for some players, especially those who do lots of fighting before they get fully equipped, that ping is more important. But for me it isn't important enough to ever want to sort by. Also you are aware that the in game browser will get the ping for any server, you don't need to download the map first?)
Only twice have I ever had an unplayable connections. Both time it was on servers located in europe I had played on many times before. Both times pings were normal. In both cases next day the same servers were fine.
Atm according to speedtest.net my upload speed is about 340 kbps. (I have an adsl connection that is theoretically 512kbps upload, but in practice I get less. Download speed atm is 3.4Mbps, though during off peak times, I often get 12Mbps down). Now if I understand my adsl connection properly, the smallest packet it can transfer is 48 bytes. Anything smaller will be padded up to 48 bytes (and anything larger will be broken up into multiple 48 byte cells). If the factorio developers were to ping every server as fast as my computer can send packets, my computer would probably be done in less than 10 ms. But it would take my modem roughly 1129 ms to transmit those packets. (Assuming 48 byte packets or smaller, we want to transmit 48 bytes x 8bits per byte x 1000 servers = 384000 bits. Upload speed of 340 bits per millisecond. 384000/340 =1129ms).
If factorio just sent the packets asap, and didn't add code to try to detect congestion, and then backoff and retest, then it will have no way of knowing whether a high ping of 600ms is because the round trip time to the server was 500ms, or because my upload speed is slow and the outbound ping spent 550ms waiting in my routers transmit buffer. (Also I have a router that does NAT. I have no idea how well it will handle 1000 outgoing packets to different ip addresses. It's at least possible that factorio would overflow it's address translation table resulting in factorio never getting replies to some of it's pings, and factorio needing to either retest, or assume that I can't connect to that server). The simplest way to get a rough ping time that is likely to resemble realistic in game pings would be to send 1 ping every 16ms. Even then you ideally want to send 3-4 packets per server spread over at least 500ms, otherwise a simple thing like windows checking for updates, or my email client downloading mail might temporarily fill my modems transmit buffer with 100ms worth of data at just the wrong time, and result in a server being listed with an inflated ping.
So if the ping time is going to be an accurate and reliable indicator of what I can really expect in game, then sending one packet every 16ms, Factorio would need about 16 seconds to test the ping of 1000 servers, even if it only sent one packet to each server. If it wanted something more reliable, then it would need, about 48 to 64 seconds, for 3 or 4 packets per server. Even 16 seconds is probably too long to wait for the ping column to populate. If I wanted this bit to be optimised, then for me the best way is to pick a server I'm interested in (server description, number of players, playtime of map, mods used), then if I want I can check the ping time right before I press connect. (I do get that other people may prioritise pingtime way higher than I do, but again, I don't think pinging servers is going to actually work well in practice, at least for people like me with relatively slow adsl connections).