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.
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.
The client has 2 variants: .NET 4.8 and .NET 8.0.
- Both variants have 3 builds: Windows DirectX11, Windows OpenGL and Windows XNA.
- .NET 8.0 in addition has a cross-platform Universal OpenGL build.
- The DirectX11 and OpenGL builds rely on MonoGame.
- The XNA build relies on Microsoft's XNA Framework 4.0 Refresh.
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.1
- Compiling itself is simple: assuming you have the .NET 8.0 SDK installed, you can just open the solution with Visual Studio and compile it right away.
- When built as a debug build, the client executable expects to reside in the same directory with the target project's main game executable. Resources should exist in a "Resources" sub-directory in the same directory. The repository contains sample resources and post-build commands for copying them so that you can immediately run the client in debug mode by just hitting the Debug button in Visual Studio.
- When built in release mode, the client executables expect to reside in the
Resources
sub-directory itself for .NET 4.8, namedclientdx.exe
,clientogl.exe
andclientxna.exe
. Each.exe
file or.dll
file expects a.pdb
file for diagnostics purpose. It's advised not to delete these.pdb
files. Keep all.pdb
files even for end users. - The
Scripts
directory has automated build scripts that build the client for all platforms and copy the output files to a folder namedCompiled
in the project root. You can then copy the contents of thisCompiled
directory into theResources
sub-directory of any target project.
.NET 8 builds
- For .NET 8, When built in release mode, the client executables expect to reside in
Resources/BinariesNET8/{Windows, OpenGL, UniversalGL, XNA}
folders, namedclient{dx, ogl, ogl, xna}.dll
, respectively. Note thatclient{dx, ogl, ogl, xna}.runtimeconfig.json
files are required for the corresponding .NET 8 dlls. - When built on an OS other than Windows, only the Universal OpenGL build is available.
Development workarounds
- If you switch among different solution configurations in Visual Studio (e.g. switch to
TSUniversalGLRelease
fromAresWindowsDXDebug
), 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 allobj
folders in each project. Due to the same reason, it is highly advised to close Visual Studio when building the client using the scripts inScripts
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 (Windows) to purge the old version.
- Windows: Windows 7 SP1 or higher is required. The preferred build is DirectX11 (.NET 4.8), i.e.,
clientdx.exe
. If your GPU does not support DX11, consider using the OpenGL or XNA build instead. Advanced users may experiment with the .NET 8 builds at their discretion. - Other OS: Use the Universal OpenGL build.
(Optional) The XNA build requires:
- The .NET 8.0 Runtime for your specific platform.
- The .NET 8.0 Runtime for your specific platform.
Windows .NET 8.0 requirements
- The .NET 8.0 Desktop Runtime for your specific platform.
(Optional) The XNA build requires:
Windows 7 SP1 and Windows 8.x additionally require:
Windows 7 SP1 additionally requires:
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.
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.