First post, by digitalillusion
I wanted to play Fragile Allegiance with my brother on DOSBox. The game support multiplayer and we were able to start a game where either one of us was the server and the other the client using IPX.
However, after around ten minutes playing, the game of the client froze. I suspected it was due to UDP packet loss.
Infact IPX was designed to play on LAN. On an ethernet connection, there is no packet loss; but the internet is different.
My goal was to upgrade the IPX udp connection to rudp, or reliable UDP, or in other words Aeron: https://github.com/real-logic/aeron
I built a simple utility that performs the task of upgrading the connection, and we were able to finally finish a game.
For the moment, it is necessary to perform a port forward on both sides, but I'm looking into making it work through NAT traversal.
The project source code is available on my github: https://github.com/digitalillusion/rudp-tunnel
If anybody who is not technical is interested to try it out, I can provide compiled executables.
Using it is simple. First, both sides run the Aeron driver and ensure port 40123 is forwarded. Then, just run the tool before starting DOSBox on each side.
I paste here the example from my github repo; imagine to have the server on 188.8.131.52 and the client on 184.108.40.206
Start the server-side proxy, open a channel with the remote client and listen on the IPX server address (destination)
rudp-tunnel -r 220.127.116.11 -d 127.0.0.1:19900
Then, the client-side proxy opens a channel with the remote server on a given routing interface and listens to an IPX connection (origin)
rudp-tunnel -r 18.104.22.168 -i 192.168.1.208/8 -o 127.0.0.1:19901
Afterwards, IPXNET binds a server on the server side, inside DOSBox:
ipxnet startserver 19900
Finally, on the client side, IPXNET client (always inside DOSBox) connects to the tunneled IPXNET server:
ipxnet connect 127.0.0.1 19901
I did not test yet with more then 2 players, but I assume that it should work.
I hope that anyone can find this tool useful. Cheers!