[Denis Papp, CTO of TimeGate Studios, describes the process the team went through to enable a user-hosted PC server solution for Section 8 -- its Unreal Engine 3-powered shooter -- on Xbox 360 and PlayStation 3.]
When TimeGate first released Section 8 in 2009, players were introduced to a game that took a number of unique approaches to the FPS genre, both in game features and technical implementation. One of the most notable of these features was the inclusion of a dedicated server which allowed players to set up and host servers from their PC for the Xbox 360 and the PlayStation 3.
What follows is a retrospective from the studio on the development of these servers from conception to post-launch.
The idea for a dedicated server for consoles came up early in development, as we were focusing on simultaneous development of the PC and Xbox 360 SKUs. The vision for Section 8 was a large-scale game featuring 32 or more players. While this was not a significant hurdle for the PC, it posed a problem for the Xbox 360.
Traditionally, shooters on the PC support both "listen servers" (where one of the clients is also the host) with up to 16 players, and "dedicated servers" supporting upwards of 32 players. Given that most dedicated servers are run by users, the cost to support a large player base is minimal.
However, the majority of shooters on the console support only listen servers. Supporting a dedicated server to allow larger scale games requires hosting your own bank of servers in an approved XLSP environment (Xbox Live Server Platform), which can be very expensive in terms of hardware cost and management overhead.
Internally, we were not content with the idea of spending time creating large maps for the 32+ player game that would only be available to the PC audience, or only providing the Xbox 360 audience with a limited version of the original vision. We needed a solution where players could run their own dedicated servers to which Xbox 360 consoles could connect to over the internet.
This seemed like it should be possible, considering Section 8 for the PC was using Games for Windows Live, which leverages the same backbone as Xbox Live, and that a small number of previous titles (such as Shadowrun) featured cross-play support between the two platforms.
The first challenge we had to overcome was obtaining Microsoft's blessing to pursue the endeavor. We contacted Microsoft to see if they could offer any suggestions to get the end result that we wanted. Coincidentally, they were in the middle of authoring a whitepaper entitled "Dedicated Servers and Live" summarizing how to accomplish this using Games For Windows Live.
Essentially, we use the same XLAST for both the Xbox 360 and the TimeGate Dedicated Server (TGServer) builds, and the server presents itself as just another peer to the Live Matchmaking system through the standard API call to create a session.
The two binaries even use the same ID; the only difference between the XLASTs is a simple version number, and our build process automatically makes this correction. Microsoft configures their backend so the two titles can see each other. Note that this ID is not the same as the PC version of the game (which also uses GFWL), so we do not support cross-play, which would be significantly more challenging to support.
To Live, the server would appear as another PC client running the game. It required a GFWL Account and a Live Access Code (like a CD-key), but was a special build with no graphics or GUI.
This also meant the user could not access the GFWL Guide to sign in or register their Live Access Code, so we added command line parameters for registration of the code as well as User/Password authentication. Regardless, running in a typical dedicated server environment requires being able to be completely launched from the command line.
The Live Access Code restriction was the source of other limitations, since the TGServer was going to be made available as a free download.
In GFWL, at the time, there was no way to configure a title to either not require codes or to allow a single code to be shared among multiple accounts. This meant there needed to be a way to get unique Live Access Codes for each TGServer to each of the users.
Our solution was to leverage a sign-up system on the TimeGate community website to be able to distribute codes as needed and associate them with website accounts (this also allowed players to retrieve lost codes). In addition, we created pipelines for server hosting providers to request a bulk set of Live Access Codes.
Having a PC binary server hosting a game session for Xbox 360 binary clients requires the two to have the same protocol and the same cooked content. Section 8 is based on Unreal Engine 3, and little work was necessary to get the two builds to understand each other.
The second problem required us to create a new way to "cook for console" on the PC, so that the TGServer content would match what the Xbox 360 clients were using.
Matchmaking support was straightforward, but we needed a way for a user to find a specific server. If someone was going to go through the effort of setting up their own dedicated server for Section 8, they needed to be able to join that server from their Xbox 360. Traditional PC shooters provide ways to access servers by IP or provide large server browsers with various filters and search tools.
However, in the Live network there is no way to find someone by IP, and queries are restricted to returning 50 results (even if we could get a full browser, navigating a large list with a gamepad is not user-friendly). To address these usability problems, we added the ability to search for a server by the host name (i.e. their GFWL Gamertag) or by the Server Clan. Each dedicated server could be configured with a clan tag, making it easy to find.
Section 8 tracks persistent stats over time such as Experience, Levels, and Kills, with the GameSpy ATLAS system. Players can compare and rank against each other through Leaderboards and the Stats Portal website. However, this comparison is only valid if servers can be trusted to run without modifications or settings adjustment, which is difficult to enforce when anyone can host a dedicated server.
Working with GameSpy, we established a whitelist of servers and tools to manage the list. Only servers in the whitelist could be considered "Ranked" and were able to post game results to the stats backend. This includes TimeGate-hosted servers as well as specific, TimeGate-vetted hosting partners.
The first inclination for most people, if they were to setup a server whitelist, would be to use IPs. However, this didn't work for a number of reasons. Besides the fact that NAT use is so prevalent in the Internet today, the Live network simply does not easily provide IPs. Instead, the whitelist is based on the same unique profile ID used to post stats to the backend.
There were two substantial challenges with certification. The first was that the two products (Xbox 360 and the TGServer) had to go through their separate certification processes at the same time. We had to coordinate with representatives at Microsoft to ensure this went smoothly. The second challenge was to understand what subset of TCRs applied, given that a dedicated-server only GFWL title (with no GUI) was new to Microsoft certification.
As the TGServer was a GFWL title, certification was required at the time to get a certificate from Microsoft necessary for the binary to communicate with Live. In the end, it was straightforward, except for some issues with the Title Update process. Following the release of Section 8, Microsoft has since informed us that GFWL certification for future titles is being reduced or going away entirely.
The PS3 release of Section 8 followed the Xbox 360 release as a PlayStation Network-only download title. We built the TGServer for PS3 Consoles with the same pattern.
The process was easier the second time around, given our experience with working on the Xbox 360, and also that we were not required to send the PS3 server build through a certification process. GameSpy was used for matchmaking in both the PS3 client and the TGServer.
One of the biggest problems we observed, in terms of usability, was that a number of users who wanted to run dedicated servers for either platform were not very comfortable with the Windows command prompt.
Things were more complicated for the TGServer for the Xbox 360, since GFWL featured a number of extra steps: obtaining a GFWL account, registering a Live Access Code, and installing the GFWL redist.
Furthermore, GFWL features a number of restrictions such as only allowing one GFWL login per unique windows user account, and the same GFWL account can only be logged in at one machine at a time. For future titles, we are looking to develop a GUI to assist users in configuring and launching their dedicated server.
Despite a number of challenges along the way, we ultimately consider this endeavor a huge success. We also owe a huge thanks to our friends at Microsoft, Sony, and GameSpy for supporting our vision and helping us achieve our goal.
The end result is that players on the console are allowed to experience large scale 32-player games, as well as run their own server which can be configured as they see fit. With our feet firmly planted in this new arena, we fully intend to provide this feature to players on our future titles.