<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sgt. Conker &#187; Animation</title>
	<atom:link href="http://www.sgtconker.com/category/xna/animation-xna/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sgtconker.com</link>
	<description>We are &#34;absolutely fine&#34;</description>
	<lastBuildDate>Wed, 06 Jul 2011 13:29:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Catalin on 2D Skeletal Animations</title>
		<link>http://www.sgtconker.com/2011/06/catalin-on-2d-skeletal-animations/</link>
		<comments>http://www.sgtconker.com/2011/06/catalin-on-2d-skeletal-animations/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 19:15:16 +0000</pubDate>
		<dc:creator>Captain boki</dc:creator>
				<category><![CDATA[2D]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[XNA]]></category>
		<category><![CDATA[Catalin Zima]]></category>
		<category><![CDATA[Skeletons]]></category>

		<guid isPermaLink="false">http://www.sgtconker.com/2011/06/catalin-on-2d-skeletal-animations/</guid>
		<description><![CDATA[Catalin “Too Proud To Self-promote” Zima (you might know him as our local XNA MVP Captain ZSquare) has a nice write-up of 2D Skeletal Animations over at his blog. So, if you ever wondered what the benefits of skeletal animations in the 2D world as compared to our beloved sprite sheets are, his post would [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.catalinzima.com/">Catalin “Too Proud To Self-promote” Zima</a> (you might know him as our local XNA MVP Captain ZSquare) has a nice write-up of <a href="http://www.catalinzima.com/2011/06/2d-skeletal-animations/">2D Skeletal Animations over at his blog</a>. So, if you ever wondered what the benefits of skeletal animations in the 2D world as compared to our beloved sprite sheets are, <a href="http://www.catalinzima.com/2011/06/2d-skeletal-animations/">his post would be your starting point</a> to explore this very topic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgtconker.com/2011/06/catalin-on-2d-skeletal-animations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nuclex Framework, Community Character Voting and Morph Targets</title>
		<link>http://www.sgtconker.com/2011/02/nuclex-framework-community-character-voting-and-morph-targets/</link>
		<comments>http://www.sgtconker.com/2011/02/nuclex-framework-community-character-voting-and-morph-targets/#comments</comments>
		<pubDate>Sat, 05 Feb 2011 21:58:47 +0000</pubDate>
		<dc:creator>Captain boki</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Shaders]]></category>
		<category><![CDATA[XNA]]></category>
		<category><![CDATA[FatCow]]></category>
		<category><![CDATA[Nuclex]]></category>
		<category><![CDATA[VoteForGeorge]]></category>

		<guid isPermaLink="false">http://www.sgtconker.com/2011/02/nuclex-framework-community-character-voting-and-morph-targets/</guid>
		<description><![CDATA[Markus “Cygon4” Ewald&#160;announces the immediate availability of an intermediate release of his Nuclex Framework, adding: “There are still outstanding issues, but the previous release is already getting a beard and I'm getting reports for issues already solved  ”
Amit Ginni Patpatia of FatCow Games AS fame reminds the community to vote for a character for [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nuclex.org/">Markus “Cygon4” Ewald</a>&#160;<a href="http://twitter.com/#!/Cygon4/status/33875462933454849">announces the immediate availability</a> of an <a href="http://nuclexframework.codeplex.com/releases/view/60431">intermediate release of his Nuclex Framework</a>, <a href="http://twitter.com/#!/Cygon4/status/33875616000385025">adding</a>: “<q cite="http://twitter.com/#!/Cygon4/status/33875616000385025">There are still outstanding issues, but the previous release is already getting a beard and I'm getting reports for issues already solved <img src='http://www.sgtconker.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </q>”</p>
<p><a href="http://twitter.com/#!/AmitGinni/status/33904490679640064">Amit Ginni Patpatia</a> of <a href="http://www.fatcowgames.net/">FatCow Games AS</a> fame reminds the <a href="http://networkedblogs.com/dIWpw">community to vote for a character</a> for an upcoming game.</p>
<p>Last but not least <a href="http://twitter.com/#!/mvinetwork/status/33927577106124801">Barnaby Smith</a>&#160;<a href="http://twitter.com/#!/mvinetwork/status/33927577106124801">pokes me</a> about an <a href="http://mvinetwork.co.uk/2011/02/02/xna-morph-targets/">XNA 3.1 Morph Target implementation he put online</a>: “<q cite="http://mvinetwork.co.uk/2011/02/02/xna-morph-targets/">This example uses multiple vertex streams and blends between them using a vertex shader. This approach is a differing method to CPU or VTF based implementations and does not require the calculation of vertex textures, making it quite simple and straightforward.</q>”</p>
<p> <iframe title="YouTube video player" height="390" src="http://www.youtube.com/embed/e6PLtA7wgg0?rel=0" frameborder="0" width="480" allowfullscreen="allowfullscreen"></iframe>
<p><a href="http://mvinetwork.co.uk/2011/02/02/xna-morph-targets/">Source code and more details can be found at his post</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgtconker.com/2011/02/nuclex-framework-community-character-voting-and-morph-targets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Article: I Can Has Platformer? (Part 3)</title>
		<link>http://www.sgtconker.com/2010/03/article-i-can-has-platformer-part-3/</link>
		<comments>http://www.sgtconker.com/2010/03/article-i-can-has-platformer-part-3/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 13:24:58 +0000</pubDate>
		<dc:creator>ElementCy</dc:creator>
				<category><![CDATA[2D]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[Articles]]></category>
		<category><![CDATA[XNA]]></category>
		<category><![CDATA[ICanHasPlatformer]]></category>

		<guid isPermaLink="false">http://www.sgtconker.com/?p=1349</guid>
		<description><![CDATA[by Casey Young
Welcome back to the third part of my series on how to create a simple platformer game.  In this article I take you on a little journey in making our hero animated.

Please refer to my second article to grab the final project before continuing this part, you will need that code to [...]]]></description>
			<content:encoded><![CDATA[<h4 style="text-align: center;">by <a href="http://www.ubergamermonkey.com/">Casey Young</a></h4>
<p><a href="http://www.sgtconker.com/wp-content/uploads/2010/03/ICHP3_FinalImage.png"><img src="http://www.sgtconker.com/wp-content/uploads/2010/03/ICHP3_FinalImage-300x175.png" alt="I Can Has Platformer Part 3 Final Image" title="I Can Has Platformer Part 3 Final Image" width="300" height="175" class="alignright size-medium wp-image-1353" /></a>Welcome back to the third part of my series on how to create a simple platformer game.  In this article I take you on a little journey in making our hero animated.<br />
<span id="more-1349"></span></p>
<p>Please refer to my <a href=" http://www.sgtconker.com/2010/02/article-i-can-has-platformer-part-2/">second article</a> to grab the final project before continuing this part, you will need that code to edit along with to make things work. =D</p>
<p>From the last part, we added our hero in the game and had him stroll about the level.  There was one thing missing though, he didn't really look like he was motivated at all.  In this part we are going to spice up our hero a bit and make him animated!  First off, you will need the new sprite sheet of our hero, which will replace our old image file.</p>
<p><a href="http://www.sgtconker.com/wp-content/uploads/2010/03/player.png"><img src="http://www.sgtconker.com/wp-content/uploads/2010/03/player-300x300.png" alt="Player Sprite Sheet" title="Player Sprite Sheet" width="300" height="300" class="aligncenter size-medium wp-image-1355" /></a></p>
<p>Save our new image file for our hero where the old one was, replacing the old file.  If you don't remember, it is under the folder Sprites/Player in the Content project of our ScribblePlatformer game.</p>
<p>Also, save the platform image below.  There is a few tweaks I made to them, mainly moving them up in the sheet to level off with the block images.  Replace it with your older copy in the Tiles folder in the Content project of our ScribblePlatformer game.</p>
<p><a href="http://www.sgtconker.com/wp-content/uploads/2010/03/Platforms.png"><img src="http://www.sgtconker.com/wp-content/uploads/2010/03/Platforms-300x300.png" alt="Platforms" title="Platforms" width="300" height="300" class="aligncenter size-medium wp-image-1357" /></a></p>
<p>One last modification before we get into the animation, I have modified the level to make it more exciting.  Modify the level1.txt file under the Levels folder of the Content project to the following:</p>
<pre class="brush: plain; title: ;">
.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.
.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.
.,.,.,.,.,.,.,.,.,r,b,g,o,y,.,.,.,.,.,.
.,b,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.
.,r,y,o,G,B,R,.,.,.,.,.,.,.,.,.,.,.,.,.
.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.
.,.,.,.,.,.,.,.,.,O,Y,R,.,.,.,.,.,.,.,.
.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.
.,.,.,.,R,B,G,.,.,.,g,.,.,.,B,G,O,.,.,.
.,+,.,.,.,.,.,.,.,.,b,.,.,.,.,.,.,.,.,.
r,r,b,b,g,g,o,o,y,y,r,b,g,o,y,r,b,g,o,y
</pre>
<p>Now let's get to the nitty gritty, Animations!  Let's create a new class file and name it Animation.  In this class, we will house a single animation for our AnimatedSprite class that we will be making after this.  The animation class will hold everything we need to do a single animation, such as it's name, the frames to draw, and the order to draw.  This class will also have a delegate to a function to call to notify when the animation is done for say 1shot animations, then wanting to switch back to another animation, or to chain animations together.</p>
<p>Let's start off by declaring our basic members and some of our public properties.</p>
<pre class="brush: csharp; title: ;">
		/// &lt;summary&gt;
		/// The name of the animation.
		/// &lt;/summary&gt;
		public string AnimationName { get; private set; }

		/// &lt;summary&gt;
		/// The id of the texture in the animatedSprite texture list
		/// &lt;/summary&gt;
		public int TextureId { get; private set; }

		/// &lt;summary&gt;
		/// The current frame to draw.
		/// &lt;/summary&gt;
		public int FrameToDraw { get { return frameList[currentFrame]; } }

		/// &lt;summary&gt;
		/// This is a callback function to call when the animation is done.
		/// &lt;/summary&gt;
		public delegate void AnimationEndCallback();

		private AnimationEndCallback callBack;

		private List&lt;int&gt; frameList;
		private float totalElapsed;
		private float timePerFrame;
		private int currentFrame;
		private int frameCount;
		private int framesPerSec;
		private bool isPlaying;
		private bool loopAnimation;
</pre>
<p>To declare a new animation, we want to give the animation a name, let it know which texture from a list to draw from, a list of frames, how fast the animation will be, and does the animation loop.  </p>
<pre class="brush: csharp; title: ;">
		public void LoadAnimation(string _animationName, int _textureId, List&lt;int&gt; _frameList,
			int _framesPerSec, bool _loop)
		{
			AnimationName = _animationName;
			TextureId = _textureId;
			frameList = _frameList;
			frameCount = frameList.Count;
			framesPerSec = _framesPerSec;
			timePerFrame = (float)1 / framesPerSec;
			currentFrame = 0;
			totalElapsed = 0;
			loopAnimation = _loop;
		}
</pre>
<p>Now it knows what the animation is, we need to tell it to start and stop, and even reset if we want to.  To do that, we want to have a few functions to do just that.</p>
<pre class="brush: csharp; title: ;">
		public void Play()
		{
			isPlaying = true;
		}

		public void ResetPlay()
		{
			currentFrame = 0;
			totalElapsed = 0;
			isPlaying = true;
		}

		public void Stop()
		{
			isPlaying = false;
		}
</pre>
<p>We are almost done with the animation class.  We need a way to set the delegate function so when the animation is done, it gets called.</p>
<pre class="brush: csharp; title: ;">
		public void AnimationCallBack(AnimationEndCallback _callback)
		{
			callBack =  _callback;
		}
</pre>
<p>The final function we need for our animated class is an update function.  This is the main guts, that gets called every update.  This will handle switching frames, and calling the delegate if it is done and needs to call it.</p>
<pre class="brush: csharp; title: ;">
		public void Update(GameTime _gameTime)
		{
			if(!isPlaying) return;

			totalElapsed += (float) _gameTime.ElapsedGameTime.TotalSeconds;

			if (totalElapsed &lt;= timePerFrame) return;

			currentFrame++;
			currentFrame = currentFrame%frameCount;

			totalElapsed -= timePerFrame;

			if (!loopAnimation &amp;&amp; currentFrame == 0)
			{
				isPlaying = false;
				if (callBack != null)
					callBack();
			}
		}
</pre>
<p>Now we can move on over to our AnimatedSprite class.  A few items will be ripped out of our player class, because our player will be inheriting from AnimatedSprite.  We only want to hold the basic items that make up an animated sprite, that would be things such as the spritesheets and the animations.  We could go with just 1 texture2d for the spritesheet, but I have built the animated sprite to have multiple spritesheets just in case we needed more than what 1 sheet could hold.  There is no logic in the AnimatedSprite class, so this should be pretty small file.  Create a new class file, and call it AnimatedSprite, and enter the following into it.</p>
<pre class="brush: csharp; title: ;">
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace ScribblePlatformer
{
	class AnimatedSprite
	{
		// This holds our texture to the sprite.
		public List&lt;Texture2D&gt; SpriteTextures { get; set; }

		public int FrameWidth;
		public int FrameHeight;
		private int framesPerRow;

		public Dictionary&lt;string, Animation&gt; SpriteAnimations;

		public AnimatedSprite()
		{
			FrameWidth = 96;
			FrameHeight = 96;
			framesPerRow = 4;
			SpriteTextures = new List&lt;Texture2D&gt;();
			SpriteAnimations = new Dictionary&lt;string, Animation&gt;();
		}

		/// &lt;summary&gt;
		/// Gets the Frame's origin
		/// &lt;/summary&gt;
		public Vector2 Origin
		{
			get { return new Vector2(FrameWidth / 2.0f, FrameHeight / 2.0f); }
		}

		public Rectangle GetFrameRectangle(int _frameNumber)
		{
			return new Rectangle(
			  (_frameNumber % framesPerRow) * FrameWidth,
			  (_frameNumber / framesPerRow) * FrameHeight,
			  FrameWidth,
			  FrameHeight
			);

		}
	}
}
</pre>
<p>Now we need to modify our Player class to make it an animated object.  Like I said earlier, we will make Player inherit AnimatedSprite.  As for the private members, we will be adding a few more and removing a few.  For starters, we can get rid of the Texture2D that used to hold the players texture.  This is replaced with the List of Texture2D's in AnimatedSprite.  We need to have a variable to hold what the current animation is, and we need to know which way the hero is facing.</p>
<pre class="brush: csharp; title: ;">
		private string currentAnim = &quot;Idle&quot;;

		private SpriteEffects flip = SpriteEffects.None;
</pre>
<p>Next we need to modify the LoadContent function to load up the spritesheet, and add a few animations for our hero.  For this simple project, our hero will be able to walk, jump, and idle.</p>
<pre class="brush: csharp; title: ;">
		/// &lt;summary&gt;
		/// Loads the player sprite sheet and sounds.
		/// &lt;/summary&gt;
		public void LoadContent()
		{
			// Load animated textures.
			SpriteTextures.Add(Level.Content.Load&lt;Texture2D&gt;(&quot;Sprites/Player/player&quot;));

			Animation anim = new Animation();
			anim.LoadAnimation(&quot;Idle&quot;, 0, new List&lt;int&gt;
			{
				0,
				11,
				0,
				12
			}, 7, true);
			SpriteAnimations.Add(&quot;Idle&quot;, anim);

			anim = new Animation();
			anim.LoadAnimation(&quot;Walking&quot;, 0, new List&lt;int&gt;
			{
				0,
				1,
				2,
				3,
				4,
				5,
				6
			}, 7, true);
			SpriteAnimations.Add(&quot;Walking&quot;, anim);

			anim = new Animation();
			anim.LoadAnimation(&quot;Jump&quot;, 0, new List&lt;int&gt;
			{
				7,
				8,
				9,
				10,
				9,
				8,
				7
			}, 20, false);
			anim.AnimationCallBack(JumpAnimEnd);
			SpriteAnimations.Add(&quot;Jump&quot;, anim);

			// Calculate bounds within texture size.
			// subtract 4 from width and height to remove a 2px buffer
			// around the player.
			int width = FrameWidth - 4;
			int left = (FrameWidth - width) / 2;
			int height = FrameHeight - 4;
			int top = FrameHeight - height;
			localBounds = new Rectangle(left, top, width, height);
		}
</pre>
<p>Notice on the jump animation, we are giving the animation a Callback, so it will change animations when it finishes the jump animation.  So we need to declare that now in our Player class.</p>
<pre class="brush: csharp; title: ;">
		public void JumpAnimEnd()
		{
			currentAnim = &quot;Idle&quot;;
			SpriteAnimations[currentAnim].Play();
		}
</pre>
<p>When the player resets, we want to restart stop the current animation, and start the starting animation, which in this case is idle.</p>
<pre class="brush: csharp; title: ;">
		/// &lt;summary&gt;
		/// Resets the player to life.
		/// &lt;/summary&gt;
		/// &lt;param name=&quot;_position&quot;&gt;The position to come to life at.&lt;/param&gt;
		public void Reset(Vector2 _position)
		{
			Position = _position;
			Velocity = Vector2.Zero;
			isAlive = true;
			SpriteAnimations[currentAnim].Stop();
			currentAnim = &quot;Idle&quot;;
			SpriteAnimations[currentAnim].ResetPlay();
		}
</pre>
<p>To make sure the hero gets animated, we need to call the current animation's update routine.  We want to do this in the update function of our hero.</p>
<pre class="brush: csharp; title: ;">
		/// &lt;summary&gt;
		/// Handles input, performs physics, and animates the player sprite.
		/// &lt;/summary&gt;
		public void Update(GameTime _gameTime)
		{
			GetInput();

			ApplyPhysics(_gameTime);

			SpriteAnimations[currentAnim].Update(_gameTime);

			// Clear input.
			movement = 0.0f;
			isJumping = false;
		}
</pre>
<p>Inside our GetInput we want to change the animations depending on what the user has inputed.</p>
<pre class="brush: csharp; title: ;">
		/// &lt;summary&gt;
		/// Gets player horizontal movement and jump commands from input.
		/// &lt;/summary&gt;
		private void GetInput()
		{
			// Get input state.
			GamePadState gamePadState = GamePad.GetState(PlayerIndex.One);
			KeyboardState keyboardState = Keyboard.GetState();

			// Get analog horizontal movement.
			movement = gamePadState.ThumbSticks.Left.X * MoveStickScale;

			// Ignore small movements to prevent running in place.
			if (Math.Abs(movement) &lt; 0.5f)
				movement = 0.0f;

			// If any digital horizontal movement input is found, override the analog movement.
			if (gamePadState.IsButtonDown(Buttons.DPadLeft) ||
				keyboardState.IsKeyDown(Keys.Left) ||
				keyboardState.IsKeyDown(Keys.A))
			{
				movement = -1.0f;
			}
			else if (gamePadState.IsButtonDown(Buttons.DPadRight) ||
					 keyboardState.IsKeyDown(Keys.Right) ||
					 keyboardState.IsKeyDown(Keys.D))
			{
				movement = 1.0f;
			}

			// Check if the player wants to jump.
			isJumping =
				gamePadState.IsButtonDown(JumpButton) ||
				keyboardState.IsKeyDown(Keys.Space) ||
				keyboardState.IsKeyDown(Keys.Up) ||
				keyboardState.IsKeyDown(Keys.W);

			if (isJumping &amp;&amp; currentAnim != &quot;Jump&quot;)
			{
				SpriteAnimations[currentAnim].Stop();
				currentAnim = &quot;Jump&quot;;
				SpriteAnimations[currentAnim].ResetPlay();
			}

			if(movement != 0 &amp;&amp; currentAnim != &quot;Jump&quot; &amp;&amp; currentAnim != &quot;Walking&quot;)
			{
				SpriteAnimations[currentAnim].Stop();
				currentAnim = &quot;Walking&quot;;
				SpriteAnimations[currentAnim].ResetPlay();
			}else if(currentAnim != &quot;Jump&quot; &amp;&amp; movement == 0 &amp;&amp; currentAnim == &quot;Walking&quot;)
			{
				SpriteAnimations[currentAnim].Stop();
				currentAnim = &quot;Idle&quot;;
				SpriteAnimations[currentAnim].ResetPlay();
			}
		}
</pre>
<p>The last thing we want to change is how we draw the player now.  We now need to take in consideration which way the player is moving, and what animation the player is on.</p>
<pre class="brush: csharp; title: ;">
		/// &lt;summary&gt;
		/// Draws the animated player.
		/// &lt;/summary&gt;
		public void Draw(GameTime _gameTime, SpriteBatch _spriteBatch)
		{
			Rectangle source = GetFrameRectangle(SpriteAnimations[currentAnim].FrameToDraw);

			// Flip the sprite to face the way we are moving.
			if (Velocity.X &lt; 0)
				flip = SpriteEffects.FlipHorizontally;
			else if (Velocity.X &gt; 0)
				flip = SpriteEffects.None;

			// Draw the player.
			_spriteBatch.Draw(SpriteTextures[0], position, source, Color.White, 0.0f, Origin, 1.0f, flip, 0.0f);
		}
</pre>
<p>There is one last thing we need to modify, and that is in the Level class.  Remember that I had you download a new Platform tilesheet?  Well, we need to modify the Level's GetBound function to compensate for the new placements of the tiles.  Before we were adjusting by 20 for the platforms, this is no longer necessary because the platforms are now level with the tops of the blocks.</p>
<pre class="brush: csharp; title: ;">
		/// &lt;summary&gt;
		/// Gets the bounding rectangle of a tile in world space.
		/// &lt;/summary&gt;
		public Rectangle GetBounds(int _x, int _y)
		{
			if (_x &lt; 0 || _y &lt; 0 || _x &gt;= Width || _y &gt;= Height)
				return new Rectangle(_x * Tile.Width, _y * Tile.Height, Tile.Width, Tile.Height);

			return new Rectangle(_x * Tile.Width, (_y * Tile.Height) + 5, Tile.Width, Tile.Height-5);
		}
</pre>
<p>Now build and run, and now our hero looks more motivated with some animation.</p>
<p><a href="http://www.sgtconker.com/wp-content/uploads/2010/03/ICHP3_FinalImage.png"><img src="http://www.sgtconker.com/wp-content/uploads/2010/03/ICHP3_FinalImage-300x175.png" alt="I Can Has Platformer Part 3 Final Image" title="I Can Has Platformer Part 3 Final Image" width="300" height="175" class="aligncenter size-medium wp-image-1353" /></a></p>
<p>In the next article, we are going to add some baddies to interact with the our hero. To get a hold of the project as it should be by the end of this part, <a href='http://www.sgtconker.com/wp-content/uploads/2010/03/ScribblePlatformer_Part3.zip'>click here</a>.</p>
<p>Stay tuned for the 4th part of the "I Can Has Platformer" series...</p>
<p><a href="http://www.sgtconker.com/2010/01/article-i-can-has-platformer-part-1/">Part 1</a></p>
<p><a href="http://www.sgtconker.com/2010/02/article-i-can-has-platformer-part-2/">Part 2</a></p>
<p><a href="http://www.sgtconker.com/2010/09/article-i-can-has-platformer-part-4/">Part 4</a></p>
<p><a href="http://www.sgtconker.com/2010/09/article-i-can-has-platformer-part-5/">Part 5</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgtconker.com/2010/03/article-i-can-has-platformer-part-3/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>KiloWatt Animation for XNA</title>
		<link>http://www.sgtconker.com/2010/03/kilowatt-animation-for-xna/</link>
		<comments>http://www.sgtconker.com/2010/03/kilowatt-animation-for-xna/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 22:52:40 +0000</pubDate>
		<dc:creator>Sgt. Conker</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[XNA]]></category>
		<category><![CDATA[KiloWatt Animation]]></category>
		<category><![CDATA[Skinning]]></category>

		<guid isPermaLink="false">http://www.sgtconker.com/?p=1247</guid>
		<description><![CDATA[
Jwatte has tweeted news prediction of a new version of his KiloWatt animation library and Pre-release bits are here.
"This is the third-and-a-half release of the KiloWatt Animation library. It is intended as a companion to the kW X-port 3ds Max X file exporter, to be used with Microsoft XNA Game Studio. This release is for version [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="KiloWatt Animation Library" src="http://www.enchantedage.com/sites/default/files/xna-animation.jpg" alt="" width="371" height="220" /><br />
<a href="http://www.enchantedage.com">Jwatte</a> has tweeted <a href="http://twitter.com/jwatte/status/10139628721">news</a> prediction of a new version of his KiloWatt animation library and Pre-release bits are <a href="http://www.enchantedage.com/xna-animation">here</a>.</p>
<p><em>"This is the third-and-a-half release of the KiloWatt Animation library. It is intended as a companion to the kW X-port 3ds Max X file exporter, to be used with Microsoft XNA Game Studio. This release is for version 3.0/3.1 for Windows and Xbox 360. Sorry, no Zune support <img src='http://www.sgtconker.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> "</em></p>
<p>He goes on to explain how this is different to the XNA Skinning sample on the creators website</p>
<p><em>The KiloWatt Animation Library is different from the XNA Skinning sample code in several ways, including:</em></p>
<ul>
<li><em>KiloWatt Animation stores animation keyframes as position, rotation and scale (for a total of 10 floats), instead of the full matrix used by the Animation Components.</em></li>
<li><em>KiloWatt Animation removes unnecessary keyframes (down to a tolerance that you can specify), for a usually quite significant savings in file size.</em></li>
<li><em>KiloWatt Animation does interpolation between animation keyframes using quaternions, which means that slow-motion and varispeed playback will still look smooth.</em></li>
<li><em>KiloWatt Animation supports composition (blending) of animations to generate the final output pose for a given Model.</em></li>
<li><em>KiloWatt Animation replaces the Effect used for your Model only when you tell it to.</em></li>
<li><em>KiloWatt Animation does not make any specific demands of your geometry; you can (and should) use it to animate rigid objects such as windmills, catapults etc. in addition to skinned meshes.</em></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sgtconker.com/2010/03/kilowatt-animation-for-xna/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sgMotion v1.0.0 Released</title>
		<link>http://www.sgtconker.com/2010/02/sgmotion-v1-0-0-released/</link>
		<comments>http://www.sgtconker.com/2010/02/sgmotion-v1-0-0-released/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 14:20:37 +0000</pubDate>
		<dc:creator>Captain boki</dc:creator>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[XNA]]></category>
		<category><![CDATA[Sunburn]]></category>

		<guid isPermaLink="false">http://www.sgtconker.com/2010/02/sgmotion-v1-0-0-released/</guid>
		<description><![CDATA[Tom Looman released his sgMotion library to CodePlex. Says Tom:
sgMotion is an animation library (based on XNAnimation by Bruno Evangelista) and provides full integration with both the Sunburn Engine and the Sunburn Framework.

More at the source.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://coreenginedev.blogspot.com/">Tom Looman</a> released his <a href="http://sgmotion.codeplex.com/">sgMotion library</a> to CodePlex. <a href="http://coreenginedev.blogspot.com/2010/02/sgmotion-v100-released.html">Says Tom</a>:</p>
<blockquote><p>sgMotion is an animation library (based on XNAnimation by Bruno Evangelista) and provides full integration with both the Sunburn Engine and the Sunburn Framework.</p>
</blockquote>
<p>More at the source.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sgtconker.com/2010/02/sgmotion-v1-0-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

