For those unfamiliar, Tiberian Sun (and other C&C titles) were largely popular RTS games in the late ’90s and early 2000s.
I’ve been enjoying Rivals for quite some time now and with C&C Remastered released, this post is really just to reminisce about some of the fun C&C projects I’ve worked on throughout the years. Have found the code to some of these projects and uploaded it to Github, others have likely been lost forever. Let’s be honest though, it was probably junk code anyway!
Tiberian Sun Filter (TSF)
Tech used: mIRC Script, SQLite, Ethereal (Wireshark)
There wasn’t a great way to track players back in the day and anyone could very easily spin up a new account. This small snippet would act as a relay/man-in-the-middle between the Tiberian Sun Game Client and XWIS Server and collect/associate IP information on players. It would then display all the alternative accounts they’ve used based on the association.
I learned A LOT on this project about Client/Server relationships. And how easily a Server can fault if validations aren’t put in place
In hindsight, this probably didn’t agree well with Westwood’s EULA 😅
XWIS Player Index (XPI)
Eventually, friends wanted the same capability as TSF above. So decided to modify it and instead of writing to a local SQLite file, it’d publish to a hosted DB. Then built a UI via custom Drupal 6 modules for others to have the ability to lookup/comment on players. Cheating unfortunately also became rampant around this time. So XPI also became a way for players to identify those who played less than fair.
Legacy C&C Server Emulator
Tech used: mIRC Script, MySQL
I don’t remember when or why but, had a go at reverse-engineering the existing WOL Game Server Protocol to recreate an alternative game server, dubbed CNC:EVO.
I’m not really sure what was “evolved” about it exactly but, it was thankfully, a short-lived, alternative to XWIS — who was the official server for legacy Command and Conquer games after taking over for Westwood Online (WOL).
XWIS REST API
Tech used: PHP
I wanted to include more stats about players in XPI but, XWIS only provided stats for players via HTML.
This project scraped the XWIS site and provided the same results via JSON. There weren’t many changes to the XWIS site, in fact, it’s likey the same now as it was then. So this API worked for quite some time and may even still work today 🤣
XWIS Stats Signatures
Tech used: PHP
With the newfound API, and since forums — and bbcode forum signatures — were the rage back then, I thought it’d be cool to provide a dynamically generated forum signature. Clearly inspired by Battlefield, these became pretty popular in the community.
The “experience” below was my first attempt at continuous ladder progression for players, as the XWIS ladder reset every month.
Building on the idea of a continuously progressive ladder, I built out a site using similar logic. This became a widely used unofficial ladder in the community — in fact, many people wanted it to become to the official ladder and were disappointed when I decided to focus on other projects.
XWISAdmin Web Interface
Tech used: Node, Socket.io
Given my XWIS hijinks and contributions to the community, I earned a spot on the XWIS Help Team, and shortly after was promoted to the XWIS Admin team. The way the XWIS Admin bot was controlled was really outdated at this point; this project converted/replaced it with a real-time Web Interface.
This was basically a websocket over an IRC-like server; nothing fancy but, better than launching the Game Client to manage the Server.
CnCNet REST API
Tech used: Node, Restify, MongoDB
So by this point, XWIS was on the decline and CnCNet was on the rise. CnCNet is a great project with a lot of community support — and is likely still the best place to play legacy C&C games. CnCNet didn’t have a ladder at the time though, so this was the first “official” ladder. Unlike XWIS where I was scraping/reparsing stats, the game clients sent data directly to my endpoints via some pretty intense patches.
CnCNet Client (incomplete)
Tech used: Electron, Angular, Node
This was a stab at learning more about Electron and attempting to building a custom client on the CnCNet foundation. Didn’t really go anywhere but, was certainly a lot of fun!
I’ve learned a lot through these, had a lot of fun, and met a lot of great people. And it’s been a ton of fun reminiscing about these projects! Command and Conquer has been a big part of my life and glad to see it making a bit of a comeback.
These days I’m still enjoying time on Rivals — and the alliance I founded (during the Alpha release!) aptly named “Tiberian Sun”, typically remains on the Top 25 Leaderboard!
Come join us on Discord, as we’re always recruiting!
See you on the battlefield Commander!