Results for the Absolutely Fine XNA Tutorial Contest
We have judged, we have analyzed the votes received from you; and now we have our winners!
The first place goes to
Rolling World Tutorial
by Christian Schlager
His prize consists of:
- One SunBurn Community License
- One License for Toon Boom Studio
- One 12-Months XNA Creator's Club Premium Subscription
The second place goes to
XNA Farseer Platform Physics Tutorial
by Roy Triesscheijn
For his hardwork, he receives:
- One License for Toon Boom Studio
- One 4-Months XNA Creator's Club Premium Subscription
And finally, the third place goes to :
Programming your first XNA 4.0 game for PC, Xbox 360 & Windows Phone 7: Pong
by Thomas "Mister Helmut" Altenburger
He also receives:
- One License for Toon Boom Studio
- One 4-Months XNA Creator's Club Premium Subscription
Congratulation to all of our winners. They deserve it!
We'd like to thank our sponsors for their support:
- Toon Boom Animation Inc. for the Toon Boom Licenses
- Synapse Gaming for the SunBurn Community License
- Cpt. ZSquare, for the Creator's Club subscription codes
- Everyone in the Sgt. Conker barracks for the hard work they put in
And another set of thanks and applause go to all of our participants, who worked hard to bring us all the articles.
Here they are again, in all their glory:
- Arbitrary Shaped Secondary 2D Viewports, by Harry Trautmann
- Character Movement, by David Kendall
- Derived Effect Classes in XNA 4.0, by Dave Carlile
- Input Playback, by Jesse Chounard
- Multiple columns with Game State Management, by Jeff Brown
- Node-Based Scripting, by Blecki
- Programming your first XNA 4.0 game for PC, Xbox 360 & Windows Phone 7: Pong, by Thomas "Mister Helmut" Altenburger
- Rolling World Tutorial, by Christian Schlager
- Scripting on the Xbox 360, Windows Phone and Beyond!, by UberGeekGames
- Shaders - Introduction, by Daniel Greenheck
- Shaders - Ambient Lighting, by Daniel Greenheck
- Shaders - Diffuse Lighting, by Daniel Greenheck
- Shaders - Specular Lighting, by Daniel Greenheck
- Shaders - Texturing, by Daniel Greenheck
- Shaders - Rim Lighting, by Daniel Greenheck
- Simple 3D Camera in XNA, by Pete Street
- Texture Modification using Render Targets, with some Stencil Buffer Action, by Dave Carlile
- Vacant Skies - Action RPG Tutorial Series, by Aaron T Foley
- WCF on the Windows Phone 7 - The How-To Guide, by Simon Jackson
- XNA Farseer Platform Physics Tutorial, by Roy Triesscheijn
About our sponsors
Toon Boom Studio is a great product for 2D animations, allowing you to use a wide range of techniques for your work, including: stop-motion animation, traditional digital animation, traditional paper animation, cut-out animation and rotoscoping. In their own words: "Toon Boom Animation offers easy to use software applications for storyboarding and animation, that perfectly fit game developers' needs. Propel your games to the next level using pre-visualization and leading-edge animation features." I found the product very easy to use, and it will be a great addition to the arsenal of your development tools.
SunBurn is a Lighting and Rendering engine built on top of our beloved XNA Framework. As the guys at Synapse Gaming say, "combining the latest lighting and rendering technology with a flexible and easy to use framework, SunBurn performs the heavy-lifting, letting you focus on your games." For a full list of features included in the SunBurn Engine, visit their site. The license we're giving out as a prize is provided by the kind people and Synapse Gaming.
1 Day remaining
Quick reminder for our 'Absolutely Fine' XNA Tutorial Contest: The deadline is about 1 day away, so if you want to enter the contest, send us your entry!
At the moment, we have 4 published entries, and another around 14 entries that we're preparing for publishing.
Good luck!
Contest deadline approaching!
Hi all,
Just a reminder that the deadline for our 'Absolutely Fine' XNA Tutorial Contest is closing in, and you have about 1 week to send your entries into the contest.
If you forgot the details of the contest, feel free to refresh your memory.
We're currently hard at work to get the rest of the entries online for your reading pleasure.
Good luck!
Article: Texture Modification using Render Targets, with some Stencil Buffer Action
by Dave Carlile

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.
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.
Article: Input Playback
by Jesse Chounard
Lately I’ve noticed a trend in games to allow players to save and play back recordings of their play upon completion of a match. This allows players to analyze their mistakes, as well as learn new tactics and techniques from their opponents. This feature is becoming common in all sorts of games. You can find it in real time strategy games like StarCraft, first person shooters like Halo 3, and fighting games like Super Street Fighter 4.
In many cases, these gameplay recordings are often uploaded to a server on the internet, and are available for download by anyone. The recordings don’t require buffering or waiting for a big download to finish. Instead, the playback just starts right up. How is this possible? Great looking high definition video files are gigantic. Also, video compression takes a huge amount of computation, so wouldn’t it slow the gameplay down to record everything?
It turns out that there’s a really simple trick. We’re not recording video. Instead, we just store all of the user input, and then later we can use those inputs to exactly recreate the gameplay in our game engine. So while it looks like we’re watching a stored video, instead we’re just watching the computer playing the game using our stored inputs instead of using the game controller for input.
In this tutorial, I’ll show you a simple method that you can use to achieve gameplay recording and playback, and also list a few other uses for this technique.
First entry to the contest received!
We have just received (by email) our first submission in The Sgt. Conker "Absolutely Fine" Tutorial Contest!
We'll arrange it soon into a nice format and post it on the site in the next few days, but we had to get the excitement off our chest first