Dan Amerson, Matt Bailey
Xbox 360 Team
Emergent Game Technologies
I missed the opening 10 minutes or so of this talk, but I found it very interesting. This was a talk more from a software engineering perspective. They discussed an object-oriented framework they created as a piece of middleware for use by game developers. The framework is for C++ and the goal was to provide a framework that managed all the details of shadow generation passes and lets the end developer customize the behavior of the framework by extension of the framework classes.
The framework was created with an up-front design, but once they had their initial design, they followed agile development practices. They wrote unit tests on their classes and although they encouraged test-first development, this was not a requirement. Unit tests were required for more recent code, but they didn’t invest heavily in writing tests for their legacy code base. This is entirely understandable to me, having recently adopted test-driven development myself and dealt with legacy code that isn’t under test. Writing tests for legacy code is harder than writing tests for new features.
Their design certainly looked complete enough and flexible enough to handle most of the weird shadow and illumination tricks people would like to play, including new ones that haven’t been dreamed up yet. I’m sure at some point their model will need extension or additions, but what they have looks good for a while to come. I’m not an expert on all the various shadow generation algorithms, but the talk included a walk through of several shadow generation algorithms and how they can be implemented using their framework.
The shadow framework discussed is used in their game engine Gamebryo.