All about CnCNet
CnCNet is a community built partially open source gaming system created to play the classic Command & Conquer games over the internet without any form of required registration.
Today, CnCNet 5 consists of multiple different systems that together overcome many limitations and issues the games had back in the day. Playing online does not require you to forward any ports anymore nor there are any limits on how many players can play from the same house.
Command & Conquer (Tiberian Dawn), Red Alert and Tiberian Sun are currently the games supported by CnCNet 5. Red Alert 2 and mods have legacy CnCNet 4 support for now. Official support for mods of supported games also exist.
The CnCNet project was started in 2009 by Myg as a spritual successor originally to his then abandoned C&C Global LAN Edition and LANMate projects started in 2006. The main objective was to create an easy way of playing the first Command & Conquer game online - Just install and play!
The first CnCNet versions just like it's predecessors had preformance issues and used methods liked by neither ISPs nor routers in general, but it worked. In 2010 Irony joined the team and helped adding new GUI and troubleshooting elements to the then simple but confusing GUI, together with some changes and optimalizations to Myg's code.
Later in 2010, hifi joined the crew and rewrote everything - twice.
First was CnCNet v2 which lived a long stable life. It was based on an old project that he called Red Alert Online which was supposed to be a service just like CnCNet but only for Red Alert. The code was expanded to support the classic Command & Conquer and later also Tiberian Sun and Red Alert 2. CnCNet v2 worked with a dedicated broadcast server that emulated IPX and echoed the LAN broadcast packets over the internet creating an internet wide LAN when used.
It's only problem was that it required a port forward and didn't work very well if you didn't do it.
In late 2011 hifi decided it was time to upgrade with a new plan. CnCNet 3.0 was born! What made 3.0 superior to 2 in paper was that it didn't use a custom dedicated server to forward those broadcast packets but instead used a web service to just fulfill the virtual LAN client list upon connecting. This allowed a simpler client and server implementation and the completely rewritten client code could handle non-forwarded clients better. However, it was soon discovered the method of filling LAN clients didn't work that well in the real world.
Soon after 3.0 failed, hifi added a dedicated server support to it and released 3.1 that used the dedicated server by default. This proved to be a huge success as after that everyone could connect and the added latency of the dedicated was not that much than we expected.
3.1 had one problem, it required more bandwidth that was available and also slowed games down by forcing a tunneled mode that forwarded all the traffic through the CnCNet server. The next version, 4.0, was quickly written from the ashes of 3.1 and released as an update that added back the long wanted peer-to-peer mode.
No one could have anticipated how popular CnCNet would become. The amount of simultaneous players peaked at almost 200 in 2013. CnCNet 4 was not designed to handle this amount of players and it started to show its weaknesses to the players. Having only one server for everyone didn't cut it anymore as the amount of traffic that passed through it started choking low bandwidth connections, had high latency for non-Europeans and other issues.
Around 2012, hifi got a new idea how to handle any number of simultaneous players without any real issues. CnCNet 5 was slowly beginning to take shape.
The idea consisted of game executable hacks that would allow starting the game into any pre-configured game mode with any number of players already in the game. This would allow writing a separate new client software that would handle everything before actually dropping in-game and planting your first Construction Yard.
August 25th 2012, the first CnCNet 5 'spawner' code was committed into ra303p project git repository. This was the first release of any CnCNet 5 related code. This code, however, isn't very useful alone and was left to bit rot over 6 months.
Sometime early 2013, FunkyFr3sh picked up the task to write a proper CnCNet 5 client. First it was just to experiment with the spawner but later became so feature rich and usable it ended up as being the official CnCNet 5 client when it was finally released.
Iran, a member of the community, started adding fixes and new features later in 2013 to the RA spawner and it became very feature rich: selectable spawn locations, pre-configured alliances, real spectator mode and much more. He is the current main developer of the ra303p project.
Quickly after pushing the first spawner for RA, hifi started working on the version for Tiberian Dawn. Beginning of September 2012, the first version was committed to git and was barely usable. After testing it for almost half a year it was doomed to be unstable and ureliable.
In May 2013, hifi rewrote the spawner code for TD which finally fixed up all of the connection problems people were having. This was a major stepping stone to finally get closed to release CnCNet 5.
During the whole year of 2013, CnCNet 5 client was worked on, features added, fixes put it, polishing, anything you can imagine. Finally, November 19th 2013, hifi decided CnCNet 5 was complete and it was released to the public.
The CnCNet 5 team mainly consisted of hifi (backend: spawner code, tunneling system, mapdb), FunkyFr3sh (frontend: the client) and Iran (spawner code, game fixes, features). We'd like to thank everyone involved in development and testing during the almost two years it took to make CnCNet 5!