Sgt. Conker We are "absolutely fine"

22Jan/112

Indiefreaks Game Framework 0.1.0.0 released

This just in!

Philippe Da Silva announced the availability of the Indifreaks Game Framework, v 0.1.0.0

The Indiefreaks Game Framework is a set of .Net libraries compiling a few years of experimenting and prototyping design patterns developing games for Microsoft Xna Framework using the SynapseGaming SunBurn graphics engine.

The goal here is to share with the community what I consider as best practices so they can avoid going through the same steps as I did. The Indiefreaks Game Framework is totally free (like in free beer) to use but it still requires you to acquire a SunBurn engine license.

Looking at the framework's official page, you can see some pretty interesting stuff that's in the framework, including

  • Smart Content Management
  • Smart Input Management
  • Cameras
  • Alpha Blended Rendering

Go and take a look for yourself.

15Jan/110

XBuilder v0.2 released a while ago

My timing is extremely bad, but I finally managed to get this info out here.

Version 0.2 of XBuilder, made by Tim Jones, is now available. For those who wonder, Xbuilder is "an extension for Visual Studio 2010 which lets you preview your XNA assets (models, effects and textures) right inside Visual Studio.".

You can read the announcement for v0.2 here.

XBuilder

1Oct/100

Voting is now closed!

As the title says, voting is now closed for the tutorial contest!
We will judge/evaluate all the entries and all the votes, and announce the winners next week!

Thanks to everybody that took part in the contest, both by sending in their entries, and by voting!

18Sep/102

Article: Vacant Skies – Action RPG Tutorial Series

by Aaron T Foley

Welcome to the Vacant Skies – Action RPG Tutorial Series. My name is Aaron Foley and I’ll be your host throughout this series. The primary purpose of the series is to document a route on how to make a complete action RPG using XNA and various resources throughout the internet. There are so many amazing resources out there now for XNA that it is pointless to keep reinventing the wheel when writing a game. So I’m going to collect various tutorials, code, and libraries and utilize them all to create a game. So let’s get this show on the road.

8Sep/105

Article: Rolling World Tutorial

by Christian Schlager

When you look around the XBox Indie Games Channel, there aren't a lot of 3D games around. Most XNA games only feature 2D graphics. I hope to contribute with this tutorial to making 3D graphics a bit less intimidating. And maybe the little prototype we will create throughout the next pages will be the starting point of a great 3D indie game by one of you :)

We will make a prototype that features the kind of rolling world effect that you can see in games such as Animal Crossing or DeathSpank. We will also create the textures and 3D models that go along with the rolling effect and recreate the combination of 2D art with a 3D world you can see in the game DeathSpank.

17Aug/104

Article: Texture Modification using Render Targets, with some Stencil Buffer Action

by Dave Carlile

Planet Craters

Sometimes you need to modify a texture while your game is running, and there are a number of ways to do this. One of the first things newer game programmers often try to do is use Texture2D.GetData to copy the texture data from the GPU to an array on the CPU, modify the bytes, and then send it back to the GPU with Texture2D.SetData.

This is a bad idea on many, levels. Beyond issues with pipeline stalls, GetData and SetData can be slow, especially when working with a large texture. Any time you’re tempted grab data from the GPU for use on the CPU you should very carefully consider all of your options. There are often other solutions that let you keep the data entirely on the GPU and accomplish the same thing.

This tutorial will use an example that could be solved with GetData and SetData, and show you another alternative using render targets and the stencil buffer that will let you perform the same function entirely on the GPU.

14Aug/105

Article: Derived Effect Classes in XNA 4

by Dave Carlile

One of the nice API changes in XNA 4.0 is the simplified syntax used when drawing with an Effect. In previous versions you would draw things like this:

effect.Begin();
foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
        pass.Begin();
        // draw your stuff
        pass.End();
}
effect.End();

Now you can draw things like this, with EffectPass.Apply handling all the magic:

foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
        pass.Apply();
        // draw your stuff
}

Related to this is the new Effect.OnApply virtual method which gets called by EffectPass.Apply. By overriding this method in a derived class you can do things like perform pre-shader calculations and set shader parameters from properties. This is how BasicEffect and the other new standard shaders work, and it would be nice to be able to duplicate that functionality in our own derived effects.
Ideally we would like to be able to do something like this:

        MyEffect effect = Content.Load<MyEffect>(“myeffect”);
        effect.World = Matrix.Identity;
        effect.Color = Color.Blue;
        ...
        effect.Apply();
        ...

The first line is where we begin running into issues. In order to load a derived class using the content pipeline you have to write your own content processor, reader, and writer, for every single class. You might think that you could load an Effect instance using the content manager, then create an instance of your derived Effect class and pass in the code. Unfortunately, there is no way to get at the code in the Effect instance (okay, that is not entirely true, but this solution requires the full Game Studio install).
If you want to store the class properties (e.g. MyEffect.World, MyEffect.Color) as content then extending the content pipeline for each class is your best option. But what if you don't need to store the properties? What if you just want a cleaner interface to your shaders? Extending the pipeline each time for these cases seems like a lot of unnecessary work.

A Solution

This remainder of this tutorial will show you how to load any derived Effect class from the content pipeline without having to extend the pipeline for each class. To accomplish this we're going to create a content pipeline extension library that will compile the effect into an intermediate object that will let us get at the compiled code. We will also create a game library that will define the intermediate class so we can get to it at run time. And finally we’ll add an extension method that will do the work of loading our derived Effect class.

3Feb/102

Pong in F#

Former MVP, currently XNA Team Member, Nick Gravelyn talks about how he made Pong using F#. Not my cup of tea, but still might be an interesting read for some people.

30Jan/103

Article: Using XNA Content pipeline extensions for localization.

by Roy Triesscheijn

Introduction

In this tutorial series I will show how to setup a simple Content Pipeline extension. At first it will be used to parse XML files containing text and their translations, in a part 2 we are going to extend our processor to also parse other xml files which contain data about localized textures and sounds. We extend XNA’s content manager to make use of all this extra data.

27Jan/100

Enhanced Crowd Rendering in Dead Shift

The guys behind Dead Shift just posted a new video, accompanied by a discussion about how they enhanced a technique for crowd rendering taken from GPU Gems 3.
You can watch the demonstration video below, and then go and read all the details.