August 2007 - Posts
Starting Monday the Gears of War Hidden Fronts Map pack will be free...
"With nearly 500,000 downloads to date, the “Gears of War®” Hidden Fronts Map Pack has become the No. 1 piece of premium downloadable content on Xbox LIVE Marketplace. Beginning Monday, September 3 at 2:00 a.m. PDT, the Hidden Fronts Map Pack will join the Annex gametype and Multiplayer Map Pack 1 as another piece of free downloadable content for “Gears of War.”", Team Xbox...
Here is a Direct Link to the Article.
Cross Post from www.virtualrealm.com.au
For those using Blender for your XNA Modeling you will pleased to know that in the next Release of Blender (2.45) the FBX Exporter will now support Animations. Included in the last release there was a small release of the exporter.
"Blender 2.45 will have an updated Autodesk FBX exporter to support exporting
character animations.
FBX is an advanced format, and some users might not be aware that the exporter already exported blenders multiple UV and color layers as well as lights, and camera data.
Reports are that this works with Maya, Motion-Builder, Cinema4D and Unity3d.
We hope that this will help Blenders presence in the game industry and as a tool for DCC (digital content creation)." Blender Nation...
If you would like to assist in the testing of the Export Script you can download the Blender 2.45rc from the Blender Downloads site, and the script from here. A big thanks goes out to Unity3D for supporting the project.
Cross Post from www.virtualrealm.com.au
www.gamasutra.com have posted a small interview with the Schiziod team where they talk about their product and the XNA System.

"At GameFest 2007, Torpex Games president Bill Dugan and technical director Jamie Fristrom gave a pre-mortem of their forthcoming deubt title Schizoid, developed on the XNA Game Studio Express platform for Xbox Live Arcade."
Here is the direct link to the Article.
Cross Post from www.virtualrealm.com.au
A little while ago I started playing around with some Parallax Scrolling examples, but recently a community member asked if I could post the sample code I was working on. So after cleaning it up a little bit here it goes.

To start with open a base windows game application and make sure it compiles and runs, next so that the application looks good on both the Xbox 360 and Windows set the display format to a format that looks good on both. Add the following lines of code to the game1 contructor, just under the setup for the content manager.
[code language="C#"]
// Prefer a resolution suitable for both Windows and XBox 360
graphics.PreferredBackBufferWidth = 853;
graphics.PreferredBackBufferHeight = 480;
[/code]
The next step is to add another class to the project and add my background item class. Here is the code for the class.
[code language="C#"]
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
namespace ScrollingBackground
{
public class BackgroundItem
{
public Vector2 Position;
private Vector2 Direction = new Vector2(-1, 0);
public float Speed;
public float SpeedConstant;
public Texture2D BackgroundTexture;
private Vector2 positionImage1;
private Vector2 positionImage2;
public BackgroundItem(Vector2 position)
{
this.Position = position;
}
public void LoadGraphicsContent(ContentManager content,string assetName)
{
this.BackgroundTexture = content.Load<Texture2D>(assetName);
this.positionImage1 = this.Position;
this.positionImage2 = new Vector2(this.Position.X + this.BackgroundTexture.Width, this.Position.Y);
}
public void Update(GameTime gameTime)
{
float timeDelta = (float)gameTime.ElapsedGameTime.TotalSeconds;
if (this.positionImage1.X < (0 - this.BackgroundTexture.Width))
{
this.positionImage1.X = this.positionImage1.X + (this.BackgroundTexture.Width * 2);
}
if (this.positionImage2.X < (0 - this.BackgroundTexture.Width))
{
this.positionImage2.X = this.positionImage2.X + (this.BackgroundTexture.Width * 2);
}
this.positionImage1 += this.Direction * this.Speed * this.SpeedConstant * timeDelta;
this.positionImage2 += this.Direction * this.Speed * this.SpeedConstant * timeDelta;
}
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(this.BackgroundTexture, this.positionImage1, Color.White);
spriteBatch.Draw(this.BackgroundTexture, this.positionImage2, Color.White);
}
}
}
[/code]
Now to set up all of the varibles needed for the application, Underneath the where the graphics and content manager are set up add the following...
[code language="C#"]
GraphicsDeviceManager graphics;
ContentManager content;
SpriteBatch spriteBatch;
Texture2D backgroundSkyTexture;
BackgroundItem hillsBackground;
BackgroundItem groundBackground;
[/code]
Adjust the load Graphics call so that it looks like this...
[code language="C#"]
/// <summary>
/// Load your graphics content. If loadAllContent is true, you should
/// load content from both ResourceManagementMode pools. Otherwise, just
/// load ResourceManagementMode.Manual content.
/// </summary>
/// <param name="loadAllContent">Which type of content to load.</param>
protected override void LoadGraphicsContent(bool loadAllContent)
{
if (loadAllContent)
{
// TODO: Load any ResourceManagementMode.Automatic content
this.spriteBatch = new SpriteBatch(this.graphics.GraphicsDevice);
this.backgroundSkyTexture = content.Load<Texture2D>(@"Content\Textures\Background_Sky");
hillsBackground.LoadGraphicsContent(content,@"Content\Textures\Background_Hills");
groundBackground.LoadGraphicsContent(content,@"Content\Textures\Background_Ground");
}
// TODO: Load any ResourceManagementMode.Manual content
}
[/code]
So that we can update the Background Items so that they can move, change your update override in the game1 class to look like this...
[code language="C#"]
/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input and playing audio.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
// TODO: Add your update logic here
hillsBackground.Update(gameTime);
groundBackground.Update(gameTime);
base.Update(gameTime);
}
[/code]
And Finally to draw the Background change your Draw over ride to look like this...
[code language="C#"]
/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
// TODO: Add your drawing code here
this.spriteBatch.Begin(SpriteBlendMode.AlphaBlend);
this.spriteBatch.Draw(this.backgroundSkyTexture, new Vector2(0, 0), Color.White);
hillsBackground.Draw(this.spriteBatch);
groundBackground.Draw(this.spriteBatch);
this.spriteBatch.End();
base.Draw(gameTime);
}
[/code]
I know that the post seems a little rushed, but you should get the idea, Here is a link to the complete code sample so that you can pull it apart if needed. If you have anythoughts on it remember to post them.
Cross Post from www.virtualrealm.com.au
I was going to get together some small articles on how to install and run the new SoftImage XSI Mod Tool with XNA and Game Studio Express but Inverse has come across the line first. In the short future I will be putting some articles together and publishing them, but for the moment have a go at these. Make sure that you do leave some feedback for Inverse so that his work can grow.
Cross Post from www.virtualrealm.com.au
Over the last few days I have started to play some more with the Mod Tool, the first thing that I needed to do was install it. One my NOtebook I am currently running Windows XP, and on the Desktop I am running Windows Vista. This gave me the perfect environment to test the installs on both Operating Systems.
The first stage was to install the system on my notebook and then on the Desktop, the install went through fine and with out any real problems so it would seem. When you are finished the install you are asked to update to the latest version from the softimage update system, this also went through fine. This update installs the plugins for XNA intergration as well as intergration into other engines.
The next step was to test the XNA Plugin, when running the install for the plugin from the softimage installer on the Notebook (Windows XP) it was fine, but on the Desktop (Windows Vista) i recieved an error for a DLL Import. So with out playing around too much I uninstalled the program and tryed again... same problem. So as a last resort before doing some internet searches I tryed the old method we used to have to use to install XNA and the Game Studio Express System.
To install the SoftImage XSI Mod Tool on Windows Vista start an command prompt under an adminstrator context (Right click on the command prompt icon and select run as Administrator), then browse to the directory where you downloaded the mod tool and execute the setup file. When finished the Plugin works fine and all is now right. I now have the SoftImage XSI Mod Tool runnning on both Windows XP and Windows Vista. Time to start Modeling...
After a couple of hours of modeling I was ready to render some of the images to see how they are going. In the mod tool you have the ability to display the model using an OpenGL, DirectX 9 or DirectX 10 window. But when you do swap to the direct X windows the system drops out with an error saying that you need the DX Runtime for December 2006. To fix this I installed the latest runtime from the Microsoft site (August 2007). When I went back to render my model the system will now allow me to use all of the different views to display my models.
Hope this helps.
Here are the direct Links for the DirectX (August 2007) Runtime, Full Manual Install, Web Installer...
Cross Post from www.virtualrealm.com.au
As you all have noticed SoftImage have released the latest Version of thier Mod Tool, which includes support to allow XNA Developers to use the product for thier Applications.
To help you get started here is a link to a Video Series that will take you through the process of creating a low Poly Model using the SoftImage XSI Toolset.
Cross Post from www.virtualrealm.com.au
When you install and run the Ship starter kit that has just been released on the XNA Creators Site you are required to to have a card that Supports Pixel Share 2.0a. The good news is that Darkside has posted a small post on how to get the Starter Kit to run using a lower version of the Pixel Shader. Note that this post might also help to get some of the other samples running on older graphic cards.
"Thing is when you get the Ship game out of the box and compile it, it will run. Except that at first you get kicked out for having a naff Graphics card without Pixel Shader 2.0A support.", Darkside...
Here is a Direct Link to Darksides Post.
Cross Post from www.virtualrealm.com.au
Rob Miles is writing a Book on XNA Programming and has posted some sample chapters (Chapters 1 and 2), Drop on over have a read and leave some feedback.
Here is a link to the Direct Downloads for the Chapters.
And I agree with Ziggy,
"It would be interesting to read about how your book progresses, the pitfalls as well as helpful advice for all the authors-to-be out there :)", Ziggy...
Cross Post from www.virtualrealm.com.au
Well last night the Microsoft Guys finally announced the XNA Game Studio 2.0 System and the good news for those who didn't want to install the Visual Studio Express System... You will now find that the XNA Game Studio 2.0 system will be supported on all SKU's in the Visual Studio 2005 range. Here is a link to the XNA Team Blog where the announcement was made.
Here is just a small bit of History on the XNA Framework.
- Version 1.0 was released in December 2006
- The Version 1.0 Refreash was released in April 2007
- There have ben 350,000+ Downloads of the XNA Game Studio Express System (As of August 2007)
- There are over 175 Universities worldwide using XNA Game Studio Express to Teach (As of August 2007)
What's New with XNA Game Studio?
- XNA Game Studio 2.0 works in all versions of Visual Studio 2005. This includes Standard and Professional, as well as many other specific editions.
- The new and improved interface makes it easier for you to manage your Xbox 360 console.
- You'll find that managing and building content is easier and more consistent in XNA Game Studio.
- We've included project templates for content importers and processors.
- You can configure how content is processed with the new ability to set parameters on Content Processors.
What's new in the XNA Framework? Now you can:
- Create rich multiplayer games over Xbox LIVE using the new networking APIs.
- Create Audio more effectively with the new XACT editor!
- Host XNA Framework games easily inside a Windows Form.
- Use the virtualized GraphicsDevice: no more special code to handle device reset and recreate!
- Take advantage of render targets that are more flexible, consistent, and easier to use. Xbox 360 and Windows now support multiple render targets (MRTs) as well.
- Easily nest one component inside another thanks to improvements in GameComponent.
- Enjoy many more enhancements and tweaks!
Remember guys that the Sessions from Game Fest 2007 will be webcast so that we all will be able to see what is happening.
"We are delighted to announce that we will be webcasting the keynote, along with six sessions from the first day of the XNA Game Studio track, for Game fest 2007 on August 13th", David Weller
Remember that if you would like more information on the XNA or Game Studio drop over to the Creators Site or the XNA Team Blog, also remember that the #xna Channel on Efnet IRC is alive and there are always Active Community members online ready to talk.
Cross Post from www.virtualrealm.com.au
This Safe Area Component is based off a helper class that was written by Manders from "Manders vs. Machine" a long while back. This Component will draw a transparent set of rectangles on the Game Application to show the different Safe areas. In this example the Red area is unsafe, where the Yellow area is Action Safe and the remainder is title safe.

I can not see this example used in many production systems, but it could be used for presentations (Which I have used it for) or demos to show the safe area when explaining the safe area system. Another use could be to check your application while it is running to see if it will use the safe areas.
Here is the Link to the File Download, Note that this project has been set up so that the Game Component is installed as a seperate Assembly for the project. To use it you would add a reference to the compiled Assembly.
Cross Post from www.virtualrealm.com.au
I was doing some research on some PowerShell scripts for work and came across some simple functions for Find and Replace for the Registry. These functions were put together by Jason Stangroome from Code Assassin.
"I wanted a fast way to find all "U:\Program Files" references in the registry and repoint them to drive C:. The standard Windows regedit.exe only supports Find but not Replace (and there were a lot of keys to fix) and third party registry tools available on the Internet fall into the untrustworthy category for fixing servers."
[code language="C#"]
function Find-RegistryValue (
[string] $seek = $(throw "seek required."),
[System.Management.Automation.PathInfo] $regpath = (Get-Location) ) {
if ($regpath.Provider.Name -ne "Registry") { throw "regpath required." }
$keys = @(Get-Item $regpath -ErrorAction SilentlyContinue) `
+ @(Get-ChildItem -recurse $regpath -ErrorAction SilentlyContinue);
$results = @();
foreach ($key in $keys) {
foreach ($vname in $key.GetValueNames()) {
$val = $key.GetValue($vname);
if ($val -match $seek) {
$r = @{};
$r.Key = $key;
$r.ValueName = $vname;
$r.Value = $val;
$results += $r;
}
}
}
$results;
}
[/code]
[code language="C#"]
function Replace-RegistryValue (
[string] $seek = $(throw "seek required."),
[string] $swap = $(throw "swap required."),
[System.Management.Automation.PathInfo] $regpath = (Get-Location) ) {
$find = Find-RegistryValue -seek $seek -regpath $regpath;
$results = @();
foreach ($target in $find) {
$nval = $target.Value -replace $seek, $swap;
$r = @{};
$r.Key = $target.Key;
$r.ValueName = $target.ValueName;
$r.OldValue = $target.Value;
$r.NewValue = $nval;
$results += $r;
$wKey = (Get-Item $r.Key.PSParentPath).OpenSubKey($r.Key.PSChildName, "True");
$wKey.SetValue($target.ValueName, $nval);
}
$results;
}
[/code]
Cross Post from www.virtualrealm.com.au