gamedig / node-gamedig

Query game servers and not only! Node.JS/Deno/Bun or Bash (via the CLI).
https://www.npmjs.com/package/gamedig
MIT License
604 stars 146 forks source link

Palworld - Query returning state after server is shut down #518

Closed Cabecinha84 closed 9 months ago

Cabecinha84 commented 9 months ago

How to reproduce:

It takes several after the server is no longer running for returning the expected error result: "error":"Failed all 2 attempts".

podrivo commented 9 months ago

This could be due to the server information not having enough time to be propagated or maybe a cache config? It doesn't seem to be gamedig related, since the query is working as expected.

Cabecinha84 commented 9 months ago

This could be due to the server information not having enough time to be propagated or maybe a cache config? It doesn't seem to be gamedig related, since the query is working as expected.

Yes, seems like cache but from gamedig, this is gamedig specific. The server is stopped, I can't connect to the game server, and gamedig query continues to return the state object for several minutes, and I have tested the gamedig query from different servers and always got the same behaviour. But I can't find any reference on gamedig docs about cache or how to clear it/not use it.

Any help with this would be appreciated. Thank you.

CosminPerRam commented 9 months ago

But I can't find any reference on gamedig docs about cache or how to clear it/not use it.

GameDig doesnt cache responses. Palworld uses Epic Online Services, the library does a query to it to get your server information, this is a problem regarding EOS, not gamedig, as after you close your server, you'd expect for it to be gone, but it's still remaining there for a little while, so gamedig does a query and its still there (it shouldnt).

podrivo commented 9 months ago

The server is stopped, I can't connect to the game server, and gamedig query continues to return the state object for several minutes, and I have tested the gamedig query from different servers and always got the same behaviour.

This is probably due to some server config, that lets gamedig query a response, even though you can't connect to it. You should look for something on how Epic Online Services cache their server info.

Cabecinha84 commented 9 months ago

The server is stopped, I can't connect to the game server, and gamedig query continues to return the state object for several minutes, and I have tested the gamedig query from different servers and always got the same behaviour.

This is probably due to some server config, that lets gamedig query a response, even though you can't connect to it. You should look for something on how Epic Online Services cache their server info.

Server config, where the Palword server is running? How can it be a server config, if the server is shut down? So gamedig don't connect to the server host/port I ask to query? Calls another service to get the response? And it can be a cache on that service? Trying to understand how gamedig works.

Thank you for all your input so far.

podrivo commented 9 months ago

Yes, where Palworld is running. Gamedig does not call another service.

As I mentioned, server might be offline to players to connect, but might have a cache config that allows gamedig to still query it. I don't have more information on how Palworld servers work, but that seems to be the case.

Cabecinha84 commented 9 months ago

If gamedig is the one that is connecting directly to get the query result this is very strange. I am testing the game server on a docker. Same result with docker stopped, or shutdown the computer. There couldn't be any cache I can think about unless on gamedig.

A segunda, 29/01/2024, 19:17, Pedro Ivo Hudson @.***> escreveu:

Yes, where Palworld is running. It does not call another service.

As I mentioned, server might be offline to players to connect, but might have a cache config that allows gamedig to still query it. I don't have more information on how Palworld servers work, but that seems to be the case.

— Reply to this email directly, view it on GitHub https://github.com/gamedig/node-gamedig/issues/518#issuecomment-1915396647, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKEMZLTL2DL3VBJJNQIUTGLYQ7YTTAVCNFSM6AAAAABCNQHVEGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMJVGM4TMNRUG4 . You are receiving this because you authored the thread.Message ID: @.***>

guilhermewerner commented 9 months ago

No, you are confusing, the servers that use EOS (Epic Online Services), such as ARK: Survival Ascended, Palworld, etc. do not respond directly to queries like other games that use the valve protocol, so we can obtain the data sending a request to Epic's web api, with the game's credentials (so that gamedig is treated as the game's client) and the server's IP, to then get the query response.

In other words, this cache is due to Epic's API, and is outside the control of the server administrator and gamedig.

Cabecinha84 commented 9 months ago

No, you are confusing, the servers that use EOS (Epic Online Services), such as ARK: Survival Ascended, Palworld, etc. do not respond directly to queries like other games that use the valve protocol, so we can obtain the data sending a request to Epic's web api, with the game's credentials (so that gamedig is treated as the game's client) and the server's IP, to then get the query response.

In other words, this cache is due to Epic's API, and is outside the control of the server administrator and gamedig.

Now makes more sense. I will close the bug. Thank you for your explanation.

CosminPerRam commented 9 months ago

I thought about these games if we could 'ping' them, but I don't really know how reliable would that be and if possible at all.