aclist / dztui

DayZ GUI server browser and frontend for Linux
https://aclist.github.io/dzgui/dzgui
GNU General Public License v3.0
79 stars 9 forks source link

Failed to fetch server modlist #128

Open Mirkadoi opened 1 month ago

Mirkadoi commented 1 month ago

I want to play DayZ from two devices, a computer and a Steam Deck, both at home and in a coworking space. DayZ has an issue where if you connect from one router and then try to log in from another, the server in the launcher gets blocked. I thought that a direct connection via dzgui on the Steam Deck would solve this problem. However, I get the error "Failed to fetch server modlist" when trying to join a server.

I checked. I brought the Steam Deck to the coworking space and connected from the same network as my computer – everything works. The problem starts when the server in the launcher is blocked at home, from a different network. Is there any way to fix this?

aclist commented 1 month ago

Thanks for the ticket. I'm not sure I fully understand the network topology being described here. To confirm:

  1. You want to connect simultaneously from a desktop and a Steam Deck located at home on a different network
  2. You want to connect simultaneously from a desktop and a Steam Deck located at work on the same network

It wasn't clear from the second paragraph, but it sounds like when you attempt to tunnel to home from work, it worked? Or did you mean that you are using the work network?

When you attempt to connect from work while a computer at home is already connected to the same server, it fails.

Is this correct?

From what I understood, you are trying to use the same Steam account to connect to the same server, albeit on different networks. This means you are functionally using the same Steam ID over Steamworks, and I'm not sure if this can be expected to work reliably, since two instances of the same Steam ID should not be able to connect to the same server simultaneously, regardless of what network they are on.

It sounds like when you brought the Steam Deck to work, you were simply tunneling your home network and connecting via your usual Steam ID, which is mirrored on the Steam Deck, and your other PC was not physically connected to the same DayZ server.

There are a few things we need to untangle here, since they are unrelated:

DZGUI does not connect directly to servers; it prepares the launch parameters for Steam to do so, and hands off this request to Steam. It is not possible to connect "directly" to DayZ servers without the intervention of Steam, due to the way the Steamworks API is implemented in games.

The "Failed to fetch server modlist" occurs when A2S queries to the server fail to resolve. This sounds like a separate issue, as it's merely a low-level server query that returns an information payload, and shouldn't be blocked by the remote server regardless of whether you're logged in elsewhere or not.

Mirkadoi commented 1 month ago

Good day. Thank you for your response to my ticket. I would like to describe my situation in more detail.

I have two devices. One is at work in a coworking space — a PC running Windows. The other device is at home — a Steam Deck. From time to time, I play DayZ at work on my Windows computer on a specific server, for example, server A, which has about 15 mods.

When I come home, I sometimes want to play on the Steam Deck. Using the standard launcher, I launch DayZ to check that everything is fine and the game starts. But in the server list, the server I played on from the computer is blocked.

I have researched several forums and, as I understand it, this is an issue with the standard launcher, which blocks the server, makes it gray, and puts a lock icon on it. Perhaps this is a low-level request problem. If I am correct, for example, with the SA launcher, there are no such problems on the PC. I can also join the game if I press "Play," having previously added the server parameters to the launch options to start the server directly. I tested this yesterday with a separate Linux plugin that fixes mod loading for DayZ, but it has its own drawbacks.

However, I noticed that if the server is blocked in the launcher, I cannot connect to it through DZGUI. An error "Failed to fetch server modlist" appears. But if I run DZGUI on the Steam Deck at work, on the same Wi-Fi point, everything works. I tested this when I brought the Steam Deck to work, and, being in the same network connected to the same Wi-Fi, the server was unblocked.

I emphasize, this is not a simultaneous launch, not streaming, or anything else. This is a separate launch on different devices but under one account. When I launched the game from the Steam Deck, the computer was turned off, and vice versa.

The problem appears at home when I connect through the home Wi-Fi, as I played at work before that. This problem also occurs if at work I switch Wi-Fi from the shared Wi-Fi to, for example, the phone's Wi-Fi.

Thus, I conclude that there is a network influence and possible internal problems of the game itself with determining the router or API, and this may affect A2S.

aclist commented 1 month ago

Thank you for the additional details. This is indeed an interesting (and tricky to diagnose) problem, but I understood the basic conditions under which it occurs now.

It's indeed quite peculiar that the server would remain locked after quitting the game on your work PC and trying to launch it at home.

Just to reduce the possibility of false positives: if time elapsed between when you connected on the work PC and the home Steam Deck, it's indeed possible that the server might have become locked due to some external factor (e.g., server owner is rebooting the server, some other reason to manually lock the server). For example, you last played at work at 17:00, then you attempt to play at home at 19:00. It's not unreasonable to assume that a server may have gone "offline" or been "locked" during the span of two hours. In fact, many servers get taken offline/rebooted throughout the day for different reasons.

However, you said that you can directly connect to these servers in the official launcher by skipping the server browser, so it seems these servers aren't actually offline, and the padlock is in fact erroneous. (I.e., a bug) The servers are online, but some anomaly is preventing them from being queried using the usual protocol.

Does this sound similar to your issue: https://steamcommunity.com/app/221100/discussions/1/3735205790465975489?

I think it is as you said: a bug in the DayZ server implementation itself that is periodically causing servers to stop responding to A2S queries, or which is saddling the network so your machine can't reach the remote one in the normal fashion. The DayZ official client uses A2S queries for its own server browser, of course. As does DZGUI. Incidentally, in the Steam thread above, users reported that the same problem can happen with DZSA (DZSA also uses A2S. It's how DayZ servers communicate with clients.)

To oversimplify, it seems like the server intermittently stops recognizing A2S requests, so DayZ sees it as "grayed out" or "locked", and DZGUI gets no response when making the modlist request. (DZGUI will not attempt to connect to a server unless it knows what mods it needs--this is mandatory.) A2S is actually a protocol designed by Valve, but Bohemia has made its own custom implementation and does some underspecified things like stuffing large binary payloads in the A2S responses. It may be that the DayZ version of A2S behaves erratically at times.

According to the thread above, users found success by spamming the server until it finally started responding to requests and appeared "unlocked". I think if you tried the same approach and waited a bit in between requests, the server might eventually stabilize.

As for why the servers seem to stop responding and why it works at the office and not at home, I'm remembering something else now: DayZ is known to have a handful of strange bugs around DNS resolution and packet handling, particularly on Wi-Fi. Take a look at this post, reproduced below:

When I first read this post I was extremely skeptical of the claims that DayZ was literally causing people to lose all internet connectivity. Then I checked my pfSense firewall state table after a DayZ server list query and I can see why some people might be having problems. DayZ make lots of UDP queries which any stateful firewall is going to track as a separate connection (entry in the state table).

http://imgur.com/PAGivbM

The above shows a 'baseline' state table size of 231 entries on my home firewall/router. It also shows a state table size of 5008 entries during a DayZ server query.

I don't know what an average state table size is for most home router/firewall devices but my guess is that some are quite small relative to the number of 'connections' DayZ establishes while querying servers.

TL;DR See pic. DayZ server queries might legitimately overwhelm some home router/firewall devices.

Roughly speaking, DayZ seems to push an unnecessary amount of packets that flood the network to a degree that most consumer Wi-Fi routers can't handle, so these packets get dropped. I've seen variations of this problem reported by Steam Deck users on Wi-Fi. They get intermittently kicked from the server after their network times out due to a flood of packets. Depending on the setup, an ethernet connection could have more headroom to allow for excess packets, whereas the tolerances on Wi-Fi are lower.

I suggest testing at home on Steam Deck but tethered to the ethernet. If this works, my next suggestion would be checking the Wi-Fi router's configs to see if you can allow more headroom for incoming packets or open connections. You could also check your network traffic logs to see if there is a flood of activity beyond the norm when using DayZ.

Obviously, Steam Deck is designed to be used without an ethernet cable, so this is a tricky problem, but trying to push your Wi-Fi router up to a higher (enterprise level) tolerance on simultaneous connections should resolve the issue. I don't think we can hold our breaths for Bohemia fixing this, since the problem seems to have been around in some form for 10+ years.

Let me know if anything remains unclear here.

Mirkadoi commented 1 month ago

I would like to clarify that I feel this problem is somehow related to DayZ remembering the address or router from which you connected to the server, and when logging in from another location, the server gets blocked. The server admin said that another launcher would help, but since you say this issue exists for others as well, it is probably an A2S problem. I don't understand the cause, but I would like to add that I asked my friend, who plays with me on the same server and only plays from his computer, to disconnect from his internet cable and connect through phone Wi-Fi, and his server also became blocked. However, this does not prevent him from joining the server directly, for example, through the "Play" button. Can't the DZGUI logs provide additional information? Do you know if there is an official DayZ forum where I can inquire about A2S and server blocking?

aclist commented 1 month ago

I would like to clarify that I feel this problem is somehow related to DayZ remembering the address or router from which you connected to the server, and when logging in from another location, the server gets blocked.

Right, this is an interesting data point. So this only happens on the last server you connected from a different network/device?

I asked my friend, who plays with me on the same server and only plays from his computer, to disconnect from his internet cable and connect through phone Wi-Fi, and his server also became blocked. However, this does not prevent him from joining the server directly, for example, through the "Play" button.

It could also be localized to certain servers, but I think there is something deeper here, since it seems to be a recurring problem for users in different scenarios.

Can't the DZGUI logs provide additional information?

We can craft a query command that would give us a traceback, but A2S responses tend to be pretty terse, so I think there won't be a lot of actionable info in there. Still, it could be useful if reporting it to Bohemia. Usually DZGUI discards the trace if the server failed to respond.

import sys
import a2s
from a2s import dayzquery
sys.path.append('a2s')

ip = sys.argv[1]
qport = sys.argv[2]
info = a2s.info((ip, int(qport)))
print(info)

Do you know if there is an official DayZ forum where I can inquire about A2S and server blocking?

Bohemia maintains a public bug tracker where you can search for/file tickets, but be warned that there is a huge volume of information there and it could be like searching for a needle in a haystack: https://feedback.bistudio.com/

Mirkadoi commented 1 month ago

Right, this is an interesting data point. So this only happens on the last server you connected from a different network/device?

Several servers. I have logged into all these servers from the computer. On the Steam Deck, they are blocked into luncher.

Copy the results of the traceback (error message) and submit on this thread.

I will try to send the results within 1-2 days.

Bohemia maintains a public bug tracker where you can search for/file tickets, but be warned that there is a huge volume of information there and it could be like searching for a needle in a haystac

I will check later to see if this can help me. Thank you.

Mirkadoi commented 1 month ago
python3 test.py 185.189.255.73 27016
SourceInfo(protocol=17, server_name='!*ВДАЛИ от ЖЁН Chernarus*! 1 [PVE] [vk.com/vdzh_pve]', map_name='chernarusplus', folder='dayz', game='DayZ', app_id=0, player_count=39, max_players=60, bot_count=0, server_type='d', platform='w', password_protected=False, vac_enabled=True, version='1.25.158396', edf=177, port=2808, steam_id=90199721427200008, stv_port=None, stv_name=None, keywords='battleye,external,privHive,shard,lqs0,etm2.940000,entm7.250000,mod,03:06', game_id=221100, ping=0.11541503499938699)

Hello, It seems like there is no useful information here. :(

Mirkadoi commented 1 month ago

Most likely, this is some peculiarity in how DayZ parses data. I found a small topic on this issue.

Is it possible to add a third-party method for fetching mods, or a force connect button, like in the launcher, using launch parameters? If the mods are not installed, the game will load but won't let you in; this probably can't be improved.

aclist commented 1 month ago
python3 test.py 185.189.255.73 27016
SourceInfo(protocol=17, server_name='!*ВДАЛИ от ЖЁН Chernarus*! 1 [PVE] [vk.com/vdzh_pve]', map_name='chernarusplus', folder='dayz', game='DayZ', app_id=0, player_count=39, max_players=60, bot_count=0, server_type='d', platform='w', password_protected=False, vac_enabled=True, version='1.25.158396', edf=177, port=2808, steam_id=90199721427200008, stv_port=None, stv_name=None, keywords='battleye,external,privHive,shard,lqs0,etm2.940000,entm7.250000,mod,03:06', game_id=221100, ping=0.11541503499938699)

Hello, It seems like there is no useful information here. :(

This indicates that the server was in fact reachable. Did it show as locked before you ran this test?

Most likely, this is some peculiarity in how DayZ parses data. I found a small topic on this issue.

This is no longer relevant, DZGUI fixes this problem. I mentioned this earlier in this topic when talking about binary data stuffed in A2S payloads.

Is it possible to add a third-party method for fetching mods, or a force connect button, like in the launcher, using launch parameters? If the mods are not installed, the game will load but won't let you in; this probably can't be improved.

I understand the temptation to go this route, but Steam requires us to pass ahead of time the IDs of mods as parameters when connecting to a DayZ server. That is the fundamental reason for DZGUI's existence. If the server does not tell us what mods it has, we cannot even launch it correctly through Steam. It's not about fetching or not fetching the mods (you can already have them installed), it's about telling Steam which mods we are about to load. And it's not practical to store this information as a manifest, because it's liable to change in the future.

aclist commented 1 month ago

Take a look at this setting:

Steam > Settings > In Game > Server browser pings/minute

The default is Automatic (5000). This could be maxing out your router when using Wi-Fi. You said that when you check the server browser in the DayZ client, the server is locked, and then you open DZGUI alongside that, and DZGUI also fails. If you have the server browser open on the DayZ client, the server browser is known to use a large number of concurrent connections. By the time you reach DZGUI to make the query, your router is probably maxed.

Try setting the server browser max pings to a lower number (e.g. 250 or 500) and go out of the DayZ server browser before opening DZGUI. Keep lowering this number until you get a satisfactory result.

Ideally, you should not be using the DayZ server browser inside the game at all.

Mirkadoi commented 1 month ago

Did it show as locked before you ran this test?

Yes, it was. Into launcher.

It's not about fetching or not fetching the mods (you can already have them installed), it's about telling Steam which mods we are about to load.

Can the force launch be done not through Steam, but for example through the DayZ executable file? Because if not, it seems like there is no solution to the problem.

Take a look at this setting

I have already tested this theory through the launcher. It was one of the first solutions I tried. The servers were still blocked in the launcher.
Interestingly, sometimes the servers just don't show up, but this happens regardless of the settings.

Is this parameter important for DZGUI to work? I haven't tested the value 250 or 500 with DZGUI.

aclist commented 1 month ago

Did it show as locked before you ran this test?

Yes, it was. Into launcher.

OK. I'm still thinking about it.

Can the force launch be done not through Steam, but for example through the DayZ executable file? Because if not, it seems like there is no solution to the problem.

Essentially, no. DayZ depends on certain Steam integrations.

I have already tested this theory through the launcher. It was one of the first solutions I tried. The servers were still blocked in the launcher. Interestingly, sometimes the servers just don't show up, but this happens regardless of the settings.

Noted.

Is this parameter important for DZGUI to work? I haven't tested the value 250 or 500 with DZGUI.

It should be irrelevant to DZGUI, since DZGUI does not use the same Steam interface for servers and it does not crawl them one at a time. I was just speculating that having the official DayZ launcher open is blocking the network and having a side effect on DZGUI.

The problem I'm seeing is that in order to check if the server has a "lock icon", you are opening the official DayZ server browser, but opening the official DayZ server browser may be throttling your network. It'd be best to see whether this is still happening when DayZ official client is not opened at all.

Suggested steps:

  1. Make sure DayZ vanilla client server browser is not running
  2. Wait for network to stabilize
  3. Open DZGUI and check if you get the "Failed to fetch server modlist" error
  4. Run the test.py command
  5. If the command works, run the following from that directory: python3 query_v2.py IP PORT rules
  6. If the command in number 5 works, there is no reason DZGUI should fail to find the modlist.

Finally, I might suggest using something like openwrt (open source router firmware) to expose more granular settings on your router, if it supports this firmware, and playing around with adding more headroom.

I'm just trying to eliminate options here, can't say definitively what the root cause is yet. With the server you linked, I am able to fetch the modlist without problems, so I do think the issue is localized to your network topology. But like I said, if item number 5 in the steps above works, there is no rational reason the modlist should not work.

Mirkadoi commented 1 month ago

I'm just trying to eliminate options here, can't say definitively what the root cause is yet. With the server you linked, I am able to fetch the modlist without problems, so I do think the issue is localized to your network topology.

I will try what you suggested later. Thank you.

Regarding access to my server - you will definitely have access to it. The problem is not with the server, but with accessing the server where you play from a different IP. Moreover, it's not clear if simply logging in and out of the server is enough to reproduce the issue or if you need to play for a while. Can I ask you to go through some steps to reproduce the problem? It doesn't necessarily have to be a PC running Linux.

  1. Open the official launcher.
  2. Find a server you frequently play on, or play on any server for a couple of hours, ideally long enough to experience a server restart.
  3. Switch your device to a different internet source, such as mobile internet (it's important that it's not something like computer -> phone -> Wi-Fi, but a different network like computer -> phone LTE).
  4. Check the server list.
  5. My friend was able to reproduce this bug on his PC this way.
aclist commented 1 month ago

Thanks for the additional info. I've spent some time thinking about it and rereading this entire thread to make sure I understand everything.

I think this comment you made below is the most important one:

I would like to clarify that I feel this problem is somehow related to DayZ remembering the address or router from which you connected to the server, and when logging in from another location, the server gets blocked...I don't understand the cause, but I would like to add that I asked my friend, who plays with me on the same server and only plays from his computer, to disconnect from his internet cable and connect through phone Wi-Fi, and his server also became blocked.

To summarize:

You speculate that either the server, client, or Steam account somehow "remembers" this information and causes a blockage. I still cannot comprehend what the technical reason would be for this anomaly, but I understood the issue.

I want to reduce the number of variables here. Let me explain:

If you use the Windows client at work on a wired connection, play on some server, and then go home and immediately use DZGUI on a wireless connection and you cannot play on that server, then this is definitively a problem we need to find a fix for in DZGUI.

But if you use the Windows client at work on a wired connection, play on some server, go home and use the Linux DayZ client, it fails, and THEN you use DZGUI, from the point of view of DZGUI, this is a problem happening with the DayZ client, not DZGUI itself. This set of steps doesn't tell us much beyond that something happened in DayZ itself, which may or may not have a knock-on effect on DZGUI.

If we can reproduce that the problem happens only when using DZGUI at home, it is definitively something we can start trying to fix. Therefore, while having your friend reproduce the issue on the DayZ launcher is helpful, it only tells us that this bug happens with the DayZ client, but doesn't tell us anything about DZGUI per se.

This is why I'd appreciate it if you could try the test where you use DZGUI directly after making the network switch, no official DayZ client in between, and run the Python tests to see what output we get.

Anything involving bugs in the official DayZ launcher fall outside of the scope of DZGUI and should be reported to Bohemia directly.

If removing the DayZ launcher from the equation makes DZGUI consistently work at home, then as far as DZGUI is concerned, the "solution" is to not use the DayZ launcher. I want to isolate the scope of the problem here so that the only variables are DZGUI and your network, not DZGUI, DayZ launcher, your network, and possibly other stuff.

Can I ask you to go through some steps to reproduce the problem? It doesn't necessarily have to be a PC running Linux.

Unfortunately, I only have ready access to a wired network, but I will try to see what I can do. But again, I don't think we should be devoting resources to troubleshooting bugs in the DayZ client, since that's not inside the scope of DZGUI and is a Bohemia problem. Again, I am curious about the side effects, but I do not have a logical explanation for why DZGUI would be affected here.

Proposing another hypothesis: is it possible that the server has some VPN blacklisting or filter rules applied that throttle (block) users trying to rotate their IPs and connect from the same account? For example, to prevent users from rotating IPs as a form of ban evasion, the server might track Steam account ID or HWID and put the user on cooldown if their IP changed too recently. Does this seem like a possibility? One interesting thing you mentioned is that one of the servers is a server you control, so you would be able to check what is going on with it directly (or through the hosting provider). Maybe there are certain throttling rules in effect on these servers? Again, it is just an idea.

I've done a bit of reading about it just now, and it looks like some servers do implement a form of anti-VPN protection and track whether a unique user's IP address has changed recently, blacklisting (or putting on cooldown) users whose IP does not match the last one. This is just some initial info.

Mirkadoi commented 1 month ago

Good afternoon. Thank you for waiting for my response. Let's go step by step.

  • You use the official Windows DayZ client at work on a wired connection and play on some server

No no no. It's laptop, wireless connection.

  • After that time, DZGUI also exhibits similar problems on a wireless connection and on the same server

No, DZGUI cannot connect to such servers at all, even if you restart the device. I want to emphasize that it is impossible to connect with DZGUI to servers that I accessed at work.

I conducted a study. I have two groups of servers that I played on. Group 1 has 3 servers, and Group 2 has 6 servers. The 6 servers were opened recently. From Group 1, I played on 1 out of 3 servers. In Group 2, I played on 1 out of 6. However, in Group 1, judging by the official launcher, 1 out of 3 servers is unavailable. In Group 2, 6 out of 6 servers are unavailable.

You speculate that either the server, client, or Steam account somehow "remembers" this information and causes a blockage. I still cannot comprehend what the technical reason would be for this anomaly

I see three possible explanations:

  1. Poor coding by the game developers, as I understand similar blocking behavior is characteristic of ARMA 3.
  2. The effect of VPN detection.
  3. Some standard flags in the server settings, although it's unclear why.

Either way, I don't think this is purely a DZGUI problem, because you use the Steam API, and the issue is the same as with the launcher - when servers are blocked, DayZ does not provide the mod list.

Suggested steps

I conducted the tests you requested. There are no errors with DZGUI.

In conclusion, I would like to note that I'm tired of fighting with this game, and I suggest closing this issue. You might consider adding this problem to the README, but that’s up to you. I worked around this problem using another open-source solution that uses a third-party API. It would be great if you could add it, but it’s essentially a workaround.

I read through your code. From a development perspective, your solution is the most correct, scalable, and straightforward.

If you're interested, I can describe below what I did.

aclist commented 1 month ago

Good afternoon. Thank you for waiting for my response. Let's go step by step.

Thank you.

No, DZGUI cannot connect to such servers at all, even if you restart the device. I want to emphasize that it is impossible to connect with DZGUI to servers that I accessed at work.

Noted.

I conducted a study. I have two groups of servers that I played on. Group 1 has 3 servers, and Group 2 has 6 servers. The 6 servers were opened recently. From Group 1, I played on 1 out of 3 servers. In Group 2, I played on 1 out of 6. However, in Group 1, judging by the official launcher, 1 out of 3 servers is unavailable. In Group 2, 6 out of 6 servers are unavailable.

Noted.

You speculate that either the server, client, or Steam account somehow "remembers" this information and causes a blockage. I still cannot comprehend what the technical reason would be for this anomaly

I see three possible explanations:

1. Poor coding by the game developers, as I understand similar blocking behavior is characteristic of ARMA 3.

2. The effect of VPN detection.

3. Some standard flags in the server settings, although it's unclear why.

Unfortunately, I need to research more about the server-side of DayZ, but indeed I agree with your conclusions.

Either way, I don't think this is purely a DZGUI problem, because you use the Steam API, and the issue is the same as with the launcher - when servers are blocked, DayZ does not provide the mod list.

I came across some info just now that states that unfavoriting these servers in the DayZ client may clear the blockage. But this may be apocryphal.

I conducted the tests you requested. There are no errors with DZGUI.

Should we consider this a small victory on that front? If the error does not occur when you skip using the DayZ launcher altogether, it seems to work. Is there a special reason why you want to use the DayZ launcher alongside DZGUI? (In a perfect world, this would work, so this isn't problem-free, of course.)

In conclusion, I would like to note that I'm tired of fighting with this game, and I suggest closing this issue. You might consider adding this problem to the README, but that’s up to you. I worked around this problem using another open-source solution that uses a third-party API. It would be great if you could add it, but it’s essentially a workaround.

I think you're talking about a fallback method in case the server does not return the modlist. I'm aware that all other Linux launchers use an undocumented API endpoint used internally by DZSA launcher. I think this is not a robust approach because:

DZGUI uses the Steam API when printing the global servers list, but for client to server queries, it uses A2S directly.

Third-party APIs like DZSA and Battlemetrics are essentially crawling the Steam API and caching this info for some unspecified amount of time (and using A2S where applicable). So there is some concern about reliability of the information as well if the results are stale.

I read through your code. From a development perspective, your solution is the most correct, scalable, and straightforward.

Thank you. I'm worried that relying on third-party APIs is not going to be a reliable solution in the long term, and obviously I don't want to piggyback on other APIs without permission. In terms of future-proofing, DZGUI does not call back to its own API endpoint. The philosophy behind DZGUI is to leave the responsibility for API key management and queries in the hands of the client PC. Even if there is no third-party API in the future, the tool should continue to work indefinitely.

A very long time ago, an early version of DZGUI experimented with third-party APIs, but I concluded that it was not an acceptable approach.

If you're interested, I can describe below what I did.

If I missed anything above, feel free to advise. I'm sorry that this issue caused you frustration.

I'd consider a fallback query to a third-party API to be more of a bandaid solution to the problem, so I'd like to keep looking for a more fundamental fix, even if it requires reproducing the bug and reporting it to Bohemia. Over the course of developing DZGUI, I've discovered a number of bugs in the Steam client, Steam Deck, and DayZ, and reported these to the relevant developers, leading to these issues being fixed. Some of these issues are not DayZ specific, so it has had a generally positive effect for Linux users of Steam in general.

I'm still treating this issue with importance, but it is one of the weirdest ones I have come across so far. I realize that DayZ is rife with bugs, but I'm hoping to not trade robustness (getting server info using best practices) for convenience (using third-party APIs without permission).

Mirkadoi commented 1 month ago

Should we consider this a small victory on that front? If the error does not occur when you skip using the DayZ launcher altogether, it seems to work. Is there a special reason why you want to use the DayZ launcher alongside DZGUI? (In a perfect world, this would work, so this isn't problem-free, of course.)

No no. There are no issues or errors with the specific sequence you asked me to perform. However, the server modelist still cannot be queried. But since the Python scripts execute without errors, this means the problem is not with your program.

I'm worried that relying on third-party APIs is not going to be a reliable solution in the long term, and obviously I don't want to piggyback on other APIs without permission.

I'm agree.

If I missed anything above, feel free to advise. I'm sorry that this issue caused you frustration.

I used dayz-linux-cli-launcher. Here are the steps:

  1. Reinstalled the game.
  2. Installed dayz-linux-cli-launcher.
  3. Checked through the launcher that the server was still unavailable after the full reinstall.
  4. Ran the command dayz-linux-cli-launcher.
  5. And here's the crucial part: using a third-party API, it fetched the mod list.
  6. Then, using launch parameters, it directly launched the server. Although it threw some errors, I was able to log in and play.
aclist commented 1 month ago

No no. There are no issues or errors with the specific sequence you asked me to perform. However, the server modelist still cannot be queried. But since the Python scripts execute without errors, this means the problem is not with your program.

OK, understood.

5. **And here's the crucial part: using a third-party API, it fetched the mod list.**

There does seem to be something wrong at a deeper level with the DayZ server implementation. A third option presents itself: use the Battlemetrics API as a fallback mechanism to query mods. Although this step is optional, it gives an authenticated way of using an API rather than using an undocumented endpoint. Currently there is no fallback logic implemented in DZGUI, but this could be one approach.

The only problem with this is it imposes an additional setup burden on the end-user.

I'm also skeptical about caching modlists, for the reasons mentioned above.

In your experience, when you had this problem, how long did it take for the server to start responding again? Is it something that eventually goes away? What about implementing an auto-retry on DZGUI's end and keep checking the server until we get a satisfactory response?

Mirkadoi commented 1 month ago

In your experience, when you had this problem, how long did it take for the server to start responding again?

On the Steam Deck, these servers are still unavailable. On the laptop, they are always accessible. It all depends on the IP address.

Is it something that eventually goes away?

No, it doesn't resolve on its own. It only resolves if I bring the Steam Deck to work. :D

What about implementing an auto-retry on DZGUI's end and keep checking the server until we get a satisfactory response?

Not in that case.

aclist commented 1 month ago

For the time being, I am thinking of adding this information to the DZGUI Knowledge Base so people know what is going on. Will continue exploring a workaround that I am satisfied with.