<?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>Pompi Pompi - A Gamers and Developers blog for indie games &#187; Banana Jump Barrel Kick</title>
	<atom:link href="http://www.pompidev.net/category/banana-jump-barrel-kick/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pompidev.net</link>
	<description>A blog about indie game development for both gamers and developers</description>
	<lastBuildDate>Fri, 05 Mar 2010 18:27:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>BJBK 6: Finite State Machine, menus.</title>
		<link>http://www.pompidev.net/2009/11/22/bjbk-6-finite-state-machine-menus/</link>
		<comments>http://www.pompidev.net/2009/11/22/bjbk-6-finite-state-machine-menus/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 12:09:04 +0000</pubDate>
		<dc:creator>ofer</dc:creator>
				<category><![CDATA[Banana Jump Barrel Kick]]></category>

		<guid isPermaLink="false">http://www.pompidev.net/?p=306</guid>
		<description><![CDATA[I have implemented the menu skeleton as I mentioned in the check list. You can download the source code of revision 13 here.
Finite State Machine is a sort of design pattern that can be very useful. I learned it from a book about AI called &#8220;Programming Game AI by Example&#8221;. There is no one way [...]]]></description>
			<content:encoded><![CDATA[<p>I have implemented the menu skeleton as I mentioned in the <a href="http://www.pompidev.net/2009/11/15/bjbk-5-let-the-barrels-roll-revision-11/">check list</a>. You can download the source code of revision 13 <a href="http://www.pompidev.net/downloads/?did=4">here</a>.</p>
<p>Finite State Machine is a sort of design pattern that can be very useful. I learned it from a book about AI called <a href="http://www.gamedev.net/columns/books/bookdetails.asp?productid=434">&#8220;Programming Game AI by Example&#8221;</a>. There is no one way to implement a Finite State Machine(FSM) and the one in the book is in C++, but I will show you how I implemented it in BJBK with C#.<br />
What is a FSM? FSM is a directed graph, in which only one state(or vertex of the graph) is active and the active state can change to other states to which it is connected to with edges. You can think of it as a world map with cities and roads. The active state is the city in which your party or characters are currently at. The party can travel only on the roads connecting the cities in order to travel to another city(changing the active state). The main difference is that in a FSM, some roads can be one way roads.<br />
Let&#8217;s see the code in FiniteStateMachine.cs:</p>
<p><code><br />
    interface State&lt;T&gt;<br />
    {<br />
        void Enter(T e);<br />
        void Execute(T e);<br />
        void Exit(T e);<br />
    }<br />
    class FiniteStateMachine&lt;T&gt;<br />
    {<br />
        public FiniteStateMachine(T e)<br />
        {<br />
            Entity = e;<br />
        }<br />
        public void Update()<br />
        {<br />
            if (CurrentState == null)<br />
                return;<br />
            CurrentState.Execute(Entity);<br />
        }<br />
        public void ChangeState(State&lt;T&gt; s)<br />
        {<br />
            if (CurrentState != null)<br />
                CurrentState.Exit(Entity);<br />
            if (s!=null)<br />
            {<br />
                CurrentState = s;<br />
                CurrentState.Enter (Entity);<br />
            }<br />
        }<br />
        private State&lt;T&gt; CurrentState;<br />
        private T Entity;<br />
    }</code><br />
Let us observe the interface State first. This interface is generic, that means it gets a class type as a parameter. It is also an interface, which mean it lacks implementation. As the name imply, this interface represent the actual state or vertices of the graph. In order to create different states, we only need to implement this interface.<br />
When the characters goes to a new city or the FSM change the active state, the new active state&#8217;s method Enter will be called once. With some class as a parameter. From this point, the Execute method will be called once every frame until the active state will change again. When the active state will change again, the current active state&#8217;s method Exit will be called.<br />
What is the class passed as parameter? The parameter is a class of a generic type, this will allow the states have a common class to use. This class will usually create all the related states in the first place. In BJBK the generic class is Menu and it&#8217;s states are the different menus available. These can be MainMenu, Options, Video, Sound and etc. However, the same FSM could be used for AI or other things.<br />
The class FiniteStateMachine simply implements what I have said about the states. It is generic and points to the generic class that will be passed to every state when their methods are called. Update should be called each frame, or each time you want the FSM to execute the curent active state. ChangeState will change to a new active state.</p>
<p>That&#8217;s it, that is the FSM implementation. However, you might feel something is missing. There is no class or interface to represent the edges of the graph?<br />
The reason is that by calling ChangeState you virtually create the edge. The edges are not &#8220;precalculated&#8221;, but they are rather implied by the calls to ChangeState on run time. The same goes with the graph structure. There is no explicit graph structure. You can create new vertexes at run time and change the graph structure during run time. This is all done programmatically. Although, in the case of the BJBK menu, the graph is static and does not change during run time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pompidev.net/2009/11/22/bjbk-6-finite-state-machine-menus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BJBK 4: Reviewing the code of revision 10(first milestone)</title>
		<link>http://www.pompidev.net/2009/11/14/bjbk-4-reviewing-the-code-of-revision-10first-milestone/</link>
		<comments>http://www.pompidev.net/2009/11/14/bjbk-4-reviewing-the-code-of-revision-10first-milestone/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 12:33:41 +0000</pubDate>
		<dc:creator>ofer</dc:creator>
				<category><![CDATA[Banana Jump Barrel Kick]]></category>

		<guid isPermaLink="false">http://www.pompidev.net/?p=278</guid>
		<description><![CDATA[The source code of revision 10 can be found here. Notice the disclaimer\agreement on the download page.

Files overview
The code has several .cs(C# source code), each one is dealing with another aspects of the game.
Game1.cs is a file that was created by visual C# when I was selecting the Windows Game project. It is the &#8220;game&#8221; file, in which [...]]]></description>
			<content:encoded><![CDATA[<p>The source code of revision 10 can be found <a href="http://www.pompidev.net/downloads/?did=2">here</a>. Notice the disclaimer\agreement on the download page.<br />
<strong><br />
Files overview<br />
</strong>The code has several .cs(C# source code), each one is dealing with another aspects of the game.<br />
Game1.cs is a file that was created by visual C# when I was selecting the Windows Game project. It is the &#8220;game&#8221; file, in which all updates to the game logic and all drawings of the graphics will be called from.<br />
Program.cs contains the main of the program, and it will create and run the game class that was defined in Game1.cs. <br />
Object.cs define objects class. Objects could be anything, but in this case these objects are the ground, the banana, the player and in the future also the barrel. I think we can say these are physical objects, because the base object class contains all the physics calculations. In this game, every physical object contains the physics, the logic update and the drawing call, all in one object. In <a href="http://www.pompipompi.net">Labyrinthica</a>things are not as simple as that, but maybe I should try thinking of doing it as such in bigger projects as well. I am not sure it is easy to do so though. You can try and study the hirarechy of objects inside Object.cs to get a sense of how inheritance can be used in this case.<br />
Camera.cs contains a camera class. A camera in a 2D game is also 2D, the camera points where the center of the screen would be in the virtual 2D world. The camera class also have functionality to tell if an object is visible or not. In this game the camera class also moves to the right in a constant speed.<br />
Section.cs contains a class with a functionality to check if two rectangle physical objects intersect with each other.<br />
Input.cs contain classes to deal with input from the player. I defined an interface called PlayerControl. This interface describe the possible commands for the player to send the game. However, it doesn&#8217;t have any implementation and it doesn&#8217;t limit which input device will be used to send these commands. KeyboardInput implements PlayerControl and allows the player to use the keyboard to send these commands. In the future I could add other input devices, such as an XBOX360 gamepad, to send these commands by simply implementing the PlayerControl interface.<br />
The last file is Level.cs. This file contain classes to manage groups of objects and help create them.</p>
<p><strong>Patterns level design<br />
</strong>Patterns level design is about design decisions regarding a small group of classes that relate to each other. It&#8217;s a lower level than a high level, concept level overview of the game. But it&#8217;s higher than a single function or a single class. These kind of design decisions are useful for almost any project and are not project specific. They may be used for project specific classes, but the concept can be used for other projects as well.<br />
I have already talked about the interface ControlPanel, but it&#8217;s an example of how you separate the concept of a game control from a specific game device that implement the ControlPanel interface.<br />
The classes PlayerObject and PlayerKicker from Objects.cs are related to each other. The player in this game can run, jump or kick. When in kick state, the player actually change it&#8217;s collision rectangle dimensions and change it&#8217;s color. These two classes inherit from a base class that has an update logic and draw virtual functions. For the normal state in which the player run and jump, we could use PlayerObject. For the state of kicking we could use PlayerKicker. But we need an object that contain both states! What I have done to solve this is called delegating. Delegate is when a class with certain virtual methods, is using another class with the same virtual methods. It is as if the class outsource part of it&#8217;s method. This is not an accurate description, but for lack of better description I will use it.<br />
I have made PlayerObject create and keep a reference to a PlayerKicker object. In the update method of PlayerObject, I have set the PlayerKicker position to be the same as the updated PlayerKicker position. In the draw method, if the player is in normal state, I will draw it normally. If the player is in kick state, I will call the draw method of PlayerKicker instead.</p>
<p><strong>Spartan programming<br />
</strong>Spartan programming are several metrics that should be attempted to minimize simultaneously. Minimizing these metrics suppose to help you create a more readable code and make better use of the terms available to name classes, methods and functions. It is supposedly regarding the function level, but it affects the structure of the whole program, in a sense. I didn&#8217;t invest a lot of effort to &#8220;spartanize&#8221; BJBK, but I will give one simple example of how spartan programming might be useful. Take a look at the following method:<br />
<code><br />
virtual public void Update(float t, Camera c)<br />
{<br />
Vector2 a = new Vector2(0, PixelsPerMeter*9.8f);<br />
Velocity = Velocity + a * t;<br />
Position = Position + Velocity * t; // Like n*(n-1)/2<br />
Position.Y = MathHelper.Min(FloorY, Position.Y);<br />
Velocity.Y = (Position.Y==0.0)?MathHelper.Min(0, Velocity.Y):Velocity.Y;<br />
}<br />
</code><br />
In this method you can see variables and parameters such as &#8216;a&#8217;, &#8216;t&#8217; and &#8216;c&#8217;. If you would use these as global variables, it would minimize the amount of names(specifically those 3 letters) you can use in a smaller scope. Since this method is pretty small(one of the spartan metrics) it is also possible to use short names(another spartan metric) for these specific variables and parameters that exist only inside the method&#8217;s scope. Other names such as &#8216;Velocity&#8217; and &#8216;Position&#8217; are longer, perhaps because they are class members and are used in a bigger scope. I have used the &#8216;Term?a:b&#8217; idiom instead of an if. Ifs are basically very bad for readability. In many cases it make sense to use this idiom instead of an if. Notice all the lines of code are at a reasonable length.<br />
There isn&#8217;t a lot more I can tell about this function right now, but I hope you got a feeling of how spartan programming can help.</p>
<p><strong>Movement equation<br />
</strong>As you can see in the previous section, each frame I recalculate the velocity and position of every physical object in the game. The position equals integration of velocity over time, which equals integration of acceleration over time. If <strong><em>t</em></strong> is the time variable, <strong><em>a1</em></strong> is a constant acceleration, <strong><em>v1</em></strong> is a constant velocity and <strong><em>x1</em></strong> is a constant position, then:<br />
<strong><em>a = a1<br />
v = v1 + a1*t<br />
x = x1 + v1*t + a1*t*t/2<br />
</em></strong>We could use the last equation to calculate the position. We could get along with this in BJBK, but if the velocity or acceleration are not constant and do not behave so nicely, then the integration would be more difficult. Instead every frame I make the following calculation:<br />
<strong><em>v = v + a*t<br />
x = x + v*t</em></strong><br />
Notice these are assignments and not equations! But where did the <strong><em>1/2</em></strong>disappear? Lets check if it make sense. Lets say we have <strong><em>n</em></strong> frames of a constant <strong><em>T</em></strong> each frame. Lets say <strong><em>x1=0</em></strong> and <strong><em>v1=0</em></strong>. Then at time <strong><em>n*T</em></strong> the first equation will give us: <strong><em>x = a1*n*n*T*T/2<br />
</em></strong>In the second case, we need to iterate the assignments <strong><em>n</em></strong> times until we get the result at time <strong><em>n*T</em></strong>. <strong><em>v</em></strong> is initialized to <strong><em>v1</em></strong>(0), which means <strong><em>v</em></strong> at frame <strong><em>i</em></strong> out of <strong><em>n</em></strong> will be equal to <strong><em>a1*i*T</em></strong>.<br />
That means <strong><em>x</em></strong> at frame <strong><em>n</em></strong> will be equal to: <strong><em>Sum (i=0 to n) of</em></strong> <strong><em>a1*i*T*T</em></strong>. The result of this sum is actually <strong><em>a1*n*(n-1)*T*T/2</em></strong>.<br />
As you can see, the result is almost the same and we can also have non constant acceleration and velocity if we want to.</p>
<p><strong>Feedback<br />
</strong>What are your thoughts about this code review? Is it too long? Too difficult? Did you like it? Should I separate it into several articles?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pompidev.net/2009/11/14/bjbk-4-reviewing-the-code-of-revision-10first-milestone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BJBK 3: The first milestone</title>
		<link>http://www.pompidev.net/2009/11/05/bjbk-3-the-first-milestone/</link>
		<comments>http://www.pompidev.net/2009/11/05/bjbk-3-the-first-milestone/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 20:58:51 +0000</pubDate>
		<dc:creator>ofer</dc:creator>
				<category><![CDATA[Banana Jump Barrel Kick]]></category>

		<guid isPermaLink="false">http://www.pompidev.net/?p=249</guid>
		<description><![CDATA[Notice: To run the demo you will need the latest DirectX9c from microsoft, .net runtime and XNA runtime 3.1.
Also, be sure to extract the demo&#8217;s zip file.
I have completed a first playable version of Banana Jump, Barrel Kick. You can download it from here, or at the downloads page. The left and right arrow keys [...]]]></description>
			<content:encoded><![CDATA[<p>Notice: To run the demo you will need the latest <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3">DirectX9c</a> from microsoft, <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&amp;displaylang=en">.net runtime</a> and <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=53867a2a-e249-4560-8011-98eb3e799ef2">XNA runtime 3.1</a>.<br />
Also, be sure to extract the demo&#8217;s zip file.</p>
<p>I have completed a first playable version of Banana Jump, Barrel Kick. You can download it from <a href="http://www.pompidev.net/downloads/?did=1">here</a>, or at the downloads page. The left and right arrow keys are used to move left and right. The up arrow key is used to jump. The space is suppose to kick, but there are no barrels in this demo so it&#8217;s useless. Press Esc to exit. You need to jump above several bananas, and when you get past all of the bananas you get a reward!<br />
The graphics are very simple right now, and I didn&#8217;t make much gameplay tweeking, but it&#8217;s a start. I think explaining the code I wrote will take longer than what it took to code. However, I think I will post about the things that seem most important. I will also release the source code of this version soon enough.<br />
A small lesson I have learnt is that you can type a log message in a text area each time you commit something in TortoiseSVN. It was right there in front of me, but I didn&#8217;t really notice it. After all, I don&#8217;t commit that often.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-252" title="Screenshot2" src="http://www.pompidev.net/wp-content/uploads/2009/11/Screenshot2.jpg" alt="Screenshot2" width="480" height="360" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pompidev.net/2009/11/05/bjbk-3-the-first-milestone/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BJBK 2, Comment (TortoiseSVN, Version control)</title>
		<link>http://www.pompidev.net/2009/10/30/bjbk-2-comment-tortoisesvn-version-control/</link>
		<comments>http://www.pompidev.net/2009/10/30/bjbk-2-comment-tortoisesvn-version-control/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 14:26:32 +0000</pubDate>
		<dc:creator>ofer</dc:creator>
				<category><![CDATA[Banana Jump Barrel Kick]]></category>

		<guid isPermaLink="false">http://www.pompidev.net/?p=236</guid>
		<description><![CDATA[In &#8220;Banana jump, Barrel Kick(BJBK) 2: TortoiseSVN, Version control&#8221; I have mentioned that not all the files should be committed from the XNA game project. I didn&#8217;t mention that the content folder and especially the .contentproj file should be committed as well. I didn&#8217;t commit it and the Content has become Unavailable for my project. I [...]]]></description>
			<content:encoded><![CDATA[<p>In &#8220;Banana jump, Barrel Kick(BJBK) 2: TortoiseSVN, Version control&#8221; I have mentioned that not all the files should be committed from the XNA game project. I didn&#8217;t mention that the content folder and especially the .contentproj file should be committed as well. I didn&#8217;t commit it and the Content has become Unavailable for my project. I fixed this by creating a new content project and tinkering with the .csproj file. But you could avoid this if you try rebuilding your project and see if the Content is available after you committed and checked out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pompidev.net/2009/10/30/bjbk-2-comment-tortoisesvn-version-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Banana jump, Barrel Kick(BJBK) 2: TortoiseSVN, Version control.</title>
		<link>http://www.pompidev.net/2009/10/29/banana-jump-barrel-kickbjbk-2-tortoisesvn-version-control/</link>
		<comments>http://www.pompidev.net/2009/10/29/banana-jump-barrel-kickbjbk-2-tortoisesvn-version-control/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 17:56:49 +0000</pubDate>
		<dc:creator>ofer</dc:creator>
				<category><![CDATA[Banana Jump Barrel Kick]]></category>

		<guid isPermaLink="false">http://www.pompidev.net/?p=220</guid>
		<description><![CDATA[TortoiseSVN is a free client for Subversion version control system. In respect to the lone programmer, version control saves a version of your source code or project each time you commit your project. You then can checkout or get a local copy of any version of your project you committed in the past. I will be using TortoiseSVN for [...]]]></description>
			<content:encoded><![CDATA[<p>TortoiseSVN is a free client for Subversion version control system. In respect to the lone programmer, version control saves a version of your source code or project each time you commit your project. You then can checkout or get a local copy of any version of your project you committed in the past. I will be using TortoiseSVN for BJBK.<br />
The first place to go is the <a href="http://tortoisesvn.net/">TortoiseSVN homepage</a>. There you can find the <a href="http://tortoisesvn.net/downloads">Download Page</a> and download TortoiseSVN. I downloaded the 64bit version.<br />
Installation is pretty straight forward. After you install TortoiseSVN, I suggest reading the Help from the beginning. That is what I did.<br />
A point of confusion, at some point the Help will tell you about using commands from the command prompt in windows. However, you will need to install the Subversion Command Line client in order for this to work. The download can be found <a href="http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91">here</a>.<br />
The steps I took to start using TortoiseSVN were to read the Help up to and including &#8220;The Repository&#8221;. There you will learn how to create a repository. I used the import command to create the folders structure. You can read the daily user guide to better understand how to use TortoiseSVN. But I think for starting out you only need to know how to Checkout and how to Commit.<br />
Checkout is the process of creating a local copy from the repository. You need to create a new empty folder in windows explorer, then right click that folder and select checkout. Then you need to provide the repository address. If you already did the tutorials of a 2D game in XNA, as I recommended in BJBK1, you would have a C# project inside a specific folder. You can copy that C# project inside your local copy of the repository, and then right click the local copy folder and select Commit. You will then be asked which files you wish to commit. You should select the minimum files in your XNA game project required to build and run your game. I believe these should be all the .cs, .csproj, your artwork and resources files, the Content folder, and the solution file (.sln). The reason you shouldn&#8217;t commit the temporary build files, is because there might be a problem when someone else work with you on the same project. This might not be the case in this project, but you should get used to working like that. I must tell that I don&#8217;t have a lot of experience working like this, and I am telling you what I was told by others. But it make sense to me.<br />
The final step would be to create a new folder in a different place in order to checkout another local copy of your project. This time with the XNA project you committed. You should do this to check you can build and run what you have committed.</p>
<p>That&#8217;s it, I hope next time we can start seeing some code. But before that I might need to research what type of license or agreement to choose for the source code I am going to show.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pompidev.net/2009/10/29/banana-jump-barrel-kickbjbk-2-tortoisesvn-version-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Banana Jump, Barrel Kick 1: Introduction.</title>
		<link>http://www.pompidev.net/2009/10/16/banana-jump-barrel-kick-1-introduction/</link>
		<comments>http://www.pompidev.net/2009/10/16/banana-jump-barrel-kick-1-introduction/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 21:38:43 +0000</pubDate>
		<dc:creator>ofer</dc:creator>
				<category><![CDATA[Banana Jump Barrel Kick]]></category>

		<guid isPermaLink="false">http://www.pompidev.net/?p=158</guid>
		<description><![CDATA[Banana Jump, Barrel Kick is a new small game I intend to create in C# and XNA.
I wish to write several blog posts that will follow my development of this game. I am learning a lot of new things here, and I don&#8217;t plan much up front. This means this might also fail, but if I [...]]]></description>
			<content:encoded><![CDATA[<p>Banana Jump, Barrel Kick is a new small game I intend to create in C# and XNA.<br />
I wish to write several blog posts that will follow my development of this game. I am learning a lot of new things here, and I don&#8217;t plan much up front. This means this might also fail, but if I won&#8217;t try, it has no chance of success either. I don&#8217;t know how often I will post about this project, and in what portions, but I hope that eventually there will be a complete game with source code people could learn from.<br />
The game isn&#8217;t going to be too complicated. You can watch the header of <a href="http://www.pompidev.net">PompiDev</a> blog to see a sketch of this game. Or better yet, here is the image itself:</p>
<div id="attachment_161" class="wp-caption aligncenter" style="width: 364px"><img class="size-full wp-image-161" title="GameplayDoodle2" src="http://www.pompidev.net/wp-content/uploads/2009/10/GameplayDoodle2.jpg" alt="Banana Jump, Barrel Kick" width="354" height="168" /><p class="wp-caption-text">Banana Jump, Barrel Kick</p></div>
<p>You will play a character running to the right that has to jump over bananas and kick rolling barrels. Thats it.<br />
Take in account that I am developing on a windows vista, home premium 64 bit OS.</p>
<p>The first thing to do, is to subscribe to <a href="http://creators.xna.com">XNA creators club</a>. Then you would need to go to Resources-&gt;Download, download and install Visual C# 2008 Express. After that return to Resources-&gt;Download, then download and install XNA Game Studio 3.1. I suggest to do all the 2D video tutorials under Education-&gt;Getting started, they are called &#8220;Beginner&#8217;s Guide to 2D Games&#8221;.<br />
If it takes a while before I post again about this, you can try other tutorials and learn on your own, no need to wait for me. I will try to create code which &#8220;looks pretty&#8221; and hopefully has better design and practices than code of someone with little experience. I will also try to write about the lessons I will learn from coding this game.<br />
Good luck to us all. <img src='http://www.pompidev.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.pompidev.net/2009/10/16/banana-jump-barrel-kick-1-introduction/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
