Its always a pleasure to listen to a talk by Hugues Hoppe. Every time I read a paper of his, I learn something new and interesting about graphics!
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.
XNA Developer Connection
This was a very good talk on how gamma affects all the Direct3D device state, along with practical advice on how to configure everything for best gamma results.
To see why you should care about proper gamma in your game, click on the thumbnail above.
When you handle gamma properly, not only is antialiasing improved, but the brightness of the scene is properly handled as well.
Schizoid is a project that started out as an experiment in XNA Game Studio Express. The game is collaborative between two players and it looked pretty fun on the big screen. A single programmer, Jamie, prototyped the game in 4 days and obtained approval for making it a real game. Two months of refinement later and they had a prototype that was approved by Microsoft. The potential of the prototype attracted high quality artistic and engineering collaborators that improved the game continuously during development. Interestingly enough, the collaborators edited C# source code directly, entering in tabular data for various assets.
They wrote unit tests in NUnit for the game play and the behavior. The automated build was created with msbuild and runs NUnit tests automatically. Jamie generally wrote the test first, but they didn’t impose any rules on the other developers. About 10% of their bugs were found and fixed on the first day they were introduced, when they are least expensive to eliminate. They used rapid prototyping to test out various ideas and experiment to select which ideas worked best, instead of endless opinionated discussion about various alternatives. Instead of arguing about it, they just tried it and took the one that worked best. Changes were made to the game immediately after watching play testers and put into the next build for the play testers brought in the next day.
They did encounter some performance issues on the Xbox 360 under XNA Game Studio Express. This is mostly because Game Studio Express is built on top of a modified version of the .NET Compact Framework. Its likely that some of these performance issues will improve in GSE 2.0. In my opinion, its unlikely that Microsoft will address every performance issue, but they will address a few of the most eggregious ones. Its all speculation until GSE 2.0 hits beta. The performance issues on Schizoid caused some schedule slip as they brought the playability of the Xbox 360 version up to par with the PC version. Perhaps the lesson learned here is to play test on the 360 early and often so that the necessary refactoring for performance can be done early before it affects too much code.
I went to my first Microsoft Gamefest on Monday and Tuesday of this week and met up again with a few of the other DirectX MVPs. I was mostly interested in the graphics track, but the XNA track was also of interest to me. The sessions I attended were:
I’ll be posting blog entries on these sessions as I get my notes together.