Forged Alliance Forever Forged Alliance Forever Forums 2018-12-18T13:25:00+02:00 /feed.php?f=3&t=16886 2018-12-18T13:25:00+02:00 2018-12-18T13:25:00+02:00 /viewtopic.php?t=16886&p=170253#p170253 <![CDATA[Re: disconnect 30 minutes into every single game]]>
Thank you for the detailed description of the project and its codebase.
Having had a look at the code, I can see how complicated it is, how interconnected it is, and why it is difficult to make changes.
If anything I have a new appreciation of the time developers must have spent to make it happen.

I think the game disconnection issues are caused by packet loss. ie in TCP this would cause Re-transmission Packets. UDP does not have this, it just fails.
Looking at my Packet Capture, I have constant re-transmission even on youtube, every few seconds.
So I assume alot of other customers are having disconnects due to terrible ISP's and the internet transport providers.

I hope that the D0wnlords 0.9.0-beta-RC8 Test Client becomes common, so that the community can transition to new technology, and increased stability and increased customer base.

Sadly I am not able to contribute to development as I am not proficient in OO and Java Libraries.
I am more used to MVC such as Angularjs. M=Simple 2d Arrays of data, C=a few lines of code that sync arrays with database server, V=Html files that bind to Models.

Statistics: Posted by debtslave — 18 Dec 2018, 13:25


]]>
2018-11-12T17:15:01+02:00 2018-11-12T17:15:01+02:00 /viewtopic.php?t=16886&p=169481#p169481 <![CDATA[Re: disconnect 30 minutes into every single game]]> Statistics: Posted by SiN — 12 Nov 2018, 17:15


]]>
2018-11-09T14:34:43+02:00 2018-11-09T14:34:43+02:00 /viewtopic.php?t=16886&p=169382#p169382 <![CDATA[Re: disconnect 30 minutes into every single game]]>
If you want to play with the adapter you will have to run an actual FAF client that supports the ICE adapter (and includes an actual build of the java-ice-adapter repo -> ice-adapter project). Downlords client currently does that using the java-ice-adapter branch. There is also a build of 0.9.0-beta-RC8, but it's marked as a draft so not visible. I also don't know if everything is running on the java test server(downlord's server running the faf-java-server).

The FAF test server is currently running the python server with an ICE branch I think, but afaik the java-api is currently somewhat broken, so the java client (downlords client) won't be able to connect.

You should though be able to use the python client with an ice branch (the release you linked should work). It should connect to the test server, log in using an existing FAF user account and any pw.

It is not possible to run ICE and non ICE clients on the same server at the same time as it requires support from the server. (not just the ICE adapter, deactivating the old connectivity code which is necessary for running with ICE breaks old non ICE clients)
There are some last issues to be investigated and we will be doing an public ICE test weekend on the production server soon. (switching the entire server to ICE only)

Why do you need it/what are you trying to achieve?

Statistics: Posted by Geosearchef — 09 Nov 2018, 14:34


]]>
2018-11-09T11:00:24+02:00 2018-11-09T11:00:24+02:00 /viewtopic.php?t=16886&p=169376#p169376 <![CDATA[Re: disconnect 30 minutes into every single game]]> I made a run.bat with following content "E:\jdk\bin\java.exe -jar client-1.0-SNAPSHOT.jar" --help

It failed with:
"Exception in thread "main" java.lang.NoClassDefFoundError: net/ScenarioOptionsMessage at client.TestClient.<clinit>(TestClient.java:31)"

I was therefore unable to host my own Ice-Adaptor game.

I eventually found a forum post:
/viewtopic.php?f=45&t=16844

It says a special client has to be used:
https://github.com/muellni/client/relea ... -win32.msi


However this means any game hosted will not be visible by the public, and only developers?


Maybe it would be possible to create a mod, named "ice4", which would include the faf-adaptor-proxy.exe, therefore making the game visible to public, as well as allowing public to connect, as they would automatically download mod files?

Statistics: Posted by debtslave — 09 Nov 2018, 11:00


]]>
2018-11-06T14:55:58+02:00 2018-11-06T14:55:58+02:00 /viewtopic.php?t=16886&p=169323#p169323 <![CDATA[Re: disconnect 30 minutes into every single game]]>
I have written a test server and client for debugging the adapter and after a few months of runnikg tests we finally got it working. Everything seems to be fine, it only slows down the game on slower connections. This is due to WebRTC enforcing SRTP (if I remember correctly) with DTLS 1.2 encryption. This get's an issue as FA is sending between 15-45 bytes per packet (on average) therefore with DTLS 1.2 (27 byte overhead) effectively doubling the required bandwidth.

I therefore rewrote the adaptee using a different library, in this case ice4j using Java. The adapter can be found in the FAForever/java-ice-adapter repository. Currently it looks extremly promising, there are just some problems with the python server/client.

There is also a java-ice-adapter branch in the java client using this adapter. Running two different connectivity solutions at the same time as been decided to be to complicated.

Both clients do already support ICE in a different build when connecting to a server supporting ice (e. g. test.faforever.com).

If you are interested in contributing to FAF please tell me, there are a lot of different sub projects in FAF, from reverse engineering over UID (C), all the java projects (java client (downlords client), java server, api), python client and server, python replay server to game coding (lua) and the website, discord bot, unit db and faf tools (all JS). Also the galactic war (web) frontend may need help soon.

Statistics: Posted by Geosearchef — 06 Nov 2018, 14:55


]]>
2018-11-06T12:33:49+02:00 2018-11-06T12:33:49+02:00 /viewtopic.php?t=16886&p=169320#p169320 <![CDATA[Re: disconnect 30 minutes into every single game]]>
Looking at the github page for Ice-Adaptor project, it shows it depends on libwebrtc. (located https://github.com/FAForever/ice-adapter)
What library is it using now?

The big issue with Ice-Adaptor is that the 2 main clients have no simple way to host a game using IceAdaptor.
It could be as simple as a checkbox, and the game name could be prefixed with ICE.

Secondly, I can see d0wnlord client includes faf-ice-adapter.exe, so I would assume that the clients could already transparently launch ice-adaptor to join ICE games.

Sorry that I cannot contribute to development, as I am a C and Javascript dev, and OO looks like spaghetti to me.

Statistics: Posted by debtslave — 06 Nov 2018, 12:33


]]>
2018-11-05T13:51:11+02:00 2018-11-05T13:51:11+02:00 /viewtopic.php?t=16886&p=169272#p169272 <![CDATA[Re: disconnect 30 minutes into every single game]]>
The solution you've presented here is indeed working, I have been privately telling this to people with constant connection problems aswell, there is only the small problem that it costs FAF money if a lot of people do that, so we might delete this thread.

(Btw., ice adapter uses no webrtc anymore ;) )

Statistics: Posted by Geosearchef — 05 Nov 2018, 13:51


]]>
2018-11-05T13:13:54+02:00 2018-11-05T13:13:54+02:00 /viewtopic.php?t=16886&p=169269#p169269 <![CDATA[disconnect 30 minutes into every single game]]>
Basically my games go well, but after 10-30 minutes, it shows a screen that 1 player has disconnected. after 2 minutes they are kicked. It shows that the established connection has been cut between my pc and another pc.

This is most likely caused by ISP's using CGNAT.

You might say, try ICE-Adapter. It is basically a Application, that takes all FAF Game data, and uses a WebRTC p2p library, to connect to peers.
This most likely will not fix my problem, as I have no trouble connecting to peers, but trouble with established connections getting cut.



So my solution is to force the FA Forever client to use a relay server, and force NO direct connections.

The FA Forever Relay server is: 148_251_238_131

To do this I created 4 windows firewall rules:
0. Block all Inbound, Block all Outbound
1. Inbound Rule > Allow, TCP, C:\Program Files (x86)\Forged Alliance Forever\FAForever.exe, Scope:148_251_238_131
2. Inbound Rule > Allow, UDP, C:\Program Files (x86)\Forged Alliance Forever\FAForever.exe, Scope:148_251_238_131
3. Outbound Rule > Allow, TCP, C:\Program Files (x86)\Forged Alliance Forever\FAForever.exe, Scope:148_251_238_131
4. Outbound Rule > Allow, UDP, C:\Program Files (x86)\Forged Alliance Forever\FAForever.exe, Scope:148_251_238_131

Then I launched ColaSoft-Capsa11Free to verify that only packets to 148_251_238_131 are occurring.
Blocked packets can also be seen at System32\LogFiles\Firewall\pfirewall.log.


So I created a test game, FinFin joined, and we played for 5 minutes with no direct connection, and my ping was much improved at 300.

If anyone else wants to try RELAY ONLY connections, this might be a good way to disable P2P direct connections.


If it works for you, please share your results.

Statistics: Posted by debtslave — 05 Nov 2018, 13:13


]]>