TheAssemblyArmada / Vanilla-Conquer

Vanilla Conquer provides clean, cross-platform builds of the C&C Remastered Collection and the standalone legacy games.
Other
351 stars 53 forks source link

Network play #200

Open hifi opened 3 years ago

hifi commented 3 years ago

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 commented 3 years ago

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

hifi commented 3 years ago

487 has some early work.

OmniBlade commented 3 years ago

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 commented 2 years ago

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.

Soldy commented 2 years ago

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:

OmniBlade commented 2 years ago

@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).

pleasejustgo commented 1 year ago

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