This project is read-only.
Project Description
Ferpect is a component model for XNA Framework 4.0 that supports visual designers in Visual Studio. The SDK provides both a component model and tools for drag-and-drop design of game screens. Source code demonstrates how to build and use VS toolbox, templates, and editors.

Current Status

September 2010:
Upgraded to XNA Framework 4.0 (final). Added a recommended release (beta) to use with XNA Game Studio 4.0 (Windows and Xbox 360 only).

January 2010:
An Xbox 360 version of Ferpect.ComponentModel.dll has been added to the solution, and the SDK setup installs this library so that it's visible to Xbox 360 game projects. There isn't a game template for Xbox 360, but you can create an Xbox 360 copy of a Windows game and run it on your console. After creating an Xbox 360 copy, the Ferpect.ComponentModel.Design.dll reference will be unresolved -- just delete it from the Xbox 360 copy of the game.

December 2009:
The component model has been simplified into one runtime library, with a second library required for design-time support (visual designers in Visual Studio). The design-time library must be referenced by the game project for the designer to work, but the game shouldn't have (or need) to use any types in the design-time library.

The Ferpect component model replaces the XNA Framework's Game component model, providing a more complete abstraction so that components can be written to be independent of their host environment. In particular, this allows components to be hosted on a design surface, enabling a drag-and-drop editor to be created for Visual Studio.

The project templates provide a starting project. The project entry point instantiates a Game class, but the project does not subclass the Game. Instead, it instantiates a ScreenManager and several services. Using Windows Forms as a comparison, the ScreenManager class is like a bit like a Form, and Screen instances are like user controls. Instances of the Screen classes must be added to the ScreenManager, and its properties configured to control transitions between screens. Read the Getting Started page for full details.

The Ferpect component model now depends on XNA Framework 3.1, and the SDK setup project requires WiX 3.0. The source code solution files (.sln) now require Visual Studio 2008 (they no longer open in Visual C# 2008 Express Edition).

April 2009:
I've upgraded the solutions and projects to support VS 2008 and XNA Framework 3.0. The assembly versions have been updated as well, to version 1.1, because they now depend on XNA Framework 3.0. Other than that, it's still a proof-of-concept and not a complete solution.

October 2008:
This project provides a proof-of-concept, and does not build a ready-to-use component library. It may be of interest to tools developers, as a reference for building designers of their own. The only component with visual designer support is MenuScreen, and even that requires tedious manual setup to enable most of its features.

Background Information

I started this project to explore some of the potential tooling options for XNA Game Studio. The source code demonstrates how to leverage the designer infrastructure in Visual Studio to provide a drag-and-drop editor for game components. Unfortunately, as I was building these tools, I discovered that the XNA Framework's game component model isn't abstract enough to support design-time hosting, so I implemented a component model as well.

I wrote a series of blog posts to explain the project, back when I first started. For detailed product documentation, see the Documentation wiki for this project.

Game State Management for N00bs Like Me
Going Somewhere? Menu Navigation Woes.
Compelling Design-Time Experiences in an XNA Game Studio-Based Designer
Making a Designer of Your Own - A Starter Course
Making a Designer of Your Own - House Salad
Managed Designer Resources: The Restaurant Supply Store
Making a Designer of Your Own - Soup Stock
Making a Designer of Your Own - Mixing and Folding

Last edited Sep 17, 2010 at 8:29 AM by BadCorporateLogo, version 14