Vanilla-Conquer icon indicating copy to clipboard operation
Vanilla-Conquer copied to clipboard

Network play

Open hifi opened this issue 5 years ago • 7 comments

To get network play further we can start by testing the IPX winsock implementation in RA and refine it until it works with an IPX emulation dll like CnCNet 4. We can test that over the internet as well with it.

Once IPX works we can switch it over to real UDP and remove all legacy IPX code and update TD to use the same networking classes internally over the legacy thipx16/32 thing.

Finally the networking code can be cleaned up to work cross platform.

hifi avatar Dec 01 '20 19:12 hifi

I'm going to take this as my next task after #205 is merged.

hifi avatar Dec 05 '20 22:12 hifi

#487 has some early work.

hifi avatar Jan 24 '21 14:01 hifi

I just went straight for the UDP implementation. Though most of the code still refers to ipx, the class that handles the actual sending and receving of packets is implemented on top of a virtual interface and the implementation used for LAN is now UDP.

OmniBlade avatar Feb 04 '21 23:02 OmniBlade

With #487 merged RA has LAN UDP netplay. #680 backports this to TD and needs verifying on windows to resolve a basic net play implementation.

OmniBlade avatar Nov 19 '21 20:11 OmniBlade

I am more than happy to help on this part. If the code should be expected and accepted. (I don't want to waste my time.) So I think useful are:

  • Finish the network over UDP
  • TLS implementation
  • simple HUB code (register player, find other player matches) (Like the westwood online)
  • headless server. (maybe that not an easy part)

Soldy avatar May 10 '22 09:05 Soldy

@Soldy Thanks for the interest, I haven't updated this ticket in a while, but the TD work was merged so we have a functional networking implementation over IP/UDP and a LAN based lobby/matchmaking system that relies on broadcast packets so doesn't scale to the internet.

I've also fixed a majority of issues affecting cross platform play so its possible to play RA between at least Linux and Windows 64bit builds on x86_64 hardware and possibly beyond that though only that combo was tested. Fixes for TD are in progress.

Our initial instinct is to implement what the CNCNet client uses for matchmaking with the original client binaries and make use of their infrastructure to implement internet play, but if you have other ideas on possible solutions, you could discuss them on the discord server (which is accessible from other services such as matrix as well if you don't want to use discord).

OmniBlade avatar May 10 '22 10:05 OmniBlade

This is really cool. Have you guys thought about looking at OpenRA for ideas? It has many QOL improvements.

pleasejustgo avatar May 30 '23 07:05 pleasejustgo