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 supports 2 runtimes: .NET 4.8 and .NET 8.0.
- Both runtimes have 3 rendering engines: Windows DirectX11, Windows OpenGL and Windows XNA.
- .NET 8.0 in addition has a cross-platform Universal OpenGL engine.
- The DirectX11 and OpenGL engines rely on MonoGame.
- The XNA engine relies on Microsoft's XNA Framework 4.0 Refresh.
To build the client, you must use Git to clone the repository, instead of downloading a ZIP archive. After cloning, make sure to initialize and update the submodules using the following command:
git submodule update --init --recursiveBuilding for any platform requires the .NET SDK 10.0. Editing the source code requires Visual Studio 2026 or newer, or Rider 2025.3 or newer. A modern version of Visual Studio Code also works, but is not officially supported. To debug WindowsXNA builds the .NET SDK 10.0 x86 is additionally required. When using the included build scripts, PowerShell 7 is required.
-
It is simple to build the client. Assuming you have the .NET SDK 10.0 and PowerShell 7 installed, you can just double-click
Scripts/build.batto compile it right away. You can then copy the contents of thisCompileddirectory into theResourcessub-directory of any target project. Please turn off Visual Studio while executing scripts. -
If you want to run the client in debug mode, open the solution file
DXClient.slnxusing Visual Studio, and select Debug -> Start Debugging (F5).
Important
If you switch among different solution configurations in Visual Studio (e.g. switch to UniversalGLRelease from WindowsDXDebug), especially switching between .NET 4.8 and .NET 8.0 runtimes, it is highly 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 also highly recommended to close Visual Studio when using the scripts in Scripts folder.
-
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
Resourcessub-directory itself for .NET 4.8, namedclientdx.exe,clientogl.exeandclientxna.exe. Each.exefile or.dllfile expects a.pdbfile for diagnostics purpose. It's advised not to delete these.pdbfiles. Keep all.pdbfiles even for end users. -
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.jsonfiles are required for the corresponding .NET 8 DLLs. When built on an OS other than Windows, only the Universal OpenGL engine is available. -
Some dependencies are stored in
Referencesfolder 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)nupkgfiles of a package, without altering the package version, be sure to remove the corresponding package from%USERPROFILE%\.nuget\packagesfolder (Windows) to purge the old version.
Refer to Docs/Build.md for more information about building the client.
-
Windows: Windows 7 SP1 or higher is required. The preferred rendering engine is DirectX11 (.NET 4.8), i.e.,
clientdx.exe. If your GPU does not support DX11, consider using the OpenGL or XNA engine instead. Advanced users may experiment with .NET 8 runtime at their discretion. -
Other OS: Use the Universal OpenGL engine.
(Optional) The XNA engine 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 engine requires:
Windows 7 SP1 and Windows 8.x additionally require:
- Microsoft Visual C++ 2015-2019 Redistributable 64-bit / 32-bit. Note: the latest version of this redistributable is named "Microsoft Visual C++ 2015-2026 Redistributable", available here. We recommend using the latest version instead of the 2015-2019 version.
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 xna-cncnet-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.
CnCNet Client Copyright (C) 2013-2026 CnCNet, Rampastring
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
If you modify this program, or any covered work, by linking or combining it with the Steamworks SDK (or a modified version of that library), containing parts covered by the terms of the Steamworks SDK's license, the licensors of this program grant you additional permission to convey the resulting work.

