Author Archives: Valve Linux team

The Great Winter Migration

It is unusual for penguins to migrate but our penguins are a bit different; perhaps it has something to do with the heat?

In any event, the Steam for Linux limited beta began in early November with the initial group taken from respondents to the Steam for Linux beta survey. We are adding more participants on a regular basis so if you haven’t filled out the survey, you can find it here.

In order to support the large interest around the limited beta, we’ve created a new Steam for Linux Hub and “migrated” our information and support over. It offers all the features of a Steam Game Hub, so you’ll be able to keep tabs on Linux announcements, discussions and news. Join the official group and you’ll even see our announcements in your community activity feed.

Future plans for the blog are to be determined but for now you can find all the latest info at the Steam for Linux hub:
http://steamcommunity.com/linux .

See you there!
– the Valve Linux team

External Beta News

Things have been going well. We will be having an internal beta starting next week, and a private external beta for 1,000 users sometime in October.

The private external beta will include:

  • Steam
  • One Valve game
  • Support for Ubuntu 12.04 and above

It will not yet include:

  • Big Picture mode
  • Additional Valve games

For existing Linux users, the external private beta is a good release for seeing where we are in running our games on Linux. We will be using a sign up page for the external beta. Information about the sign up will be announced in a future post.

For those new to Linux, we recommend waiting for a subsequent release where more features are implemented along with improvements to the user install experience.

Faster Zombies!

One factor in creating a good gaming experience is throughput.  This post discusses some of what we’ve learned about the performance of our games running on Linux.
As any software developer can tell you, performance is a complicated issue.  In the interests of simplicity, we’ll concern ourselves with the following high-end configuration:

Hardware

  • Intel Core i7 3930k
  • NVIDIA GeForce GTX 680
  • 32 GB RAM

Software

  • Windows 7 Service Pack 1 64-bit
  • Left 4 Dead 2
  • Ubuntu 12.04 32-bit

We are using a 32-bit version of Linux temporarily and will run on 64-bit Linux later.
Running Left 4 Dead 2 on Windows 7 with Direct3D drivers, we get 270.6 FPS as a baseline. The data is generated from an internal test case.

When we started with Linux, the initial version we got up and running was at 6 FPS. This is typical of an initial successful port to a new platform.
Performance improvements fall into several categories:

  • Modifying our game to work better with the kernel
  • Modifying our game to work better with OpenGL
  • Optimizing the graphics driver

An example of the first category would be changing our memory allocator to use more appropriate Linux functions. This was achieved by implementing the Source engine small block heap to work under Linux. The second category would include reducing overhead in calling OpenGL, and extending our renderer with new interfaces for better encapsulation of OpenGL and Direct3D.
The third category is especially interesting because it involves working with hardware manufacturers to identify issues in their drivers and, as a result, improving the public driver which benefits all games. Identifying driver stalls and adding multithreading support in the driver are two examples of changes that were the result of this teamwork.
After this work, Left 4 Dead 2 is running at 315 FPS on Linux. That the Linux version runs faster than the Windows version (270.6) seems a little counter-intuitive, given the greater amount of time we have spent on the Windows version. However, it does speak to the underlying efficiency of the kernel and OpenGL. Interestingly, in the process of working with hardware vendors we also sped up the OpenGL implementation on Windows. Left 4 Dead 2 is now running at 303.4 FPS with that configuration.

OpenGL versus Direct3D on Windows 7

This experience lead to the question: why does an OpenGL version of our game run faster than Direct3D on Windows 7? It appears that it’s not related to multitasking overhead. We have been doing some fairly close analysis and it comes down to a few additional microseconds overhead per batch in Direct3D which does not affect OpenGL on Windows. Now that we know the hardware is capable of more performance, we will go back and figure out how to mitigate this effect under Direct3D.

Working with hardware vendors

We’ve been working with NVIDIA, AMD, and Intel to improve graphic driver performance on Linux. They have all been great to work with and have been very committed to having engineers on-site working with our engineers, carefully analyzing the data we see. We have had very rapid turnaround on any bugs we find and it has been invaluable to have people who understand the game, the renderer, the driver, and the hardware working alongside us when attacking these performance issues.
This is a great example of the benefits that are the result of close coordination between software and hardware developers and should provide value to the Linux community at large.

New Comment Policy

Starting with this post and in the future, only comments that contribute in a substantive way to the current discussion will be approved. We appreciate the excitement and support but we want the comments to be readable and informative, so please keep that in mind when you write a comment.

Steam’d Penguins

Steam’d penguins? Is it a recipe for an exotic South Pole dish? Perhaps it’s one of those bizarre YouTube videos of penguins in a sauna cavorting with the Swedish Bikini team?

The truth is that this is the first post of the Valve Linux blog. This blog is where you can find the latest information from Valve about our Linux development efforts. Avoid the rumors and speculations that multiply on the Web. Instead, come to the source – a blog where people who are interested in Linux and open source game development can get the latest information on Valve’s efforts in this arena. In this initial post, we’ll introduce the team (and a bit of its history) and then give you a snapshot of what we’re currently doing.

Big Things Have Small Beginnings

For some time, Gabe has been interested in the possibility of moving Steam and the Source game engine to Linux. At the time, the company was already using Linux by supporting Linux-based servers for Source-based games and also by maintaining several internal servers (running a 64-bit version of Ubuntu server) for various projects. In 2011, based on the success of those efforts and conversations in the hallway, we decided to take the next step and form a new team. At that time, the team only consisted of a few people whose main purpose was investigating the possibility of moving the Steam client and Left 4 Dead 2 over to Ubuntu.

Why Ubuntu? There are a couple of reasons for that. First, we’re just starting development and working with a single distribution is critical when you are experimenting, as we are. It reduces the variability of the testing space and makes early iteration easier and faster. Secondly, Ubuntu is a popular distribution and has recognition with the general gaming and developer communities. This doesn’t mean that Ubuntu will be the only distribution we support. Based on the success of our efforts around Ubuntu, we will look at supporting other distributions in the future.

After successfully porting L4D2 to Ubuntu, interest grew within Valve and, as a result, the team and projects we were working on also grew. Currently, our focus is on the following projects:

  • getting the Steam client onto Linux with full functionality
  • optimizing a version of L4D2 running at a high frame rate with OpenGL
  • porting additional Valve titles

Current Projects

The goal of the Steam client project is a fully-featured Steam client running on Ubuntu 12.04. We’ve made good progress this year and now have the Steam client running on Ubuntu with all major features available. We’re still giving attention and effort to minor features but it’s a good experience at the moment. In the near future, we will be setting up an internal beta focusing on the auto-update experience and compatibility testing.

Since the Steam client isn’t much without a game, we’re also porting L4D2 to Ubuntu. This tests the game-related features of the Steam client, in addition to L4D2 gameplay on Ubuntu. Over the last few months, excellent progress has been made on several fronts and it now runs natively on Ubuntu 12.04. We’re working hard to improve the performance and have made good progress (more on that in a future post). Our goal is to have L4D2 performing under Linux as well as it performs under Windows.

We’ll be posting more information about those projects (and others) on a regular basis. Since this is a new effort for the team, we’d love to hear your opinions about the blog so shoot us an email. We also encourage you to leave comments and ideas for future postings. We want this to be a community of game developers, communicating with each other and talking about current efforts and future efforts in a powerfully creative environment.

After all, isn’t that what open source is all about – the idea that collaboration and teamwork achieve amazing things?