Learn software development at scale from an AAA project
A 9 minutes story written on Nov 2017 by Adrian B.G.
It is a good time to be interested in software development, just by browsing the internet you can learn how over 400 employees from 4 different studios are developing a couple of AAA games.
The games are funded by the community (
$160M 214M so far), and as a response, the developers have a transparent building process, each week they publish reports and videos with their work, the problems they faced and what the future plans are.
With this post, I will try to guide you through the myriad of resources posted by CIG over the years (the project started in 2012) and help you find something useful (for you).
You do not have to be a gamer, or to know much about games in order to follow and learn new things from this project, but if you are you’ll be even more thrilled.
To hook you in reading this article, let me give you an example of how complex the Star Citizen game simulator will be: each ship has an artificial gravity engine, and each component (fuel, pipes, screens, coolers, ammo etc) has a physical game object representation. As a result, if you know where the fuel pipeline is on a specific type of ship and shoot a bullet there, you will cripple or destroy that ship.
The “software project” I am talking about is StarCitizen.
Star Citizen is an upcoming space living simulator video game for Microsoft Windows and GNU/Linux in development by Chris Roberts and Cloud Imperium Games. Star Citizen will consist of two main components: first person space combat and trading in an MMO-style Persistent Universe and modifiable, optionally cooperative private servers including a branching single player campaign known as Squadron 42.
Let me translate this, if you are not a gamer: the game will have an open world, where thousands/millions of players can connect and play with one another in real time, by connecting to the developer servers. Their world will also be populated by NPCs (AI driven in-game characters) and every action you make will be persistent (saved in their database), like buying a space ship and crashing.
The game is not released yet, it has been in alpha stage since 2013, but they developed a good chunk of the game so there is plenty to learn already.
Service as a Software 👷♀
The scope of the project is huge, first, they have to develop the base technologies and systems on top on which they can build a next-gen game. They are trying to maintain an open development process, a thing that has never been done (at this level).
As a technical note, they are using the Amazon AWS hosting services and they have a custom version of the Lumberyard engine (an Amazon CryEngine fork).
If you are interested in the following domains/positions you will surely be interested in this article: Graphics, Development, DevOps, Project management, Q&A, Community Management, Sound, Lighting, Special effects.
Bugsmasher is a weekly show in which a developer guides us through the debugging and fixing processes that an everyday game developer has to do. You can see how hard (or easy if you have the proper tools) it is to reproduce a specific problem in a big software project.
The most important things you can learn from this show is how specific systems work in a big system and how important the development tools are. The host usually explains in detail how a system works (example dodging or physics engine), how and why the bug exists and what the fix is. There are also live coding sessions in C++. Here are a few examples and the full playlist.
A network serialization problem of physics engine data that affected throwing grenades. Legacy code that affects new functionalities, animations and crashes. How an uninitialized variable wreaked havoc on the IFCS system. How a translation between multiple coordinate systems can screw your day. More on Youtube.
Copy-writing and lore ✍️
The Star Citizen universe has a rich lore, the writers had to make up multiple alien civilizations, a possible humanity future, thousands of companies and hundreds of planets down to the detail of personal background stories for the main characters.
If you want to write novels, sci-fi or just background stories for games you can learn from these videos how a big company does it.
The universe has (so far) 100 solar systems, each of them is presented (from the lore point of view) in the show Star Citizen: Loremaker’s Guide to the Galaxy.
This Around the Verse Special Edition features features an extended interview with Britton Watkins (Star Trek: Into Darkness), the xenolinguistics specialist who’s creating languages for the various aliens of the Star Citizen universe. You can also watch an introduction to the Xi’an language, briefly take you through the basic pronunciation rules and semantics. The Xi’an history and psychology are explained in this video. Britton Watkins also started a series of videos to help players learn the SciFi language “Xi’ (reading, writing and speaking), and some say it will be the new Klingon.
In the following video, the lead writer and a few members of his team explain how everything started, how working with other departments affect their work, how they store their data and the game design documents and more.
Starting with the minute 19 you can see here howeach corporation must have proper in game assets to match the story elements.
You can read the entire Star Citizen lore, mini novels and stories in a user made eBook. I did this and is fascinating.
If you are into physics engines you are in the right place. CIG made physics a first-class citizen in their space sim.
Here is a short demo of the Physics Grid system StarCitizen will further develop. I also recommend this panel: CitizenCon 2947 — Enhancing Mocap Data with Procedural Systems, you will understand what problems they encounter when they tried to add Characters and AI into a procedurally generated 3D world.
The main focus on this topic will be Squadron 42, a single player campaign based game that takes part in the same universe. Its development is driven by a more personal, deep player experience so music has a big impact on it.
_The following episode of “Around the Verse” explores the art and tech behind the score for Squadron 42. Composer Geoff Zanelli (Pirates of the Caribbean: Dead Men Tell No Tales, The Pacific, Outlander) walks us through his process, while Ross Tregenza and Lee Banyard discuss the technical challenges for the CIG Audio team:
Actors, motion capture & animations 👸
Most of the character animations from both games are captured with real human actors and then embedded in the game, with some procedural tweaks topping.
The developers want to make these games as realistic as possible, so on top of the animations they added dynamic rules and programming, like a stamina system: when your character gets tired it affects your aiming and running, more on this here: Around the Verse — Stamina and the Actor Status System. The animations are also affected by the (infinitely diverse) 3D obstacles you will find while walking around the universe: Mocap Data.
Facial animations will be a thing in StarCitizen, players can turn on their webcam and talk with their friends, while their in-game avatars will replicate their real face movements using the “Faceware” and “Face over IP” technologies.
Network, servers and DevOps 💻
Their massive MMO server infrastructure and technologies are not finished yet, they are adding new features as they go along. In the end they need to have a global game network, with a single database and a virtual world where thousands of players can fight each other in real time.
In the next video (minute 13+) you will learn about how to improve a classic data channel communication between clients and servers using variable serialization:
Starting at minute 15, in the following video you can learn about the IT hardware and network needed for the development process for a few hundred developers.
The graphics part of the game is scattered around the published resources, but a recent video got my attention: CitizenCon 2947 — The Art and Tech of Stanton”. It is about how the designers try to be as creative as they could be in a procedural system, and how does technology limits their imagination.
A more technical approach of the subject was made here: CitizenCon 2947 — Graphics and Tech Development for Star Engine, the developers talk about how each frame is made and rendered, and what it contains.
Project management 🗄
The best video you can find on the internet about this topic is the following: Live feature production schedule. If you are just starting in management, it is a good example of how to split a huge feature to many small teams and how to deal with their dependencies.
Another great resource is Star Citizen: Building a Schedule for a Universe. You can also assist real planning meetings between different studios across the globe, for that you can see the first 15minutes of all episodes of “Around the Verse” show (oct-nov-dec 2017).
Community management 🌆
CIG has a small team of community managers, but they are doing a great job! Besides organizing contests, helping the streamers and watching the community forums and Reddit they also have a couple of weekly shows.
Happy Hour is a weekly show with multiple themes, for example in Happy Hour Gamedev episodes different game developers (designer, writer, developer etc) are invited and put to a live test (to do a real feature).
Citizens of the Stars is a show for the community by the community. One part involves a CIG developer answering as many questions as he can in 2 minutes, and one is a top 5 fan made projects (made by the community, PS: I got featured 2 times: one for 1st place and one 2nd).
Bottom line 🤔
The bottom line is that … it is the first time in history a software project of this magnitude is so transparent, it is like watching Google building the Jupiter network live.
Even if you are not a SF, Space or Game geek (why the hell aren’t you anyway?) you can learn a lot of stuff, in my opinion, from these projects.
Even if I saw most of the Star Citizen videos and read the entire Lore it took me a while to gather the most representative videos for this article, I hope it was worth it.
I curate a list of articles, talks and papers for one/two times per month. They are mostly related to computer science, distributed systems, databases, Go, containers and Cloud solutions.