Steam is cool.

Last night I put together a test build of The Witness for Steam. I’d been wanting to do this for a while, but the game’s ability to run in full-release mode had been broken for a while. From day to day, we run the game with unpackaged data files, because we change them a lot. For a release you generally want to pack them together.

We finally got that working well enough; here’s me getting ready to download the game on Steam:

And here I am after having launched the game:

I don’t want people out there to get too excited about these screenshots: this does not mean the game is close to release. You wouldn’t want to play it right now. But this will help us a lot when it comes to getting the game out to playtesters and keeping it updated.

For actually shipping our game off to Steam, we are using the new version of the Steam developer tools, and they are really good. The old stuff (which I had used for Braid) was serviceable but had a lot of undesirable things going on. The new stuff is exactly what you want: you write a couple of very small and easy to read config files, then you run a command and it uploads your game. This process is now fully-automated, which means developers can modify their game and push changes out to users faster and with less hassle than with any other online distribution service. (It is basically as fast as if you host the game yourself).

45 Comments:

This is just for developers who already have a game okayed for Steam. I think that will always be the case, but the announced Steam Greenlight system should help people achieve that status more easily.

I’ve always wondered why you chose to release Braid for Xbox Live first, may you comment on that? Braid has been one of my favorite games (still is really), but I didn’t get to try it until it went on Steam. I could understand releasing the game on both platforms at release, but why would you wait with the Steam release? Can you also briefly say if you profited more from releasing it on Steam than on Xbox Live?

The last question is more of a dev question, I’m looking into game development and programming for games and I’m curious which platform is more profitable for indie games(although I know that I’ll make games mainly for the PC). I’ve heard Super Meat Boy sold quite a lot more after they released it on Steam.

People forget what year it was. In 2007-2008, Steam did not sell indie games. An “indie game” was not something the public knew about or wanted to buy! A hit indie game on the Internet would sell 5000 copies. Being on XBLA was a big deal because it meant there might actually be an audience to buy the game.

As a condition of being on XBLA at all, Microsoft often wants exclusivity or a certain period. That is what happened with Braid.

At this point, if you look at day-to-day sales, Braid is probably making more income from Steam than XBLA. The total is probably still higher on XBLA though, because 2008-2009 was the main time when people were buying Braid.

If you are making indie games, think about the PC mainly. Once you are actually making games that people want to buy (which is hard!) you can think about targeting other platforms … and I can’t even predict what those platforms will be if we are talking about like two years from now.

Wow I had no idea it was automated now – before it would have been too much work for them to host long beta testing builds having to be emailed for every update, so I never considered as a beta testing option.
I’ve been using Dropbox to keep beta builds synced, but this will be awesome

alright, I’m following this blog since it first appeared in 2010 and right now I’m getting excited ;-) but it must be at least playable to some extend due to the fact that you had a press version some time ago?

The Witness will be released late 2012 right?
I mean there is no rush for everyone out there, I have been waiting over 2 years for that game so I wouldn’t mind waiting one more ;-)

Frankly the most interesting part of this post was getting a look at Jonathan Blow’s Steam library :-) I’d love to know, for example, John Carmack’s or Jenova Chen’s Steam handles, just so I can peek at their libraries and gameplay stats…

“But this will help us a lot when it comes to getting the game out to playtesters and keeping it updated.”

I’ve heard you say ‘don’t playtest your game’ a lot, I think first from your indie prototyping lecture and maybe the Braid game city talk, and somewhere else I believe.

Because you noticed some people wouldn’t leave an area without getting all the puzzles, yet they couldn’t get the puzzle piece without building the bridge out of puzzle pieces (and they were missing a piece at that point) and this created a conflict for you.

So you have decided to playtest again or were you joking when you said ‘the lesson from this is don’t playtest your game’?

I wonder if the innocently low “Hours on record” count for Braid gets up your nose?

By the way, after you mostly ruined gaming for me by giving me a context to understand what enjoyable actually meant I came across a wonderful little gem which really tweaked some ‘joyous discovery’ feelings. It would appear not be be in your Library:

“I’d been wanting to do this for a while, but the game’s ability to run in full-release mode had been broken for a while. From day to day, we run the game with unpackaged data files, because we change them a lot. ”

Is there any sort of data processing pipeline for your day-to-day debug builds? What is the rough time for a fully optimized release/final compile for one target plus packaging/building assets from your intermediate source(s)? Do you have your project compiling into separate .dlls for debug builds to reduce iteration time, or is it small enough to keep as a static build even while developing?

Apologies if you’ve addressed any of these before. I’ve worked on projects that range from student efforts using one-off engines and lots of open source libraries to currently a Frostbite2 game with an enormous code base and high number of external dependencies. At least in my limited experience, the iteration times increase proportionally with the level of complexity of the underlying tools/runtime and I am suspicious of whether Epic will be able to deliver on their promise of having the best of both worlds.

Compiling the game from scratch takes about 1 minute, and an incremental recompile (one .cpp file changed) takes about 5 seconds, so iteration during development is very fast. We are very careful about this because slow iteration times kill productivity dead.

Packaging takes more than half an hour, though, because we go and re-process / re-compress all the textures and meshes every time we package. (We could do a much faster version of packaging that just packages your current development files, but that seems weird and prone to error).

How do you get compile times that low? The long compile time for my projects completely slaughters productivity. Mine is maybe 2:30 for a full recompile, and 15-40 seconds for a increment compile (depending on what changed – more widely included headers obviously causing the most length).

Are you using SSDs?
Do you make heavy use of pIMPL?
What other compile tricks do you use?

We are using SSDs mostly, but SSDs do not help all that much for this kind of task since you aren’t generally I/O bound.

The main trick is to keep your header files from getting big and unwieldy.

The #include mechanism in C was originally an optimization and/or lazy implementation detail; it was to permit compilation of files simply by reading forward through the file in one pass.

Now, in C++, it is a horrendous anti-optimization. If you start using include files with a lot of template declarations, you will end up compiling that code many many many times. This kills you.

The trick to fast compilation is to use a relatively sanitary subset of C++.

Even though our compile times are somewhat fast, they are still embarrassingly slow compared to what they could be — embarrassing for the compiler writers, not for us. Old versions of Visual Studio were much faster at compiling, and in fact if you compile C files with Visual Studio, you will just see them fly by, whereas even relatively simple C++ files take forever in comparison. Apparently the C++ compiler is kind of a performance pig, and if they were to fix that, everyone’s productivity would increase quite a bit. But, they don’t care. (And hey, gcc is even slower, as was xcode last I heard [I don’t use it regularly], so there is no competitive incentive to make it faster.)

With all this talk lately about how great Steam is and news of how indie developers are increasingly unhappy with the way Microsoft is running their Live service, it has left me wondering if the Witness will make it to Xbox Live and if it does will it be a shell of the PC/Steam release? I know PC is the king of gaming and I would install Steam if not only to play The Witness but for some reason I just find playing on the console more enjoyable. I’m hoping the market size of the Xbox will at least guarantee a release but will Microsoft stop it from being the game it could be?

Ehh. The games that have been selling well on XBLA these days are (a) in Summer of Arcade, (b) big hits that already have a following like Minecraft or Trials. We have no control over getting into Summer of Arcade, and we would have to suffer pretty badly in terms of development quality-of-life in order to produce a port for the 360 which is now a low-end platform; the 360 version of The Witness would not look anywhere near as nice as the PC version.

So we’ve decided not to do this. There is a possibility of us ending up on next-gen consoles at some point, but we will look at that when the time comes.

Considering how much you seem to praise Steam, I would like to know what your stance is on Windows 8. As you probably already know, Valve’s Gabe Newell slammed the platform, and some people in the game industry seem to share his sentiment as well. I think this hostility seems to stem from the possibility that services like Steam may not be welcome in the Windows ecosystem for much longer, and that Microsoft is pushing the distribution of apps (including games) into the Windows Store at the expense of other distribution channels.

I’d like to know if you think Steam still has a future on the platform, and if not, what do you think of the Windows Store as the single distribution channel for games on Windows? Would you put Braid or The Witness on their store?

I don’t know very much about Windows 8 because I have never tried it. However, it does not seem like a good idea to me (trying to cram two UIs into one, trying to force desktop users into the more-gimped tablet UI paradigm, in order to … why exactly?)

Of course Steam has a future on Windows. What, do you think Microsoft is going to somehow bar Steam from appearing? Given how many problems they have had with the Department of Justice in the past, would they have any hope of such a maneuver?

That said, if Windows 8 is bad enough, this might be the beginning of the decline of Windows. Hell, the decline of Windows may have already started to happen — if you go into a cafe anywhere in San Francisco where twentysomething tech startup people are working, you will see 95% Macbooks and the occasional rare Windows notebook (this number is not an exaggeration). If I were Microsoft I would be thinking hard about that.

I don’t think Gabe dislikes Windows 8 because of any perceived threat to Steam. I think Gabe dislikes Windows 8 because he thinks it is a very bad product. It’s kind of insulting to presume otherwise.

When I saw this post I was like “aha!” and then I read it and was like “oh.” It’s still pretty awesome though, it’s one step closer to the game being released ;)

By the way, how difficult is it to get a game accepted by Steam? Do you need to meet certain criteria, does your game need certain specifications, or does it just have to be “good”? Was it easier to get The Witness accepted since you already did it with Braid?

Have you considered setting up pre-orders on Steam? It seems a weird quirk of human psychology but some people like to pay in advance even when it’s logically in their best interest to wait and see if it’s still the best choice when it comes out. If you’ve worked out your pricing already it might be advantageous.

I really hope you will also publish the game with either a non-Steamworks DRM or DRM-free on other platforms. Because contrary to you, I hate Steam with a passion. It may be handy for you but I hate the fact that I have to rely on the whims of the Steam service to play games that I OWN (or do I? It’s not that clear seeing how locked off everything is with Steam…).

Fortunately for me (because I now have a reason to follow through on the practical consequences), the last update broke my Steam client. The last time that happened, I actually went into safe mode and whatnot to fix it. But not this time. No more Steam. And I have to say I was very disappointed when I heard that you support it. Especially because I agree with basically everything else I’ve heard you say so far. But in my eyes, Steam is yet another quasi-monopolistic giant hurting consumers’ rights in major ways and should be fought tooth and nail because of it.

Jon, we really like to play it on XBLA. And I’m sure there would be many like myself out there.
I am not saying that you shouldn’t dev for PC, I am not saying it wouldn’t be successful but you would be missing out part of gaming crowd who like to play games from the couch and have invested in a dedicated gaming console.

You could put a poll on the site asking users which platform they would like to play it on.

Ya man. It looks amazing, it might be double the fun compared to Layton. But would I get to play it? I really doubt. Despite owning 2 gaming consoles, 2 handhelds and 2 more consoles (ouya and wiiu) coming home. iSad.

I just made a wordpress account just for this site, the game looks very interesting and is something I would like to try playing. I very much enjoyed Braid, and am looking forward to this games release :)