CnCNet / xna-cncnet-client

XNA / MonoGame based client for playing classic Command & Conquer games both online and offline with a CnCNet game spawner.
Other
223 stars 86 forks source link
c-sharp cncnet command-and-conquer dawn-of-the-tiberium-age monogame redalert tiberiansun xna yurisrevenge

CnCNet Client

The MonoGame / XNA CnCNet client, a platform for playing classic Command & Conquer games and their mods both online and offline. Supports setting up and launching both singleplayer and multiplayer games with a CnCNet game spawner. Includes an IRC-based chat client with advanced features like private messaging, a friend list, a configurable game lobby, flexible and moddable UI graphics, and extras like game setting configuration and keeping track of match statistics. And much more!

You can find the dedicated project development chat at C&C Mod Haven Discord server.

Targets

The primary targets of the client project are

However, there is no limitation in the client that would prevent incorporating it into other projects. Any game or mod project that utilizes the CnCNet spawner for Tiberian Sun and Red Alert 2 can be supported. Several other projects also use the client or an unofficial fork of it, including Tiberian Sun Client, Project Phantom, YR Red-Resurrection, The Second Tiberium War and CnC: Final War.

Development requirements

The client has 2 variants: .NET 4.8 and .NET 8.0.

Building the solution for any platform requires Visual Studio 2022 17.8 or newer and/or the .NET SDK 8.0.200. A modern version of Visual Studio Code, MonoDevelop or Visual Studio for Mac could also work, but are not officially supported. To debug WindowsXNA builds the .NET SDK 8.0 x86 is additionally required. When using the included build scripts PowerShell 7.2 or newer is required.[^install-powershell]

Compiling and debugging

Development workarounds * If you switch among different solution configurations in Visual Studio (e.g. switch to `TSUniversalGLRelease` from `AresWindowsDXDebug`), especially switching between .NET 4.8 and .NET 8.0 variants, it is recommended to restart Visual Studio after switching configurations to prevent unexpected error messages. If restarting Visual Studio do not work as intended, try deleting all `obj` folders in each project. Due to the same reason, it is advised to close Visual Studio when building the client using the scripts in `Scripts` folder. * Some dependencies are stored in `References` folder instead of the official NuGet source. This folder is also useful if you are working on modifying a dependency and debugging in your local machine without publishing the modification to NuGet. However, if you have replaced the `.(s)nupkg` files of a package, without altering the package version, be sure to remove the corresponding package from `%USERPROFILE%\.nuget\packages` folder to purge the old version.

End-user usage

End-user requirements

Windows .NET 4.8 requirements:

(Optional) The XNA build requires:

Linux requirements:

macOS requirements:

Windows .NET 8.0 requirements:

Windows .NET 8.0 requirements * The [.NET 8.0 Desktop Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/8.0/runtime?initial-os=windows) for your specific platform. (Optional) The XNA build requires: * [Microsoft XNA Framework Redistributable 4.0 Refresh](https://www.microsoft.com/en-us/download/details.aspx?id=27598). * [.NET 8.0 Desktop Runtime x86](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-8.0.0-windows-x86-installer). Windows 7 SP1 and Windows 8.x additionally require: * Microsoft Visual C++ 2015-2019 Redistributable [64-bit](https://aka.ms/vs/16/release/vc_redist.x64.exe) / [32-bit](https://aka.ms/vs/16/release/vc_redist.x86.exe). Windows 7 SP1 additionally requires: * KB3063858 [64-bit](https://www.microsoft.com/download/details.aspx?id=47442) / [32-bit](https://www.microsoft.com/download/details.aspx?id=47409).

Client launcher

This repository does not contain the client launcher (for example, DTA.exe in Dawn of the Tiberium Age) that selects which platform's client executable is most suitable for each user's system. See dta-mg-client-launcher.

Branches

Currently there are only two major active branches. develop is where development happens, and while things should be fairly stable, occasionally there can also be bugs. If you want stability and reliability, the master branch is recommended.

Screenshots

Screenshot Screenshot

[^install-powershell]: How To Install PowerShell Core