So we've talked about XNA Game Studio Express, and just the other day Mitch posted all about the XNA Framework that XNA Game Studio Express uses. Let's talk about another piece of the XNA Game Studio Express product—namely, the XNA Framework Content Pipeline. As I noted in my Gamefest slides, the XNA Framework Content Pipeline is best described as: "An extensible content processing framework managed in C# Express" That may not tell you everything you need or want to know about this technology, though, so let's try and start from the beginning. Content is a large part of games today, and getting content into games isn't easy—in fact, it's frustrating. You face so many problems, whether you’re looking for an exporter or the right tool to support that exporter. Then you have to find some tools to process the content, and use those tools to create data for your game. You also need to worry about loading the content and doing all the work necessary to get the content displaying correctly in your game. I summed that up pretty quickly, but it’s a lot of work. In fact, large studios have teams of people who work only on putting this infrastructure in place. With the XNA Framework Content Pipeline, the process is different—and improved. It is simpler to use; it's highly extensible and customizable to what you're doing; and it gives you choices when putting your game together, both in the tools you use to create content and in the engine you use. We know it's not very exciting to build game content infrastructure when what you really want to do is focus on your game. The XNA Framework Content Pipeline lets you do just that: focus on developing your game! One of the first things worth talking about is how your content is used in your game. With the XNA Framework Content Pipeline, your content is managed inside Visual C# Express. So just as you would add code files today, you'll add your content as well. This helps keep things together and lets you organize your entire game in one solution, with any number of projects you want. You'll be able to set actions for your content such as what Importer and Processor to use. (More on those in a bit!) Many different components make up the XNA Framework Content Pipeline. For each component we discuss, I've called out its name. Becoming familiar with these terms will help you better comprehend the XNA Framework Content Pipeline. When you first add your content, you need to pick an importer. An importer is responsible for taking data and normalizing it. This means you don't have to worry about, for example, what direction your content is facing or which way is up in your content creation tool. The importer takes the files you've saved or exported from your content creation tools and imports them into Visual C# Express. The reason for this will become clear as you read about the rest of the system, but I want to point out that we're more concerned about the data in the file. In other words, we’re not as tied to which content creation tool that data came from. So what importers exist for V1 of XNA Game Studio Express? Take a look at this handy chart.
ContentManager myManager = new ContentManager(GameServices);
model = myManager.Load<Model>("ship");Sometimes when describing something it helps to have something to look at, so I put together this chart to show how the pieces fit together:
Extensibility is also an important part of the XNA Content Pipeline story. All the components that we've talked about are designed so that you can extend them. We'll talk more about that in another post. Keep in mind that the XNA Framework Content Pipeline is a large, new piece of technology. Though we have a lot of people working hard on it, it simply wasn't ready in time for the beta on Wednesday. So the XNA Framework Content Pipeline is not part of the beta that you can download on August 30th. You'll still be able to use content in a game—it will just be much more of a manual process. The Spacewar Starter Kit will also be available to show you how developers are working with files outside the XNA Framework Content Pipeline. We're still looking into other means of getting this to you before the release, but there are no solid plans yet. Finally, as an added bonus, I've included a short demo of the XNA Framework Content Pipeline in action! I showed this demo at Gamefest and had it recorded especially for the readers of our team blog. Again, this demo doesn't dive into the code too much—there are plenty of articles on that—but it still shows that it works and gives you a feel of the overall experience.
XNA Framework Content Pipeline Demo (Streaming)XNA Framework Content Pipeline Demo (Downloadable) I hope this sheds some light on the other side of XNA Game Studio Express. We'll dive into it more technically as time goes on, but I wanted to start out with an overview since there are a lot of new concepts here to grasp. Michael KlucherProgram Manager - XNA Game Studio