Monday, April 30, 2012

Indie Tech Talk 01: Scott Anderson

In the first of ten Indie tech talks, Scott Anderson, creator of Shadow Physics, spoke about using technology for gameplay innovations, specifically signed distance fields.

Presentation
  • Scott has three main inspirations for his game design: the Demo Scene community, the Creative Coding community, and molecular gastronomy.
  • He introduced two technologies: GPU particle systems and signed distance fields, and showed two videos - Agenda Circling Forth by CNCD Fairlight (http://www.youtube.com/watch?v=ma8KXOGS8UU), which utilizes GPU particle systems, and Zeo-x-s by Quite (http://www.youtube.com/watch?v=NqrRKp6NiR8), which procedurally generates fractal worlds using signed distance fields.
  • Distance fields are basically the closest distance to a given surface. They are useful for font rendering and can be signed or unsigned, 2D or 3D.
  • Signed distance fields can be created explicitly by generating from a bitmap/mesh and storing in an image or 3D model. They can also be created implicitly using math to calculate the distance from points. This is easy to compose and can be animated or transformed in real-time.
  • For 2D signed distance fields, fill pixels if the distance is less than zero and modify with different effects such as a drop shadow filter. 3D is trickier. Normal raycasting to calculate distances can be expensive so you should use sphere tracing.
  • You can get normals by calculating the gradient at intersection points.
  • For shadows, trace another ray from the intersection to the light position.
  • For collision, use simple sphere collision. This, however, can be expensive and it makes the scene size and details of the scene limited.
  • Check Matt Swoboda's blog (http://directtovideo.wordpress.com/) for more information regarding signed distance fields.
Conversation with Andy Nealen
  • How is signed distance fields useful for gameplay? In games, we represent worlds as either pixels or models. It's interesting to look at signed distance fields as an addition way to represent worlds. There are no games that uses it in 3D, but Pixel Junk Shooter uses signed distance fields in 2D.
  • Thinking of moving vertices in different ways can lead to interesting game designs. Scott, himself, has an idea for a fighting game featuring particle characters.
  • The technical excellence award at IGF should be given for the creative use of technology, not for the technical difficulty of the implementation. It is irrelevant on how hard the feature is to implement, but its usage is the distinguishing factor. A lot of the time, the simplest engineering solution is the best solution. Programming and engineering has a lot to do with getting around hardware constraints. The demos Scott showed were hard to do, but it's only as hard as they need to be.
  • The Indie scene in the 90s built things close to triple-A games, but by a super small team and that's what made them amazing. Gish, however, was the turning point in the indie scene where the focus shifted to interesting aesthetics instead of close to triple-A visuals.
  • Scott is a traditional programmer who makes tools. It's interesting to think of code as the tool we use, not the tool that makes the tool we use.
  • Scott spent two years making Shadow Physics, but it's currently put on indefinite hiatus. Shadow Physics is an amazing use of technology, but it didn't come together in the end. It did, however, inspire a bunch of clones such as Lost in Shadow and Contrast.
Audience Question and Answer
  • Would Scott consider using Kickstarter to fund other games like Shadow Physics? Before Double Fine, there was no way for Kickstarter to raise more than $5,000. After that revolution, he would consider using Kickstarter, but it is hard for him to work on a game with other jobs taking up time.
  • How much of the art credit belongs to the programmers? For example, the beautiful look of Journey has a lot to do with the shaders done by the engineers. Usually, there is a person assigned as the technical artist or the "feel engineer" in Journey's case, who moves in between art and programming.
  • The job of a triple-A programmer is to make designer's dreams come true, but indie programmers work on their own ideas. Because of this, they make designs out of cool technology.
  • Minecraft took boxes to an interesting design and mechanic, and then Terraria flipped it to another perspective. Triple-A games don't have this kind of dialogue. Triple-A games have too much risk mitigation. They also hire many artists to explicitly make art, so there's no need for procedural generation.
  • Web development has a lot of interesting technical stuff, but there's not so much of that in games.
  • Any recommendations for programmers trying to learn art? Artists learning programming is easier than programmers learning art. Ideally, everyone should learn both so that you use both sides of your brain. You need to practice and immerse yourself in the arts. You can get to decent levels fast, but you need dedication to get to an advanced level. You should sketch and draw everyday.
  • Don't use design documents. For Scott, it is hard to put the feelings of the visuals into words.

No comments: