November 10th, 2006 by Sharky

So, I said earlier I’d talk about the XNA team and their excellent support as I worked on the XNA beta 2 conversion of my game.

I am seriously impressed with every one of them I had the pleasure to deal with :)

  • professional
  • down to earth, and fun to deal with
  • prompt, enthusiastic & great communicators.
  • superb ambassadors for not just XNA, but Microsoft too.

I’m not just talking about them individually either. It really felt like the whole team was pitching in to help.  I was never treated like an idiot (even though I knew I was). And there was not a single complaint about the amount of emails I was spamming their way.

In no particular order, special thanks to:

(sincere apologies if I’ve missed anyone)

;)

Average Rating: 4.9 out of 5 based on 167 user reviews.

kick it on GameDevKicks.com 

November 10th, 2006 by Sharky

It’s been quite a ride, but I have finally finished converting the game over to XNA beta 2.

Go get the new build at my latest build page.

(for those that couldn’t try it before, beta 2 now has a redistributable install. This means there is no longer any need to install all the developer tools just to try the game.)

About the conversion…

The initial code conversion went fairly smoothly – until I tried running it. There must have been enough subtle changes to XNA under the hood that my game simply didn’t render like it used to. Basically naive code assumptions on my part, that by some fluke worked under beta 1.

  • RenderStates, not being explicitly set at times
  • AlphaBlending troubles
  • and to top it all off, my 3D model was rendering very strangely indeed. Even had Mickey Mouse ears at one point. Sorted now – my bad.

So, all issues are ironed out, and such a relief! I really couldn’t have done it without the most excellent support of Microsoft’s XNA Team. I will blog about them real soon.

Average Rating: 4.9 out of 5 based on 155 user reviews.

kick it on GameDevKicks.com 

November 9th, 2006 by Sharky

Especially for JD, I will try to reduce the number of Exclamation marks & capitalised words placed in this post.  ;)

Microsoft have produced an impressive wee video showing off some of the cool stuff people are doing with XNA.

I’m stoked to say my game features.  They even dubbed some conceptual sound on for me, so I better get busy and make that a reality.  (no sign of my nice smoke effects, so I’m guessing they used an older build)

So if you thought my game was a little perty, just wait till you see some of the other stuff folk have been doing.  Truely stunning.

David Weller of LetsKillDave has the sweet details here.

p.s.  a higher resolution video will follow, but for now it’s a fairly small “Zune” sized one.

YE-YEEAH!

Average Rating: 4.7 out of 5 based on 154 user reviews.

kick it on GameDevKicks.com 

November 2nd, 2006 by Sharky

True to form LetsKillDave had the BIG news first!

SCHWEEET!!!

You can read about and get Game Studio Express Beta 2 from this page.

Here’s the direct download link for the impatient.  ;)

Download Game Studio Express (beta 2)

 

In other good news I see the page also has a download for the XNA framework redistributable. This is what people will need in order to play our games.  At last, they won’t be forced to install the whole development suite just to play the game!!!

Download the XNA Framework (beta 2) Redistributable

Mitch Walker of the XNA Team has posted more details on the changes between Beta 1 and Beta 2.  Check it out here.

So much to do – so little time.

%)

Average Rating: 4.9 out of 5 based on 274 user reviews.

kick it on GameDevKicks.com 

October 31st, 2006 by Sharky

Once again, I’ve stumbled on some cool HLSL (High Level Shader Language), but haven’t had time to seriously read it!!!

Rather than bookmarking it selfishly, I’ll continue my trend of blogging about it.  Fire and forget blogging – ROCK ON!!!

So here we go…

“XNA – Parallax Mapping” tutorial

Over at Ziggyware I found an XNA based tutorial for a Parallax Mapping Shader.  Advanced stuff by my reckoning!

Check out the “XNA – Parallax Mapping” tutorial here

“Human Skin shader” sample

I can’t remember how, but I also stumbled on what looks like some seriously hard-core shader action at “J.I. Styles | Online portfolio”.  It’s not XNA specific, but the HLSL (*.fx) file is there to download.  The sample is an awesome Human Skin shader!  Impressive!  Out of my league, but impressive!

Check out ”Adventures in HLSL pixel shaders” here

Average Rating: 4.5 out of 5 based on 298 user reviews.

kick it on GameDevKicks.com 

October 31st, 2006 by Sharky

I see David “LetsKillDave” Weller has posted a short and sweet blog introducing us to some changes to XNA and how to start converting from Game Studio Express Beta 1 to the very imminent Beta 2.  This is the 1st guide I’ve seen on the subject - good stuff Dave!

Check it out here

Also, he keeps us all on the edge of our seats saying:

If you’ve read this far, you’re probably thinking, “So when will beta 2 be available?”  The answer is…look for my next post that will come within the next 24 or so hours

;)

Average Rating: 4.9 out of 5 based on 279 user reviews.

kick it on GameDevKicks.com 

October 26th, 2006 by Sharky

I’m a bit slow posting on this one, but in case you hadn’t heard already, it’s coming, and it’s coming soon.  Should be out in a couple of weeks.

:)

No word on what’s new in the Beta 2, but it’s probably a fairly safe bet that the “Content Pipeline” will be included.  At least that’s what everyone’s wishing for.  ;)

The XNA Team blog has the announcement.  Check it out here.

Average Rating: 5 out of 5 based on 212 user reviews.

kick it on GameDevKicks.com 

October 24th, 2006 by Sharky

 

I promised I’d start sharing some snippets of source, so here’s the HLSL Shader code (an *.fx file) I use for rendering my Aircraft.  (as requested by Omegaman)

Those familiar with the XNA “Spacewars” sample will see an uncanny the resemblance to the sample’s Ship.fx file.  In fact it’s probably barely changed. Perhaps some trimming here and there, but I really can’t remember.

It’s pretty scary HLSL for a beginner like me.  I’d love to be able to explain it to folk, but frankly I barely understand it myself!  ;)

(next time hopefully I’ll be posting some HLSL I can at least reasonably explain)

I will try and describe its characteristics though:

  • It lights & shades the model with a provided Ambient color, a Directional light and a Point light.  Directional light is a color of light cast in a particular direction, from no particular point in space.  In other words, its brightness is the same no matter where the model is in space.  Point light however is a color radiating out from a point in space, so the closer the model is to it, the stronger the effect.
  • SkinTexture is the painted skin of the model…duh!
  • ReflectionTexture is special kind of texture – a TextureCube.  I haven’t really experimented with it but I believe the texture passed would be a mock up of the typical world around the model, and it would be rendered as ‘good enough’ reflections on the model.  I say ‘good enough’ because you’d probably have a static TextureCube of a typical sky, clouds and ground, rather than dynamically create one with the exact rendered background and moving clouds.  To do so, might be possible, but I imagine a performance killer if you had to do it on every frame.
  • I think the NormalMap stuff might be redundant actually.
//Input variables
float4x4 world;
float4x4 inverseWorld;
float4x4 worldViewProjection;
float4 viewPosition;
float4 Ambient;
float4 DirectionalDirection;
float4 DirectionalColor;
float4 PointPosition;
float4 PointColor;
float PointFactor;
float4 Material;
texture SkinTexture;
sampler Skin = sampler_state
{
Texture = (SkinTexture);
ADDRESSU = CLAMP;
ADDRESSV = CLAMP;
MAGFILTER = LINEAR;
MINFILTER = LINEAR;
MIPFILTER = LINEAR;
};
texture NormalMapTexture;
sampler NormalMap = sampler_state
{
Texture = (NormalMapTexture);
ADDRESSU = CLAMP;
ADDRESSV = CLAMP;
MAGFILTER = LINEAR;
MINFILTER = LINEAR;
MIPFILTER = LINEAR;
};
texture ReflectionTexture;
sampler Reflection = sampler_state
{
Texture = (ReflectionTexture);
ADDRESSU = CLAMP;
ADDRESSV = CLAMP;
MAGFILTER = LINEAR;
MINFILTER = LINEAR;
MIPFILTER = LINEAR;
};
struct VS_INPUT
{
    float4 ObjectPos: POSITION;
    float2 Tex : TEXCOORD0;
    float3 ObjectNormal : NORMAL;
};
struct VS_OUTPUT
{
float4 ScreenPos: POSITION;
float2 Tex: TEXCOORD0;
float3 WorldNormal: TEXCOORD1;
float4 PointDirection: TEXCOORD2;
};
VS_OUTPUT AircraftVS(VS_INPUT In)
{
VS_OUTPUT Out;
    //Move to screen space
    Out.ScreenPos = mul(In.ObjectPos, worldViewProjection);
    
    float4 WorldPos = mul(In.ObjectPos, world);
    float4 WorldNormal = mul(In.ObjectNormal, world);
    
    //Pass on texture coordinates and normal
    Out.Tex = In.Tex;
    Out.WorldNormal = WorldNormal;
    //Direction of point light to this vertex
    float4 lightDir;
    lightDir= PointPosition - WorldPos;
    float dist = length(lightDir);
    lightDir = lightDir/dist;
    
    //Store attenuation in w
    lightDir.w = saturate(1/(PointFactor * dist));
    Out.PointDirection = lightDir;
return Out;
}
float4 DirectionalLight(float3 WorldNormal)
{
    return DirectionalColor * saturate(dot(WorldNormal, normalize(DirectionalDirection)));
}
float4 PointLight(float3 Normal, float4 PointDirection)
{
    return PointColor * saturate(PointDirection.w * dot(Normal, normalize(PointDirection.xyz)));
}
float4 AircraftPS( float2 tex: TEXCOORD0, float3 WorldNormal : TEXCOORD1, float4 PointDirection : TEXCOORD2) : COLOR
{
    WorldNormal = normalize(WorldNormal);
    
    float4 Directional = DirectionalLight(WorldNormal);
    float4 Point = PointLight(WorldNormal, PointDirection);
    
    //Specular map is in alpha of diffusemap and material
    float MattFactor = Material.a * tex2D(Skin, tex).a;
    //Add it all up
    float4 retval;
    retval= saturate(
                Material *
                (                                        //Remove alpha channel from texture
                    ((Ambient + Directional + Point) * float4(tex2D(Skin, tex).rgb, 1)) +
                    (1-MattFactor) * texCUBE(Reflection, WorldNormal)
                )
            );
    
    
    return retval;
}
//--------------------------------------------------------------//
// Technique Section for Aircraft Effects
//--------------------------------------------------------------//
technique Aircraft
{
pass Single_Pass
{
        ZENABLE = TRUE;
        ZWRITEENABLE = TRUE;
        
        CULLMODE = CW;
        VertexShader = compile vs_1_1 AircraftVS();
        PixelShader = compile ps_2_0 AircraftPS();
}
}

Average Rating: 4.9 out of 5 based on 297 user reviews.

kick it on GameDevKicks.com 

October 24th, 2006 by Sharky

I have updated the Latest Screenshots page with some shots of my game’s new smoke effects in action. (aka. Particle System)

Check them out over here!

Dusk smoke
Day smoke

Average Rating: 4.7 out of 5 based on 273 user reviews.

kick it on GameDevKicks.com 

October 24th, 2006 by Sharky

I just uploaded another new build over here.  The aircraft now billow smoke as they take damage.

:)

p.s.  still no explosions yet.

Average Rating: 4.7 out of 5 based on 299 user reviews.

kick it on GameDevKicks.com