Category Archives: Engine Tech

Mapping the Island’s Walkable Surfaces

walkmonster_1_comparison

Despite not even being finished, The Witness is already one of my all-time favorite games. I’ve been playing it since Jon started developing it several years ago, and I could not be more excited about its upcoming release. Unlike Jon’s previous game Braid, the asset and programming scale for The Witness is much further toward [...]

Posted in Engine Tech | 49 Comments

Collecting Playtest Data

In The Witness, when progress in your game is saved, we also save a thumbnail that shows you where you were. This makes it easier to load a particular game later if you had multiple saves. Here is our current, very unpolished load screen: Right now, we save the thumbnail and the game data as [...]

Also posted in Development | 25 Comments

scope(exit) in C++11

I really like the scope(exit) statements in D. They allow you to keep the cleanup code next to the initialization code making it much easier to maintain and understand. I wish we had them in C++. Turns out this can be implemented easily using some of the new C++ features. I’m not a big fan [...]

Posted in Engine Tech | 54 Comments

Packaging Update

A while ago, I wrote a post about package sorting in order to minimize diffs when patching on Steam. I ended up running a straightforward test where we would change the game minimally and build consecutive patches. The patches turned out to be quite large, but upon investigation, it was clear there usually wasn’t a [...]

Also posted in Development | 40 Comments

Seamless Cube Map Filtering

seamless_featured

Modern GPUs filter seamlessly across cube map faces. This feature is enabled automatically when using Direct3D 10 and 11 and in OpenGL when using the ARB_seamless_cube_map extension. However, it’s not exposed through Direct3D 9 and it’s just not available in any of the current generation consoles.

Posted in Engine Tech | 23 Comments

Engine Tech: Concurrent world editing

Summary A small team with limited manpower, we wanted a low-effort way to use our existing version control system (svn) to facilitate concurrent world editing for our open-world 3D game (i.e. we desire that multiple users can edit the world at the same time and merge their changes).  We developed a system wherein the data [...]

Posted in Engine Tech | 43 Comments

Irradiance Caching – Part 1

This is the first article I wanted to publish when I started writing about the technology behind The Witness. I had just spent a week or so implementing irradiance caching with rotation and translation gradients. Extending the equations of the gradient estimation to the hemicube sample distribution had proven to be tricky and had taken [...]

Posted in Engine Tech | 14 Comments

A few new graphical effects.

Lately we started thinking about making the game look better, finally. Ignacio has been working on some graphical effects to this end (though he’s been putting forth a lot of effort on performance as well). Here are a few things he’s been working on: Sun beams. These are accomplished with a radial blur centered on [...]

Also posted in Progress Shots | 31 Comments

Grassing it up…

Since The Witness takes place in the outdoors much of the time, we knew from early on that we were going to want to have grass of some kind. We added grass into the engine quite a long time ago (starting around December 2009?) and it’s gone through several iterations of what-seemed-to-make-sense-at-the-time. At this point, [...]

Also posted in Development | 38 Comments

A glimpse into the terrain design process.

This is an experiment in writing up a blog post for a development task while I actually perform the task!  So right now, as I start writing this, I don’t know how it will end! I was talking to David Hellman about the game the other day, and he was asking when the island was [...]

Also posted in Development | 21 Comments
  • Archives

  • Categories

  • Meta