Tuesday, December 23, 2008

A Gamebryo Tower Defense Game: Defense Grid The Awakening


Happy holidays! I have a gift to give away, one free copy of Defense Grid: The Awakening. It is a Tower Defense game built with Gamebryo, just released on Steam. [Update: Deokhee Lee takes it!]

Here's a youtube video-interview that previews the gameplay nicely:

HD Video

If you're keen on the free copy, drop me an email at vincent.scheib at the emergent.net. [Update: Deokhee Lee takes it!] If you miss out, you can pick it up for $20. If you're feeling grinchy, there's always the free flash Desktop Tower Defense... but... lacking the richness.

Thursday, December 18, 2008

Coder Tip: Loading symbols in Visual Studio 2008 the easy way.



Bo Wilson keyed me in to this Visual Studio 2008 (VC90) Tip:
  • Debugging through some code touching Microsoft libraries (e.g. DirectX)?
  • Wish you had symbols, but too lazy to set them up again, cache them, wait for them all to download, blah?
  • Visual Studio 2008 makes it easy:
  • Just open the Modules window (Debug, Windows, Modules)
  • Right click a DLL, and load symbols from the Microsoft Symbol Servers.

Thursday, December 11, 2008

Link dump: Genetic Polygons, Scored Gameplay, ActiveX alternative, Gamebryo Training, Visualizing Files, Opening Files

Genetic algorithm placing 50 polygons to represent the Mona Lisa
I'm a fan of genetic algorithms... I'd have loved to see this one with triangles instead of n-polygons, though.

This image is early in the evolution, the final image is a good approximation. ;)
Reset
A fun, short, game. Cool novelty: the gameplay is synchronized with the music. Friend Adrienne Walker pointed out that this could be a great game jam theme.
Google Native Client
A plugin recently revealed by Google.
Cross browser, runs sand boxed native code.
Could be a good alternative to ActiveX.
Gamebryo 101
A university created webpage packed full of training videos, tutorials, and resources related to the product I work on.

WinDirStat
I recently gave up on SpaceMonger -- it was having issues with lots of files. This survey convinced me to move over to WinDirStat, which works very well.

Mr EditGotoFindCombo
Nice tip for Visual Studio programmers:
Quickly open files with sub-string prefix matching:
CTRL-D, type:">of ", then start your file name.
More tips on the linked page.

Thursday, December 4, 2008

Jeff Russell Depth Of Field example

Depth of field came up on the gdalgorithms list. Jeff Russell caught the thread and replied with some screen shots from his brute force O(n^2*m^2) blur, with nice circles of confusion. I'm posting it here to make a few comments:



Sure, there are the typical DOF artifacts (halos, alpha object discontinuities, ...), but:
  • Top Left: Check out the trees, they look "right". The small highlights on leaves, or of sky through leaves, has that distinctive look that Gaussian blurs don't capture.
  • Center Left: Most of the scene is mush, but the enemies show distinctive disk highlights on points and lines.

Sunday, November 23, 2008

Motivating Depth of Field using bokeh in games

I've posted before on Higher Fidelity depth of Field effects in games. I believe that current depth of field effects in games fall short of delivering the same cinematic emotion as movies and TV. The reason distills down to the commonplace use of compute-efficient separable Gaussian blur. More expensive methods can reproduce bokeh with crisp circle of confusion shapes.

I've realized in casual conversation, many people can't easily recall how the technique is commonly used in television and movies. And, they often overlook how common it is.

So, in this post I've collected a bunch of examples from movies, and whipped up some mock images from game screen shots.

This is all just motivation. ;) Ideas for fixing the problem in a practical way is for another post.

Cinema Examples

A few simple shots, showcasing bright point lights, and specular highlights:



Similar to the above, but with some edge highlights blurred as well. Look at the horizontal edges blurred in the background on the right of the image:


The Dark Knight made extensive use of the effect for the entire film. The circles of confusion often had an oval shape due to the Panavision anamorphic lens used (compressing the image on film to an aspect ratio different than that of the screen). Also, note the specular highlights from the henchman's head and waist:


These circles are larger than in many of the others, and also show the non-uniform characteristics of the disks:


Finally, a subtle image. The amount of blur is minimal, but still distinctive on the lights in the background. Even though slight, delivering this effect will be yet another one of those required level of polish for AAA games in the future:



Mock Images
I've doctored up some game screen shots to show what is missing. They're quick and dirty, made in Photoshop with "lens blur". In a high dynamic range rendering pipeline, results would be much better, since the distinctive shapes we're looking for are results of very high contrast between highlights and the rest of the background scene.

First, a Mass Effect scene that would have worked well. I quickly added several points of bright light to trigger the effect since the background didn't include small point lights:

Before:


After:


And here marketing screen shot for Unreal Tournament. I only generated a mask and applied the blurs, since the image had good contrast to begin with:

Original:


Lens blur:


Gaussian Blur (common in games today, poorer result):


And, a zoomed section contrasting Gaussian to Lens Blur:


Keep your eyes open as you watch TV, or movies, and you'll notice more and more how common this effect is.

Pay attention in games, and you'll notice that we're currently delivering the concept of "out of focus". That's sufficient to draw attention to near, middle, or background. But, games today are not capturing the artistic & emotional feeling that comes with a strong use of the effect.

I have a few prototyping ideas for delivering a higher quality depth of field, which I hope to have time to try out soon, but may likely take a while. As new hardware brings more FLOPS, it's also possible that the O(n^2 * m^2) naive approach may just be used soon enough (as was already done in Lost Planet on DirectX10).

(Next post, Jeff Russell Depth of Field example comments)

Update: Nice technique writeup in 3DMark11

Sunday, November 2, 2008

Beautiful Pixels Game API; Connexus ships to IGF

Before the blog "Beautiful Pixels", I used the name for a Game/Visualization API.

Beautiful Pixels the API was a concept for a game jam:
  • Everyone decides to write either a game, or a visualizer.
  • Games write out to a low resolution, palletized, frame buffer.
  • Visualizers render the low-rez games in high-rez, in some novel way.
Games are typically Atari 2600 or Intellivision style, or lower rez. Think Tetris clones. Visualizers could render out the games in HDR with bloom, or as colored smiley faces, or a field of flowers, ... The coolness comes from the odd mash-up of games and visualizers, that were not planned to go together.

Well, the last Game Jam we had, we picked another theme, Game Mad Libs. The Beautiful Pixels API only had a few small games we made for it in pre-jam planning days.

Below are screen shots of games using the Beautiful Pixels API:
Game: Platformer, by Adrienne Walker
Visualizer: Mario World, by Mike Daly


Game: Connexus, by Mike Daly
Visualizer: Smiley, by Mike Daly


Game: Box Pusher, by Mike and Jody
Visualizer: Power Blur, by Mike Daly


But, one game did make it well beyond Beautiful Pixels! Connexus (by Mike Daly) just shipped to the Independent Game Festival. Check out the Connexus website for screen shots. To the right is a screen shot of Connexus as it shipped to IGF, re-implemented outside of Beautiful Pixels API.

Tuesday, October 28, 2008

Fallout 3 and Game Engine Overview

Fallout 3 has shipped, with 90+ review scores on xbox 360, ps3, and PC respectively. Major kudos to Bethesda. (Fallout uses Gamebryo)

Also, Gamasutra has an excellent feature article with overviews of 12 Game Engines, including:
  • Bigworld: Bigworld
  • CryTek: CryEngine 2
  • Emergent: Gamebryo
  • Epic: Unreal 3
  • GarageGames: Torque
  • id: iDTech 5
  • Qubesoft: Q2
  • Simutronics: Hero Engine
  • Trinigy: Vision Engine
  • Valve: Source
  • Vicious Cycle: Vicious Engine