Forged Alliance Forever

UNDER CONSTRUCTION

I’ve been contributing to the Forged Alliance Forever open-source project since December 2016. FAF is a community-made Lobby/Tournament/Map-/Mod-Vault project for the real time strategy (RTS) game Forged Alliance from 2007.

There, I’ve spent some time on the client using Spring and JavaFX. Additionally, I contributed code on multiple different projects, including the server, discord bot and map generator. I also helped out as a sysadmin monitoring and managing the server’s operation.

The game internally uses a peer to peer network architecture that tends (tended) to disconnect players from the game regularly. Due to this I’ve also invested quite some time into fixing/writing an ICE adapter for NAT traversal which aims at tunneling all game connections through the local adapter and using the Interactive Connectivity Establishment (RFC 5245, candidate discovery, STUN+TURN) protocol for connecting to other players.

Developement of this adapter isn’t trivial as everyone’s network architecture is different making debugging pretty tricky. To mitigate this problem, I developed a test server and client, that simulate a running game and can execute different scenarios. All gathered data, statistics and errors are automatically reported back to a central server. Overall developement took a total of 2.5 years and 5 rewrites of the adapter due to high library CPU load when using a node based solution, high traffic due to forced encryption when using WebRTC and additional challenges. (including me somehow loosing my first take on implementing an adapter which was in a pushed git repository located inside my cloud folder, still trying to figure out how that happened)

It was deployed and is operating since 2019.

The debug window of the ice adapter after having established a connection to all players in game

An in-detail description of the ice adapter and the project can be found on the FAForever Forums: https://forum.faforever.com/topic/3288/but-what-the-heck-is-the-ice-adapter