Island Snapshot

It's been a while since we've posted one of these...





One interesting change, compared to the previous shots: you'll notice that the lake that used to be in the center of the island, with the windmill on the edge, has moved over toward the left side and become a bay.

This is one of those interesting area where design and technical constraints interact heavily. We wanted the water of that lake to be reflective, but the way 3D graphics works, you basically need to render the entire scene an extra time in order to make a reflective surface. For outdoor scenes this is very expensive. Now, we also wanted some of the water out at the edge of the island to be reflective. If the inland lake and the water near the beach were at different elevations, this would mean we need to render the entire scene twice, all the time, to generate water reflections, before rendering the main scene. This can be optimized somewhat, but in an open-world game, there is only so much you can do.

The workaround to this was just to keep the inland lake at sea level, so that we can use a single rendering pass to generate all water reflections. Technically this worked fine, but design-wise, it meant that we had to have this big spot in the middle of the island that was at sea level, while also having everything at the edge of the island being at sea level (by definition). This gives the island a doughnut kind of shape, and given that the island is so small, this ended up severely restricting how many elevation changes can be introduced -- the island was being artificially influenced to be flatter than it ought to be, because of this constraint of being sea-level in the middle.

So I moved that lake off to the side and connected it to the ocean. This involved moving a couple of other areas as well. The gameplay is preserved, and the new position is actually better for certain gameplay purposes. The island is still pretty flat, but I think you'll see it getting less flat over time, now.

Experiments in Texturing

Something like a year and a half ago, when I was starting to get serious about making The Witness, I was talking to Casey Muratori about 3D modeling and texturing. Braid was a 2D game; The Witness being 3D meant that it would be much more expensive and difficult to make, so I was doing a bunch of thinking and seeking advice on the right way to do it.

I had been viewing a bunch of online portfolios of 3D modelers (and lamenting the quality of these portfolios) with an eye to hiring someone. Sometimes these portfolios are shown in steps: here's the wireframe, here's the filled-in geometry, here it is with lighting, and here is the final thing after it's been textured. Casey pointed out something interesting about these that I knew was true as soon as he said it: most of these portfolios look worse than they need to because the texturing ruins them. When you run a radiosity algorithm on a scene full of unpainted geometry, it has an elegant, sophisticated, scent-of-the-real kind of thing going on; but it is very easy to spoil this sophistication through texturing. And, it seems, in video games we have developed a tradition of "bad" texturing, whatever that means: unsubtle, unrefined, or just plain ugly.

We're on a low budget here, being an indie game; so not only was it an open question how to solve the Ugly Texturing problem, but we also needed to solve it with relatively little manpower.

I knew that, ultimately, we could just fall back on untextured geometry with lighting, if we had good precomputed lighting. That's why we spent so much time and effort putting together our lighting system (as has been written about many times in this blog). The question was, would we stick to vertex colors on most objects, or would we use some kind of texturing?

Early on, we identified a texturing style that would work for human-sized objects and would gel with the gameplay of The Witness. The style prioritizes color, and tries not to break up the geometry of the object by imposing conflicting details through the texture. We did some objects like a 1-person boat in this style in order to refine it. [I'd like to include a screenshot of the boat here to illustrate it, but the boat is messed up right now, so I'll just have to be vague.]

Because that style tries to use the texture map to accentuate the object, the contents of the texture must change with the local neighborhood of the object, which means you can't use tiling textures very much. This means it would be very expensive to texture something like a big building, since you'd need unique texels everywhere.

Thankfully, the Western game development world has a tradition of developers being very open with their techniques and processes, and communicating with other developers very honestly about what is effective. (This is not something that one finds elsewhere in the world, and we should work hard to keep that spirit alive because it benefits everyone; but that's a totally separate rant.) Here's one good example of this kind of information exchange: at the GDC this year, some guys from Naughty Dog gave a talk on the art direction for Uncharted 2 (pdf link to their slides here.) Somewhere around page 220 of this very informative slideshow, they start talking about the blend shaders that they use in order to give more character to buildings and other geometry while still using tiling textures. The idea is that you interpolate between two (or more) textures with a blend function that fits the shape of your building nicely. You put some smarts into the interpolation so that it produces something that is visually interesting, rather than the blurry mess you would get via naive interpolation.

For The Witness it seemed like a good idea to use this kind of technique, but in a minimalist way, to create patterns that accentuate the shapes of buildings, and help tie them together visually, without stumbling into the realm of Ugly Texturing.

(There are a lot of reasons for the minimalism; one reason, though, is to provide clarity about what you can interact with, versus what is inert. Interactive things are colored in a way that makes them stand out in an obvious way. Think of it as something like what Mirror's Edge did, but in a different way.)

We've started experimenting with these blend shaders; here are some images:

The upper-left shows a scene before we implemented the blend shader for buildings. In the upper-right, we are using a blend shader that blends the original texture with an alternate one that is a bit darker and rougher (but the difference is a bit subtle, by game standards at least). Below these images are the same scenes with precomputed lighting mixed in.

It is pretty clear to me that the lighting is actually the biggest ingredient in tying the scene together, but the blend shader is, I think, a good extra kick. It helps the area feel like there is a little bit of life and history to it (for example, the lighter-colored paths near the puzzle panels in the foreground, which imply that people have been walking that way). What you see here is not of shipping quality, but I see how we can reach shipping quality by iterating on this style and putting production-level effort into the assets.

Here's a close-up of what the stairway looks like:

As you can see, the texture maps have some grain to them; from far away, the grain melts away and the structure is mostly a solid color, accented by lighting.

These experiments are still early yet but I find them very promising. The plan is that we will continue to hone the style and end up with something very special.

A new lecture about game design.

This talk is called Games and the Human Condition; it was given at Rice University on September 27, 2010. It's about "best practices" of modern game design that I find unsettling, and the way in which "social games" and "gamification" are destructive.

A full video is available from this page at Rice University.

Here's a link containing just the slides (ppt format).

Here's a long and wordy abstract:

Video games have evolved tremendously over the past few decades; they're much more entertaining than they used to be. That is not by accident; we, the community of game designers, have been continuously refining our techniques. The most common way we do this is by testing out our games on you, the players, and optimizing for the "best" result (where "best" is defined by us). As this process is ongoing, what kind of relationship exists between the designer and the player? Is it artist/audience, experimenter/subject, entrepreneur/customer, or tycoon/resource? Invariably it's some admixture of these things, the particular ratios for a given game being chosen by its designers (usually without awareness that a decision is being made). Today, due to the way the Internet is widely used, and because game designers are becoming more serious about certain aspects of their craft, the iteration time of this game design optimization process is shorter than ever before: designers can observe their players much more thoroughly, and more quickly, than they ever have in the past. At some point a quantitative change becomes a qualitative one: the result of all this competency may be heavily destructive. Some aspects of the current notion of "good game design" may in fact be very bad, or at least indefensible, from an ethical standpoint. Today's "better" video games spend a great deal of effort to undermine defenses that took you tens of millennia to evolve. They tend to be successful at this. As designers keep evolving their craft and gain greater analytical power, what will happen?

About the Blue Mazes

Just after PAX, Stephen Totilo posted a video at Kotaku showing some gameplay of The Witness. This is video from the start of the game and shows some basic stuff, including a set of blue mazes mounted on poles and on walls, that the player must solve to proceed.

I've seen mixed reactions to these mazes and to the gameplay shown in the video. Some people seem to have jumped to the conclusion that the game is going to be about solving simple maze puzzles, and thus not be particularly exciting.

If that thought crosses your mind, all I can ask is to have faith. I wouldn't make a game about solving a series of rote puzzles. The footage came from the beginning of the game because we don't want to spoil anything major. But even this beginning-of-the-game stuff has more to it than meets the eye.

It's like Braid, in a way. Back before Braid was released, I never made a trailer video for it, because I couldn't come up with a way to show in video form what the game was about. You can show some rewinding happening, or other funky time stuff, sure, but what is cool about Braid is not the mechanics of those things or how they look on the screen. What is cool about Braid is what happens in the player's mind during the puzzle-solving process. The time stuff is the method by which that is implemented, but the rules of time manipulation do not contain the magic. Watching a video, it's nearly impossible to see the magic. You have to play the game to see the magic.

The Witness is like that too. The blue mazes are a major aspect of the game, but they are not the point. The point is the magic that happens in the player's mind when he understands the subtle things that the mazes are saying -- because the mazes aren't just puzzles, they are lines of communication that aggregate, become more complex and eventually say surprising things. This can't be seen in a video; you have to play it to have the experience. The magic is in the player's head, not on the screen.

The only two guys who have played The Witness to completion have said it will be better than Braid when it is done. I am certainly not going to jump up and down and say "hey this game is better than Braid", or even claim that Braid is good. But I just want to put that out there as reassurance to those of you who are worried about that gameplay video.

I have a file with about 80 game ideas in it, most of which would probably make really good games. But I can only make one game at a time right now, so I had to pick one. I picked The Witness, even though it more difficult and expensive to make than most of the other ideas, because I was more excited about the core concept of The Witness than about the other 79 ideas. This is a highly ambitious game that stretches my ability as a game designer to its limit.

So if you don't yet see why the game is ambitious or exciting, please have patience! We'll be releasing more information as the game comes closer to completion...

And whatever you think about what you've seen so far, I'd like to thank you for your interest in the game!

Hemicube Rendering and Integration

One of our aims with our global illumination implementation was to keep it as simple as possible, while still obtaining good performance, and we hoped to achieve that by using the GPU. While the are several approaches to compute global illumination in the GPU, the most simple one that we could come up with was to use our existing rendering engine to estimate global illumination using a fixed sequence of final gathering steps. That is, rendering the scene from every lightmap texel to gather all the incoming irradiance at that point, integrating it to compute the output radiance, and repeating these steps multiple times until the lightmaps converge to an approximate solution. This is basically the same procedure described by Hugo Elias.

Using the same engine makes it very easy to keep the global illumination in sync with the rest of the game. If we add new shaders or materials, change the representation of the geometry or alter the world, keeping the global illumination up to date requires little o no effort. Another interesting benefit is that optimizations to the rendering engine also benefit the global illumination pre-computation. However, as we will see later, in practice each application stresses the system in different ways and end up limited by different bottlenecks, what improves the rendering time does not necessary improve the pre-computation and vice-versa.

Continue reading

Computing Alpha Mipmaps

A little problem that we had when we started to create trees and vegetation is that the standard mipmap generation algorithms produced surprisingly bad results on alpha tested textures. As the trees moved farther away from the camera, the leafs faded out becoming almost transparent.

Here's an example. The following tree looked OK close to the camera:

Continue reading

We showed The Witness secretly at PAX… in plain sight.

Chris Hecker, the developer of SpyParty, and Andy Schatz, the developer of Monaco, have been writing about their preparations for a joint exhibit at PAX.  They were keeping a secret, though: there was a secret 3rd partner in the exhibit, and that was The Witness.

For all three days of PAX 2010, The Witness was publicly playable by anyone who came by the booth.  However, it was unmarked and unattended, so it was easy to miss (as many people did; but then, plenty of people played it, too).

Here's a close-up, with the opening scene of the game, as it silently waits for someone to sit down and play:

I had several reasons for wanting to show the game this way.  Firstly: At a show full of companies trying to capture your attention and sell you things, I wanted to do something that is subtle, and a surprise -- if you notice it, and decide to investigate, you find something unexpected.

Also, I wanted people to be able to play the game for as long as they want, not feeling pressured to stop playing because of a huge line of antsy people waiting behind them.

Before PAX, only two people had ever played the game; those people were game developers, and the versions they played were very rudimentary.  This was the first time the game had ever been played by general players, and I wanted to see how people would react to it, as honestly as possible.  I didn't want to give them any reason to think that this was a good game, or was by any designer they might have heard of.  So I just left the game running, and would occasionally peek at it from afar to see who was playing and how they were doing.

PAX is a huge show, with tons of stuff to see everywhere; if the game could hold peoples' attention under those conditions, purely on its own merits rather than by hype or pedigree, then I would know that it was really working.

Happily, the game worked very well -- despite the fact that the visuals are still in an early prototype stage.  People tended to play for a long time, and they liked what they played.  Here's a picture from Sunday; these guys played for a long time, perhaps an hour and a half:

Some game designers did recognize the game; here's Dylan Fitterer (of AudioSurf) playing:

Stephen Totilo of Kotaku recognized the game early, on Friday, and found me camping out on the other side of the booth.  Thankfully, though, he didn't spill the beans.

I am very happy with how this playtest session went.  I am glad I was able to bring a game directly to players, as a surprise.

The common wisdom among game designers is that the first time you put your game in the hands of players, it totally falls apart, and nothing works the way you expected.  Thankfully, that didn't happen here.  The game does work as expected, despite being kind of crazy and experimental, and people enjoy playing it.

All that's left now is just to do all the hard work required to finish the game!

Update: Stephen Totilo has posted his impressions, along with a gameplay video, at Kotaku.

Design Charrette

Apparently, "charrette" is French for paste a bunch of stuff all over the walls and eat fast food and think about design ideas until everyone is very tired, as I learned this past Sunday from a group of seasoned architects.  We performed such a charrette in order to start figuring out what the locations in the game are going to be like, architecture-wise.  This photo taken by David Hellman captures the mood very well:

A few of the many, many ideas we looked at:

Here's David, looking like he's at the top of his game:

Island Paint-Over

Shannon just did our first draft of a paint job on the island terrain.  These are still very much placeholder graphics, but it is starting to look reasonable, with the exception of the ugly green area in the foreground!

We'll be working on that ugly green area soon...

Island Shrinkage

In the previous update I talked about how, despite the fact that The Witness is an "open-world" game, we are trying to make the environment as compact as possible.

Today I took a step in that direction by moving some areas around and compacting the island, changing its shape a bit:

Here's a shot from the other side of the island, where you can see that there is plenty of empty space left:

So-me of this will be filled with new gameplay, some will be removed or reshaped, etc, depending on how things evolve.

Here's a close-up of a new area; there's something going on there with a lot of wires, and stuff: