ICE adapter status report 2
-
This slide deck is great! Always great to learn more about how this stuff works. One tiny mistake: On page 5 and 6 you have "wholepunching" instead of "holepunching".
Thanks for all the hard work!
-
I was curious what language you were using when you teased this on the other post. Happy to see it's not Java, but sad it's Kotlin as I don't know any Kotlin to be able to contribute lol
Either way I applaud the effort to rewrite the adapter!
-
-
So short update: Thanks to some help of BlackYps the basic functionality to replace a real ice adapter is in place and will be tested soon.
-
@brutus5000 Is there any way someone with quite a bit of free time, a good bit of coding experience (admittedly not in Kotlin), and a willingness to do as told, might be useful to you?
Even if you just need tedious, repetitive tests running, I'd be so happy to help you with this. -
I also had no previous experience in Kotlin and managed, so I'd say we can definitely use your help. You can take a look here, even though at the moment there isn't too much explanation of what needs to be done: https://github.com/FAForever/kotlin-ice-adapter/issues
-
Just a quick thought: Wouldn't it be easier to create a FAF VPN and pretend all players are in a LAN network? That architecture would solve a lot of problems at its core and simplify the connection chaos.
-
- Putting a bunch of untrusted computers into a VPN is dangerous as it's no longer restricted to the FAF related ports.
- we'd need to create one vpn per game. That's a lot of server coordination required and sounds more complex than ice
- I see little reason why VPN should work if ice doesn't work
-
-
Fortunately had some hours yesterday that I could spend. I fixed tons of issues in the client<->ice adapter communication and the connectivity check.
On joining a game with the new ice adapter hosted by a classic ice adapter, the classic ice adapter debug window shows a persistent connection that is kept being alive.
Unfortunately my game still does not join a lobby (stuck in joining lobby screen), so I guess there are some issues in the ice-adapter<->game connectivity that I need to figure out. -
I'm optimistic that the new version will continue to work for those of us that use IPv6. The current version does as it all uses IPv4 by default. I guess my comment is merely to make you mindful that we exist. It's actually the default in my country (Australia) on Telstra for example.
I'm happy to be a tester when it becomes available.
-
I don't want to crush your hopes but I haven't seen any code disabling ip v6 before and I didn't see anything to enable it either. So don't expect any improvements there.
-
Does this option in the client just point to an empty hole then
-
Good question. Let me check this and I will post results here.
-
I have not seen it in the ICE adapter because the client sets a JVM property that bypasses the ice adapter and directly affects the underlying ice4j library. By default ipv6 gets explicitly deactivated and only enabled if the set is activated in the client.
-
@brutus5000 @clyf Well the last few games I played I didn't disable IPv6 on my PC and it worked fine. It was only a handful of games with one friend where I did that. It looks like everything is working the way it is meant to. Great news.
-
It works fine with IPv6 enabled (and always has in my experience), I think the question is does it work with IPv6 only? I know that's not a particularly common scenario at the moment but it could be in the future. Also with carrier-grade NAT could some people potentially see a better experience if it were to prefer IPv6?
-
If you have ipv6 only and the other side has -for some reason- ipv4 only, then it only works via relay. But in general it should work.
-
1 hour ago we played a game with
Still lacking features like reconnect and telemetry though.
-
Awesome!
-
-