ta-forever / downlords-taf-client

Lobby client forked from FAForever/downlords-faf-client
https://www.taforever.com
MIT License
8 stars 5 forks source link

Unable To Host Games On Linux #7

Closed tekktonic closed 1 year ago

tekktonic commented 2 years ago

Describe the bug My games don't appear on the game list when hosting

To Reproduce Host a game. Happens with any map, any mod.

Log or error message This is my log file: log.txt

Screenshot screenshot

Novaya also confirmed in chat that my game isn't visible but I do have the hosting ring in the user list Edit: Novaya also confirmed that my chat status does update to battle room when I launch the game. The map preview also suddenly appears once in a battle room. Expected behavior Hosted games appear in the games list

OS Linux (Slackware 15) Java OpenJDK Runtime Environment Zulu15.36+13-CA (build 15.0.5+3-MTS) Wine wine-7.3 (Staging) TAF build 1.4.3-taf-0.14.15

exuvo commented 2 years ago

I have the same problem but friend was able to join and play via the client list to the left.

Axle1975 commented 2 years ago

Hi, yes I managed to replicate the problem just once. Does your game show up on the game board if you rehost?

tekktonic commented 2 years ago

For posterity's sake: Players can indeed join by going from the client list. Rehosting does not help.

exuvo commented 2 years ago

I don't see anything relevant in the console logging but here it is anyway starting from when i click create game:

2022-05-11 11:26:53.726  INFO 2797647 --- [lication Thread] c.faforever.client.remote.AssetService   : Using cached image: /home/exuvo/.taforever/cache/maps/mini/[V] Annihilator Alley.png
2022-05-11 11:26:54.577  INFO 2797647 --- [lication Thread] c.f.client.game.CreateGameController     : [setContextGame] null
2022-05-11 11:27:02.497  INFO 2797647 --- [pool-3-thread-2] com.faforever.client.fa.MapTool          : [/mnt/ssd2/Games/Total Annihilation/total annihilation forever/natives/bin/maptool, --gamepath, /mnt/ssd2/Games/Total Annihilation/pfx/drive_c/Total Annihilation, --mapname, [V] Annihilator Alley$, --hash]
2022-05-11 11:27:02.537  INFO 2797647 --- [pool-3-thread-2] com.faforever.client.game.GameService    : [hostGame] title=test
2022-05-11 11:27:02.653  INFO 2797647 --- [      Thread-21] c.f.client.fa.relay.ice.IceAdapterImpl   : Starting ICE adapter with command: [/usr/lib/jvm/java-15-adoptopenjdk/bin/java, -jar, /mnt/ssd2/Games/Total Annihilation/total annihilation forever/natives/faf-ice-adapter.jar, --id, 991, --login, exuvo, --rpc-port, 5433, --gpgnet-port, 54559]
2022-05-11 11:27:03.267  INFO 2797647 --- [      Thread-21] c.f.client.fa.TotalAnnihilationService   : [startLaunchServer] starting on port 38547
2022-05-11 11:27:03.267  WARN 2797647 --- [        Timer-1] c.f.client.fa.TotalAnnihilationService   : launch server not alive ...
2022-05-11 11:27:03.269  INFO 2797647 --- [      Thread-21] c.f.client.fa.TotalAnnihilationService   : [wine, /mnt/ssd2/Games/Total Annihilation/total annihilation forever/natives/bin/talauncher.exe, --bindport, 38547, --logfile, /home/exuvo/.taforever/logs/talauncher_17563.log]
2022-05-11 11:27:03.271  INFO 2797647 --- [      Thread-21] c.f.client.fa.TotalAnnihilationService   : Issuing killall dplaysvr.exe to free up port 47624 ...
2022-05-11 11:27:03.276  INFO 2797647 --- [      Thread-21] c.f.client.fa.TotalAnnihilationService   : Issuing killall gpgnet4ta to free up port 47624 ...
2022-05-11 11:27:03.280  INFO 2797647 --- [      Thread-21] c.f.client.fa.TotalAnnihilationService   : [wine, /mnt/ssd2/Games/Total Annihilation/total annihilation forever/natives/bin/talauncher.exe, --registerdplay, --gamemod, taesc, --gamepath, /mnt/ssd2/Games/Total Annihilation/pfx/drive_c/Total Annihilation, --gameexe, TotalA ESC.exe, --logfile, /home/exuvo/.taforever/logs/registerdplay_17563.log]
2022-05-11 11:27:03.581  INFO 2797647 --- [      Thread-21] c.f.client.fa.TotalAnnihilationService   : [/mnt/ssd2/Games/Total Annihilation/total annihilation forever/natives/bin/gpgnet4ta, --lobbybindaddress, 127.0.0.1, --consoleport, 36729, --gamemod, taesc, --gamepath, /mnt/ssd2/Games/Total Annihilation/pfx/drive_c/Total Annihilation, --players, 10, --gpgnet, 127.0.0.1:54559, --logfile, /home/exuvo/.taforever/logs/game_17563.log, --launchserverport, 38547, --democompilerurl, lobby.taforever.com:15000/17563]
2022-05-11 11:27:04.770  INFO 2797647 --- [lication Thread] c.faforever.client.remote.AssetService   : Using cached image: /home/exuvo/.taforever/cache/maps/mini/[V] Annihilator Alley.png

ICE adapter log:

2022-05-11 11:27:03.199 INFO  Created tray icon (c.faforever.iceadapter.util.TrayIcon:78)
2022-05-11 11:27:03.200 INFO  Version: SNAPSHOT (com.faforever.iceadapter.IceAdapter:58)
2022-05-11 11:27:03.201 INFO  Using GPGNET_PORT: 54559 (c.f.iceadapter.gpgnet.GPGNetServer:38)
2022-05-11 11:27:03.204 INFO  Generated LOBBY_PORT: 42985 (c.f.iceadapter.gpgnet.GPGNetServer:43)
2022-05-11 11:27:03.205 INFO  GPGNetServer started (c.f.iceadapter.gpgnet.GPGNetServer:56)
2022-05-11 11:27:03.218 INFO  Creating RPC server on port 5433 (c.f.iceadapter.rpc.RPCService:34)
2022-05-11 11:27:03.270 DEBUG LobbyInitMode set to normal (c.f.iceadapter.rpc.RPCHandler:53)
2022-05-11 11:27:03.382 INFO  Ice Servers set, total addresses: 3 (c.f.iceadapter.ice.GameSession:140)
2022-05-11 11:27:03.482 DEBUG Pinged turn.taforever.com with an RTT of 102.024 (c.f.iceadapter.util.PingWrapper:49)
2022-05-11 11:27:03.588 DEBUG Listening for GPG messages (c.f.iceadapter.gpgnet.GPGNetServer:144)
2022-05-11 11:27:03.589 INFO  GPGNetClient has connected (c.f.iceadapter.gpgnet.GPGNetServer:85)
2022-05-11 11:27:03.590 INFO  Received GPGNet message: GameOption SubState Idle (c.f.iceadapter.gpgnet.GPGNetServer:123)
2022-05-11 11:27:03.591 DEBUG New GameState: Idle (c.f.iceadapter.gpgnet.GPGNetServer:96)
2022-05-11 11:27:03.591 INFO  Sent GPGNet message: CreateLobby 0 42985 exuvo 991 1 (c.f.iceadapter.gpgnet.GPGNetServer:133)
2022-05-11 11:27:03.591 INFO  Received GPGNet message: GameState Idle (c.f.iceadapter.gpgnet.GPGNetServer:123)
2022-05-11 11:27:03.592 INFO  Received GPGNet message: GameOption SubState Staging (c.f.iceadapter.gpgnet.GPGNetServer:123)
2022-05-11 11:27:03.592 DEBUG New GameState: Lobby (c.f.iceadapter.gpgnet.GPGNetServer:96)
2022-05-11 11:27:03.593 INFO  Received GPGNet message: GameState Lobby (c.f.iceadapter.gpgnet.GPGNetServer:123)
2022-05-11 11:27:03.844 INFO  onHostGame (com.faforever.iceadapter.IceAdapter:67)
2022-05-11 11:27:03.845 INFO  Sent GPGNet message: HostGame [V] Annihilator Alley (c.f.iceadapter.gpgnet.GPGNetServer:133)
2022-05-11 11:27:03.846 INFO  Received GPGNet message: PlayerOption 991 Team 1 (c.f.iceadapter.gpgnet.GPGNetServer:123)
2022-05-11 11:27:03.847 INFO  Received GPGNet message: GameOption Slots 10 (c.f.iceadapter.gpgnet.GPGNetServer:123)
2022-05-11 11:27:03.848 INFO  Received GPGNet message: GameOption MapDetails  (c.f.iceadapter.gpgnet.GPGNetServer:123)
exuvo commented 2 years ago

Actually i do see something in that log. /home/exuvo/.taforever/logs/registerdplay_17563.log this file never shows up.

Axle1975 commented 2 years ago

In tekk's case, game doesn't show up on the board because server doesn't have all the information about the selected map.

In client.log you can see the the "game_info" message indicates a "map_file_path" similar to "/Moon Quartet/".

2022-05-10 21:48:07.894 DEBUG 1843 --- [Thread-12] c.f.c.remote.AbstractServerAccessor      : Message from server: {"command":"game_info","visibility":"public","password_protected":false,"uid":17554,"title":"Seeing if TAF Works","state":"staging","replay_delay_seconds":300,"game_type":"custom","featured_mod":"taesc","sim_mods":{},"map_name":"Moon Quartet","map_file_path":"/Moon Quartet/","host":"tekk","num_players":1,"max_players":10,"launched_at":null,"rating_type":"global","rating_min":null,"rating_max":null,"enforce_rating_range":false,"teams":{"1":["tekk"]}}

There is supposed to be a new game_info update following soon after that where the map_file_path has been augmented with the hpi filename and the CRC, eg "map_file_path":"totala2.hpi/Moon Quartet/134a54da", but in tekk's case this message never arrives. The game won't show up on the game board without this extra information.

This information is supposed to be provided by the maptool. In tekk's log, the maptool is running, but its not returning any information about Moon Quartet

From game_17554.log (notice the "getMapDetails" result is just an empty string "")

2022.05.11 01:48:07 [0x7f8e5220dc00:Info] [getMapDetails] exe: "maptool" , args: ("--gamepath", "/home/tekk/Games/gog/taesc/drive_c/GOG Games/Total Annihilation", "--mapname", "Moon Quartet$", "--hash")
2022.05.11 01:48:07 [0x7f8e5220dc00:Info] [getMapDetails] ""

I wonder if there are any additional clues to be seen if the maptool is executed manually?

natives/bin/maptool --gamepath "/home/tekk/Games/gog/taesc/drive_c/GOG Games/Total Annihilation" --mapname "Moon Quartet$" --hash

Also I wonder if its possible that totala2.hpi is missing from the installation? Or maybe there's a symlink in the gamepath and maptool isn't working properly with the symlink? Or maybe there's a corrupted a .ufo or .hpi or .ccx file interfering with maptool's ability to work?

exuvo commented 2 years ago

Okay i ran maptool with the map i have been using "[V] Annihilator Alley" and i get the return string after the program has exited which is very wierd:

[exuvo@exuvo-desktop: /mnt/ssd2/Games/Total Annihilation] 0
$ WINEPREFIX="/mnt/ssd2/Games/Total Annihilation/pfx" wine total\ annihilation\ forever/natives/bin/maptool --gamepath "/mnt/ssd2/Games/Total Annihilation/pfx/drive_c/Total Annihilation" --mapname "[V] Annihilator Alley$" --hash
WARNING: radv is not a conformant Vulkan implementation, testing use only. <from my vulkan driver, probably invoked from my wine>
WARNING: radv is not a conformant Vulkan implementation, testing use only.
[exuvo@exuvo-desktop: /mnt/ssd2/Games/Total Annihilation] 0
$ [V] Annihilator AlleyV maps.ufof0940a0c5 x 15. W:+0-6. Take a run down the Annihilator Alley. By Lister3128. Fixed by TAG_Venom2, 40-100020112
<marker is here now>

Could maybe be fixed if you disable the buffering for stdout in the program? setvbuf(stdout, NULL, _IONBF, 0); https://pubs.opengroup.org/onlinepubs/9699919799/functions/setvbuf.html -edit- No that did not seem to help nor did a flush.

exuvo commented 2 years ago

I can't figure out how to increase the logging level, how do i do that?

Axle1975 commented 2 years ago

hmmm maptool is a native linux app, shouldn't be necessary to run it through wine

exuvo commented 2 years ago

oh right my bad, yep output looks correct now. I must be tired or something, i even compiled the maptool with flush and still ran it with wine..

exuvo commented 2 years ago

Is [V] Annihilator Alley^_V maps.ufo^_f0940a0c^_5 x 15. W:+0-6. Take a run down the Annihilator Alley. By Lister3128. Fixed by TAG_Venom^_^_2, 4^_0-1000^_20^_112 a resonable output?

Axle1975 commented 2 years ago

yeah that looks spot on. Do you see a similar response being advertised in game*.log when you try to host? Or just an empty "" like tekk?

exuvo commented 2 years ago

How do i turn on the debug logging to see the game_info lines? Sorry i just found it in the UI. Too advanced for me ha ha.

exuvo commented 2 years ago

1st: Message from server: {"command":"game_info","visibility":"public","password_protected":false,"uid":17571,"title":"test","state":"staging","replay_delay_seconds":300,"game_type":"custom","featured_mod":"taesc","sim_mods":{},"map_name":"[V] Annihilator Alley","map_file_path":"/[V] Annihilator Alley/","host":"exuvo","num_players":0,"max_players":10,"launched_at":null,"rating_type":"global","rating_min":null,"rating_max":null,"enforce_rating_range":false,"teams":{}}

2nd a second later: Message from server: {"command":"game_info","visibility":"public","password_protected":false,"uid":17571,"title":"test","state":"staging","replay_delay_seconds":300,"game_type":"custom","featured_mod":"taesc","sim_mods":{},"map_name":"[V] Annihilator Alley","map_file_path":"/[V] Annihilator Alley/","host":"exuvo","num_players":1,"max_players":10,"launched_at":null,"rating_type":"global","rating_min":null,"rating_max":null,"enforce_rating_range":false,"teams":{"1":["exuvo"]}}

Axle1975 commented 2 years ago

yeah looks like same problem as tekk

exuvo commented 2 years ago

Could it be something simple like you looking for \ but on linux we get / ?

exuvo commented 2 years ago

I got the client code building, any suggestions where i should start looking?

Axle1975 commented 2 years ago

I believe its going wrong where gpgnet4ta runs the maptool. I can point you to the exact bit of code if you accept invite to join taforever organisation

exuvo commented 2 years ago

I have accepted now.

Axle1975 commented 2 years ago

Are you on discord? I sent you a message on discord

exuvo commented 2 years ago

After some testing with additional logging it seems the tool that runs the maptool (gpgnet4ta main) is only run when i press leave on the lobby window or start up in-game lobby and then exit out. It is clearly getting stuck somewhere. no wait i am retarded.

exuvo commented 2 years ago

yay i got it working! gpgnet4ta does not seem to run with workingdirectory set on linux so it needs absolute path to maptool.

exuvo commented 2 years ago

No working directory is correct but linux needs ./maptool

tekktonic commented 2 years ago

Comment got eaten over e-mail, apparently.

That makes a lot of sense since on Linux . isn't in the path by default. You could probably work around it by either adding . or the natives directory to your path too.

tekktonic commented 2 years ago

Just confirmed: copying maptool to my ~/bin/ (which is in my path) and map hosting works

tekktonic commented 2 years ago

That'd make sense. You can probably also just add . to your path (or the absolute path to the natives)

On May 11, 2022 11:11:06 AM EDT, exuvo @.***> wrote:

No working directory is correct but linux needs ./maptool

-- Reply to this email directly or view it on GitHub: https://github.com/ta-forever/downlords-taf-client/issues/7#issuecomment-1123909169 You are receiving this because you authored the thread.

Message ID: @.***>