<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF
	xmlns="http://purl.org/rss/1.0/"
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel rdf:about="http://feeds.garagegames.com/rss/blogs/developer/1622/">
		<title>Blog for Paul Dana at GarageGames.com</title>
		<description>Blog feeds for Gamers and Developers in the GarageGames community.</description>
		<link>http://www.garagegames.com/</link>
		<image rdf:resource="http://www.garagegames.com/images/GarageGames_logo_small_w.gif" />
		<dc:date>2008-10-13T01:11:04+00:00</dc:date>
		<items>
			<rdf:Seq>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/1622/14945"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/1622/14832"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/1622/14714"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/1622/14409"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/1622/12527"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/1622/11479"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/1622/11477"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/1622/8779"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/1622/8499"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/1622/8426"/>
			</rdf:Seq>
		</items>
	</channel>
	<item rdf:about="http://www.garagegames.com/blogs/1622/14945">
		<dc:format>text/html</dc:format>
		<dc:date>2008-06-23T18:06:44+00:00</dc:date>
		<dc:creator>Paul Dana</dc:creator>
		<title>372 Free Textures - what a gem!</title>
		<link>http://www.garagegames.com/blogs/1622/14945</link>
		<description>&lt;a href='http://garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=14868' target=_blank&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/gems/banner.jpg'  alt=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;The &lt;a href='http://www.plasticgames.com' target=_blank&gt;Plastic Games&lt;/a&gt; effort to release one useful thing per work day to the community, &lt;a href='http://garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=14868' target=_blank&gt;Gem-A-Day&lt;/a&gt;, continues. We have been at it for two weeks, delivering and explaining these useful little development nuggets in the form of C++ and script classes and a few useful 3D shapes as well.&lt;br&gt;&lt;br&gt;Kirk Albert's has decided to shame us all by releasing 372 free textures, plus some examples of use, to the community. He wanted all this stuff to be a single gem but I wouldn't let him and made him stretch it out. All the textures can be grabbed from the first of his gems so check out &lt;a href='http://garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=14943' target=_blank&gt;Gem #11&lt;/a&gt; from Kirk.&lt;br&gt;&lt;br&gt;I have no idea how long we can keep this up. We are finishing up some contract jobs and looking for more. We are also hoping to release a code pack / content pack for sale on Garage Games. &lt;br&gt;&lt;br&gt;I better get back to work. Have fun with the gems folks.</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/1622/14832">
		<dc:format>text/html</dc:format>
		<dc:date>2008-06-05T02:27:15+00:00</dc:date>
		<dc:creator>Paul Dana</dc:creator>
		<title>Zombies and Gem A Day</title>
		<link>http://www.garagegames.com/blogs/1622/14832</link>
		<description>&lt;b&gt;Zombies!!!!!&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/new_right.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;I realize I forgot to put the word &lt;b&gt;Zombie&lt;/b&gt; into the title of my &lt;a href='http://www.garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=14714'&gt;previous blog about our Zombie COOP game&lt;/a&gt;. Even though &lt;i&gt;this&lt;/i&gt; blog is about our Gem A Day project, I figured I would put the word &lt;b&gt;Zombie&lt;/b&gt; into the title of this blog and provide as many &lt;a href='http://www.garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=14714'&gt;redundant links&lt;/a&gt; and gratuitous images as I figure you could stomach:&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/blood.gif'  alt=&quot;&quot;&gt;&lt;br&gt;That's gotta hurt.&lt;br&gt;&lt;br&gt;&lt;b&gt;Gem A Day&lt;/b&gt;&lt;br&gt;&lt;br&gt;Plastic Games is a small independent games development company. We make a living generally doing contract work and generally using Torque. We have been doing this for several years now and we have a policy of code re-use that we call making &amp;quot;gems&amp;quot;. A gem is a self contained bit of code and/or art, often along with some useful conventions, that solves a particular problem in a way that makes it easy to use this solution again in the future. The name comes from the famous Graphics Gems and Game Programming Gems series.&lt;br&gt;&lt;br&gt;Over the years we have made quite a few useful Torque Gems, and it has saved us a lot of time and effort. The more we use our gems the more we realize it was worth making them. In an effort to give back to the community, over the next few weeks we intend on releasing a Gem A Day.&lt;br&gt;&lt;br&gt;&lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=3213'&gt;Anthony Rosenbaum&lt;/a&gt; and I will begin posting one resource each work day, starting Monday, June 9th. Each resource is one of our Plastic Gems. &lt;br&gt;&lt;br&gt;Plastic Gem #1: Placeable shapes will explain how to use Torque to create your own custom shapes with their own animated behavior using the StaticShape class. It provides a cool .dts shape of a grandfather clock that is used in the first three gems. &lt;br&gt;&lt;br&gt;Plastic Gem #2: Animation Threads provides a heap of useful improvements to the animation support and builds upon what the grandfather clock can do. &lt;br&gt;&lt;br&gt;We hope you find these resources useful as it has sure been a pain preparing them. We have the first few ready and will be busily working on more so that we can keep up the Gem A Day effort for at least two weeks.&lt;br&gt;&lt;br&gt;&lt;a href='http://garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=14868' target=_blank&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/gems/gem_day_small.jpg'  alt=&quot;&quot;&gt;&lt;b...&lt;/a&gt;&lt;br&gt;&lt;br&gt;The gems are going up. For a list of gems, visit the &lt;a href='http://garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=14868' target=_blank&gt;Gem A Day&lt;/a&gt; page.</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/1622/14714">
		<dc:format>text/html</dc:format>
		<dc:date>2008-05-09T14:47:57+00:00</dc:date>
		<dc:creator>Paul Dana</dc:creator>
		<title>Next we make it look good...</title>
		<link>http://www.garagegames.com/blogs/1622/14714</link>
		<description>&lt;b&gt;Next we make it look good...&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/zombie_model_comp.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;Plastic Games has been working on a co-op Zombie game prototype.&lt;br&gt;&lt;br&gt;You can play the prototype. Download the zip &lt;a href='http://www.plasticgames.com/research/zombie/pgzombie.zip' target=_blank&gt; here&lt;/a&gt;. Get your friends to download and play together!&lt;br&gt;&lt;br&gt;You can watch a video of game play &lt;a href='http://www.youtube.com/watch?v=2Iz7q3mI38g' target=_blank&gt; here&lt;/a&gt;.&lt;br&gt;&lt;object width=&quot;640&quot; height=&quot;480&quot;&gt;
	&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/2Iz7q3mI38g&quot;&gt;&lt;/param&gt;
	&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;
	&lt;embed src=&quot;http://www.youtube.com/v/2Iz7q3mI38g&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; width=&quot;640&quot; height=&quot;480&quot;&gt;&lt;/embed&gt;
&lt;/object&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Keep in mind this is a gray block prototype. It is like a rough draft of one chapter of a book. It shows enough game play to see if people would want more. It does not represent the game play of a complete game. The question it asks is: is it fun to kill zombies like this with your friends?&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;1. Make it Play Good...&lt;/b&gt;&lt;br&gt;&lt;br&gt;Clearly I have failed at my resolution to blog more often, as a result this blog is somewhat lengthy. As I mentioned in my last blog, Plastic Games has been spending time between contract jobs prototyping a co-op Zombie killing game. We &lt;a href='http://en.wikipedia.org/wiki/The_House_of_the_Dead_(arcade_game)' target=_blank&gt;realize&lt;/a&gt; this is &lt;a href='http://en.wikipedia.org/wiki/Left_4_Dead' target=_blank&gt;not&lt;/a&gt; an &lt;a href='http://ww2.capcom.com/deadrising' target=_blank&gt;original&lt;/a&gt; &lt;a href='http://www.garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=14700'&gt;premise&lt;/a&gt;. We find our prototype to be fun and we think you might too. We encourage you to checkout the game play in the video link above and if it looks fun download and play it. It is the most fun in co-op mode and we have a server running. Tell some friends about it and play it together.&lt;br&gt;&lt;br&gt;When I last blogged I mentioned that we had just &amp;quot;found the fun&amp;quot; in the game and were excited to show it to people. Prior to this we were discouraged because the game wasn't very compelling in single-player or co-op. We had improved the performance a bit and had fixed some bugs and the single-player experience got a bit better and so we decided to try to play it on co-op mode and see how it was. It was fun! Granted there were still issues but the fun had at last been found. Turns out we were pretty close to the fun already but performance issues and bugs were hiding it.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/~kirk/blog/zombie/pg_zombie01.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;The problem remained that the performance was still crap. We had improved it enough to see the game better but it was still crap, even in single-player without any networking issues. In co-op it was even worse. The only reason we were having fun playing co-op is we knew how all the effects were *supposed* to look (from single-player) even if more than half of it was not showing up in a co-op game. Animations would be skipped or come late, zombies would just slide or warp at you with no animations, blood particles would not show up, the frame rate was terrible especially with lots of zombies on screen.&lt;br&gt;&lt;br&gt;The solution was to just focus on performance until the feedback we already had in place could be seen more clearly. Later we could work on improving the feedback as well.&lt;br&gt;&lt;br&gt;&lt;b&gt;2. Make it Run Good...&lt;/b&gt;&lt;br&gt;&lt;br&gt;The art assets we used for the prototype either came from content packs or were interiors that we already had from previous projects or had developed as part of our own testing. Much of it was not optimized in any way. Similarly much of the code we put together for the prototype was script code that got the job done quickly but wasn't very fast code. &lt;br&gt;&lt;br&gt;So clearly we had some ideas where to start in improving things but, as always with optimization, the place to start is with &lt;b&gt;measurement&lt;/b&gt;. Naturally we need to be able to quantify where the performance was suffering before we would know which parts of the code need improving or even to know if any one code change actually helps. &lt;br&gt;&lt;br&gt;&lt;b&gt;Gemming&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/plastic_menu.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;We did a series of tests with test maps to determine what affected frame rates the most. At Plastic Games we have a philosophy of &amp;quot;Gemming&amp;quot; problems. This means that when we go to solve a problem we try make some part of the solution reusable; a little &amp;quot;gem&amp;quot; of code or whatever that will help us in the future. In this case this meant making script code for *duplicating* objects in a mission file in a regular grid of 3x3 or 5x5 or 7x7. We used this as a way of constructing our test maps procedurally from simple inputs. It also meant creating some code for hiding or showing certain classes of objects so we could do FPS tests without having to actually laboriously go through and hide or show large number of objects. We also made a handy method of temporarily moving the visibility distance way out. It is reset back to what it was automatically before you either SAVE or LIGHT the scene. This helps in the editor to just see what your editing without accidentally changing your visibility settings.&lt;br&gt;&lt;br&gt;&lt;b&gt;Debug Render Modes&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/interior_render_modes.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;Now that we had confirmed where performance needing improving we prepared for that work. We knew we would need to create some more custom INTERIOR assets for this prototype with proper LOD and such and we decided to use that as an opportunity to create some proper grey-blocking art assets. As part of the need for measurement we took advantage of the Interior Debug Render modes Torque has always had. There is a resource out there for accessing these modes with a dialog so we merged that resource in.&lt;br&gt;&lt;br&gt;The Show Detail Level render mode is a great help. It color codes the different Interior LODs as: White, Blue, Green, Red, Yellow...with white being the closest, etc. The colors changing in game as you walk around tell you the LODs are changing. &lt;br&gt;&lt;br&gt;&lt;b&gt;LOD Profile&lt;/b&gt;&lt;br&gt;&lt;br&gt;Another opportunity for Gemming came up when we considered how much of  pain it was to update the values that controlled the LOD. We would have to go back to the .map file and update and create a new .dif file, etc. To ease this pain I created the LODProfile:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class='codeblock'&gt;&lt;pre&gt;datablock PlasticLODProfile(GB_LGTEST_LODPROFILE)&lt;br&gt;{&lt;br&gt;   geometryFile = &amp;quot;~/data/interiors/greyblock/gb_lgtest.dif&amp;quot;;&lt;br&gt;   detailValue0 = &amp;quot;400&amp;quot;;&lt;br&gt;   detailValue1 = &amp;quot;128&amp;quot;;&lt;br&gt;   detailValue2 = &amp;quot;60&amp;quot;;&lt;br&gt;   detailValue3 = &amp;quot;12&amp;quot;;&lt;br&gt;};&lt;br&gt;&lt;br&gt;datablock PlasticLODProfile(TEMP_LRG01_LODPROFILE)&lt;br&gt;{&lt;br&gt;   geometryFile = &amp;quot;~/data/interiors/greyblock/temp_lrg01.dif&amp;quot;;&lt;br&gt;   detailValue0 = &amp;quot;400&amp;quot;;&lt;br&gt;   detailValue1 = &amp;quot;150&amp;quot;;&lt;br&gt;   detailValue2 = &amp;quot;60&amp;quot;;&lt;br&gt;   detailValue3 = &amp;quot;12&amp;quot;;&lt;br&gt;};&lt;br&gt;&lt;br&gt;// etc...&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;An LODProfile is used to override the LOD values stored in the .dif file. To tweak the values that control LOD changes we only have to update this datablock, not re-create the .dif file.&lt;br&gt;&lt;br&gt;&lt;b&gt;Tweaker&lt;/b&gt;&lt;br&gt;&lt;br&gt;Speaking of tweaking...previous Gemification here at Plastic Games had already given us the Tweaking system. Explaining the origins of this tool we created would take too long so I will just describe what it does. It is a tool to help in the tweaking of game parameters. It helps the programmer expose whatever parts of the script he wants the game designers and testers to be able to tweak. The game designers and testers can user the Tweaker GUI to make and test changes the result is written back out to the scripts. This is very handy. &lt;br&gt;&lt;br&gt;The way it works for the programmer is also very simple: it uses commands embedded in scripts to indicate which things should be tweakable. For example the above datablocks actually look like this so they can expose some values to the Tweaker system:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class='codeblock'&gt;&lt;pre&gt;datablock PlasticLODProfile(GB_LGTEST_LODPROFILE)&lt;br&gt;{&lt;br&gt;   geometryFile = &amp;quot;~/data/interiors/greyblock/gb_lgtest.dif&amp;quot;;&lt;br&gt;   //P[ GrayblockLODProfiles&lt;br&gt;   //-----------&lt;br&gt;   detailValue0 = &amp;quot;400&amp;quot;;&lt;br&gt;   detailValue1 = &amp;quot;128&amp;quot;;&lt;br&gt;   detailValue2 = &amp;quot;60&amp;quot;;&lt;br&gt;   detailValue3 = &amp;quot;12&amp;quot;;&lt;br&gt;   //P]&lt;br&gt;};&lt;br&gt;&lt;br&gt;datablock PlasticLODProfile(TEMP_LRG01_LODPROFILE)&lt;br&gt;{&lt;br&gt;   geometryFile = &amp;quot;~/data/interiors/greyblock/temp_lrg01.dif&amp;quot;;&lt;br&gt;   //P[ GrayblockLODProfiles&lt;br&gt;   //-----------&lt;br&gt;   detailValue0 = &amp;quot;400&amp;quot;;&lt;br&gt;   detailValue1 = &amp;quot;150&amp;quot;;&lt;br&gt;   detailValue2 = &amp;quot;60&amp;quot;;&lt;br&gt;   detailValue3 = &amp;quot;12&amp;quot;;&lt;br&gt;   //P]&lt;br&gt;};&lt;br&gt;&lt;br&gt;// etc...&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;At runtime, when the game designer or game tester calls up the tweak panel the game scripts are parsed and then a panel like this is displayed:&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/tweaker.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;Now I can play around with the LOD numbers to get the result I want. Here is an example that shows the use of the Torque Show Detail Level Interior render mode and the tweak system. Remember that WHITE means the LOD zero the most high detailed, then BLUE, then GREEN. In this example there are only three levels of detail. Notice how the scene changes as we tweak the LOD numbers:&lt;br&gt;&lt;br&gt;&lt;b&gt;TEMP_LRG01_LODPROFILE.detailValue1 = 150&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/lodprofile_150.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;TEMP_LRG01_LODPROFILE.detailValue1 = 200&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/lodprofile_200.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;TEMP_LRG01_LODPROFILE.detailValue1 = 290&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/lodprofile_290.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;DTS LOD Render Mode&lt;/b&gt;&lt;br&gt;&lt;br&gt;DTS Shape objects (like the player and trees and fences) also have LOD settings. &lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/dts_lod_normal.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;They are not such a pain to setup as Interiors are and there is ShowTool Pro to view the settings. However it can still sometimes be hard to relate distances as you see them in ShowTool and in-game so I created a debug render mode for DTS shapes that is similar to the Interior Show Detail Level render mode and using the same color code: White, Blue, Green, Red, Yellow, etc:&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/dts_lod_colors.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;Using these tools and our test maps we were able to determine appropriate budgets for shapes and interiors and appropriate distances for LOD changes.&lt;br&gt;&lt;br&gt;&lt;b&gt;Networking&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/~kirk/blog/zombie/pg_zombie09.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;So the improvements to the frame rate helped but were not enough as the networking needed improvements as well. You can see the above image from my last blog post. That screenshot was taken in co-op mode and you can't even see any blood at all from that bat impact. Not good.&lt;br&gt;&lt;br&gt;The problem is how the blood particles are implemented. We had updated the Projectile class to allow a different explosion when a projectile hits a player. This explosion we setup to be a blood particle explosion. This is how the projectile blood was handled. For the bat and zombie scratch we created a blood explosion and set it going.&lt;br&gt;&lt;br&gt;Ok you ask...so what's wrong with that implementation? Well the biggest problem is that it ends up sending information from the server to the client that, as such, the client should already know. The projectile or a bat swing hit the player on  the server. The server sends a damage update to the client. But then also the projectile explodes (or the bat scripts create a blood explosion) and that info is sent to the client. By the time that info is received enough time has gone by that the explosion is actually over with and you never see it.&lt;br&gt;&lt;br&gt;&lt;b&gt;We can do better&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/blood.gif'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;What I did was extend the damage code to include information needed to have the client create all the damage FX itself when the damage was received. Turns out there is already a &amp;quot;damage vector&amp;quot; showing what direction damage is coming from (that is not hooked up anywhere in the scripts that I could see) I added a damage &amp;quot;position&amp;quot; and a 32 bits to control the &amp;quot;type&amp;quot; of blood. I added a new datablock type, DamageBloodData to control things like how many particles should spawn for how much damage, etc. Here is an example of how that looks:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class='codeblock'&gt;&lt;pre&gt;datablock DamageBloodData(bloodSpray)&lt;br&gt;{&lt;br&gt;   // Bit 8 is blood spray in direction of damage...&lt;br&gt;   bloodType = 8;            // if any of these bits match the incoming damageFXType then this effect applies&lt;br&gt;&lt;br&gt;   particleEmitter = &amp;quot;bloodSprayEmitter&amp;quot;; // particle emitter to use for this blood effect...&lt;br&gt;   normalFromDamageDir = 1;  // if true then blood FX normal set from damageDir and following flags apply, otherwise blood FX normal set to (0,0,1)&lt;br&gt;   normalCrossZ = 0;         // if true then normal is crossed with (0,0,1) before inversion or tilting up (only used if normalFromDamageDir=1)&lt;br&gt;   normalInverse = 0;        // if true then normal is negated after crossing but before any tilting (only used if normalFromDamageDir=1)&lt;br&gt;&lt;br&gt;   //P[ bloodSpray&lt;br&gt;   //-----------------&lt;br&gt;   normalTiltUp = &amp;quot;1&amp;quot;;         // if true then normal is tilted UP by approx 45 degrees from horizontal after any crossing or negating (only used if normalFromDamageDir=1)&lt;br&gt;   //-----------------&lt;br&gt;   deathMinDamage = &amp;quot;100.0&amp;quot;;  // min damage of a deathly blow for purposes of damage FX&lt;br&gt;   //-----------------&lt;br&gt;   minDamage = &amp;quot;1.0&amp;quot;;           // damage below this does not cause this effect&lt;br&gt;   maxDamage = &amp;quot;100.0&amp;quot;;           // damage above this causes max particles&lt;br&gt;   minParticles = &amp;quot;15&amp;quot;;          // particles at min damage &amp;amp; above&lt;br&gt;   maxParticles = &amp;quot;50&amp;quot;;          // 0=get count from emitter lifetime, else particles at max damage...&lt;br&gt;   minParticleVariance = &amp;quot;2&amp;quot;;    // random variance at min damage&lt;br&gt;   maxParticleVariance = &amp;quot;10&amp;quot;;   // random variance at max damage&lt;br&gt;   //-----------------&lt;br&gt;   posZOffset = &amp;quot;0.0&amp;quot;;         // 0 = no change, larger values raise blood emitter UP&lt;br&gt;   startRadius = &amp;quot;0.01&amp;quot;;      // radius for random start position of blood particles...&lt;br&gt;   //P]&lt;br&gt;};&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;You will notice the tweak codes again. Note that any comments that are provided near tweakable parameters are used to implement tool tips for that parameter:&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/blood_spray_tweaks.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;This system allows us to define different particle effects for different parts of damage and then specify in the projectile class (or any damage scripts) what sort of damage each projectile does.&lt;br&gt;&lt;br&gt;In the game we added five types of blood emitters: Fountain, Rebound, Swipe, Spray and Stream. Each type has its own DamageBloodData datablock. The one above is for Spray. As you can see this datablock references its own ParticleEmitterData (which references its own ParticleData). Spray is the blood that shoots out the back of a zombie when you shoot it. Fountain is the fountain of blood you always see. Swipe is to-the-side splash of blood used only for the bat. &lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/blood08.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;This system worked well and now blood particles were showing up every time, even in a co-op game. We were able to get rid of the explosions completely which also reduced network traffic.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/blood09.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;This helped a lot with the feedback. We also did a similar thing for the HUD elements. They were originally implemented in script and were not very efficient. We implemented C++ code to transmit the information that used to be in scripts such as the type and amount of ammo. This made the HUD more responsive and reduced networking even further.&lt;br&gt;&lt;br&gt;&lt;b&gt;Where's the Mess?&lt;/b&gt;&lt;br&gt;&lt;br&gt;In fact the blood was working so well it made another problem. The ground looked too clean for such a blood fest! We added blood DECALS to solve this. We were concerned about performance adding ray casts to each particle that were not there before, so we made only &lt;b&gt;some&lt;/b&gt; particles actually check for collision and leave a decal behind. We ended with one out of five particles leaving a decal.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/blooddecals01.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;3. Make it Look Good...&lt;/b&gt;&lt;br&gt;&lt;br&gt;OK so that concludes the story of how we got from there to here. In fact, I have left out an amazing number of things I did not have the patience to get into, from changing game goal to a series of checkpoints,  to the optimizations we tried that &lt;i&gt;didn't&lt;/i&gt; help, and the subtle features we added to particles to make them show up better at far distances. Those things and a better description of the Tweaker system will have to wait for another blog.&lt;br&gt;&lt;br&gt;The question for this zombie game, of course, is...what next?  Well...next we make it look better! &lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/research/zombie/images/new_right.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;This is, after all, just a proof of concept with stand-in art and animations. None of the experience is as rich or as deep as we would like and the quality of the art is nowhere near where we want it. We have ported this code base to TGEA technology and we are exploring making this thing look better. I will try to blog more often and keep everyone up to date. (Don't hold your breath). In the meanwhile go download the game and play. The link is at the top of this blog.&lt;br&gt;&lt;br&gt;&lt;b&gt;That's all?&lt;/b&gt;&lt;br&gt;&lt;br&gt;You may ask...wait a second. Where is the back story? What about putting this fighting in a larger context with more long term rewards? All these are good questions but we feel the heart of a good fighting game is good fighting. We have a hundred bajillion back story ideas and some really great ideas for how to build the larger game around the fighting. But who cares about our ideas. We want to hear &lt;i&gt;your&lt;/i&gt; ideas. Go play the game and tell us what &lt;i&gt;you&lt;/i&gt; want out of a zombie killing game.&lt;br&gt;&lt;br&gt;Also if we don't make it look good then nobody will bother giving it a second glance.&lt;br&gt;&lt;br&gt;OK, that's all I have for now. I am starting up a small contract now so I am not sure when I will blog on the zombie prototype again. My next blog will probably be about Gemming and the Plastic Gems we have built.&lt;br&gt;&lt;br&gt;Now go play the game. Preferably with your friends.</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/1622/14409">
		<dc:format>text/html</dc:format>
		<dc:date>2008-03-09T01:10:28+00:00</dc:date>
		<dc:creator>Paul Dana</dc:creator>
		<title>Long Time Coming...</title>
		<link>http://www.garagegames.com/blogs/1622/14409</link>
		<description>&lt;img src='http://www.plasticgames.com/~kirk/blog/pgbiz/pglogo_horizontal_mask.png'  alt=&quot;&quot;&gt; &lt;br&gt;&lt;br&gt;OK, clearly my resolution to blog more in 2007 was a bust.&lt;br&gt;&lt;br&gt;I looked back and I blogged exactly once: Mar 12 2007...almost a year ago. Whoops.&lt;br&gt;&lt;br&gt;The year of 2007 flew by like a movie about someone else's life. When I think back to summarize what the boys from Plastic Games and I have been up to it seems all exciting and fun, and I suppose it was. At the time it seemed like a lot of work.&lt;br&gt;&lt;br&gt;At the beginning of last year we were just installing our first attraction at a major theme park in Orlando, FLA and we have now installed our second. Both projects went very well. The client was very happy with the results (we made their &amp;quot;preferred vendor&amp;quot; list). Nothing could have been more satisfying that playing those very games with my children during February vacation and watching hundreds of people flow through the room and play our games and just have a great time with their families too. Both projects also show the incredible power of the Torque game engine and technologies from Garage Games in particular. I am continually amazed at what a skilled team can do with Torque.&lt;br&gt;&lt;br&gt;In between those two game contracts we also worked quite a bit with Eric Preisz of C2C Simulations and have done some other game contract work as well to keep busy and keep bread on the table.&lt;br&gt;&lt;br&gt;I attended IGC 2007 which was awesome and got to hear a lot about Instant Action from Garage Games before they announced it to the wider world. That was a great trip. I should have stayed longer and I should have blogged. I did not talk much business with anyone because I am quite frankly a dunder head, but I did catch up with a bunch of people and got to check out what GG was up to,  and got to play some amateur rock and roll bass at the Indie-Jam. Booya! :-)&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/~anthony/screenshot02.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;When we have downtime from contracts we have been prototyping game ideas. If the prototype seems to have promise we &amp;quot;finish&amp;quot; it enough that we can get some feedback on it from anyone we can encourage to help us play test. We are calling the result a &amp;quot;proof of concept&amp;quot; as it lets us see if a wider audience views the prototype the same way we do and to just collect more opinions on it.&lt;br&gt;&lt;br&gt;Anthony Rosenbaum and I are the programmers for Plastic Games. He recently blogged on the first proof of concept we have ready for people to give opinions on. It is a kids games prototype called &amp;quot;Bixby and the Isle of Charms&amp;quot;. It is about a kid named Bixby who finds treasures and adventure digging in the sand at the beach. If you want to check that out you can follow this link here:  &lt;a href='http://www.plasticgames.com/~anthony/bixbyioc_poc_01.zip' target=_blank&gt;www.plasticgames.com/~anthony/bixbyioc_poc_01.zip&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/~kirk/blog/zombie/pg_zombie01.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;We are working on another proof of concept for a Coop Zombie Killling game. While the final game would have more rewarding gameplay objectives, this first version is simply &amp;quot;Kill this many zombies in 20 minutes&amp;quot;. The reason is that, at heart, it's a game about killing zombies and so our focus for a while will be just making killing zombies with your friends more fun. We are not quite ready with it yet so I can't give a link, instead you will have to be satisfied with just another image.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/~kirk/blog/zombie/pg_zombie09.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;Look here for the link to the Zombie Killing Game in a week or so.</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/1622/12527">
		<dc:format>text/html</dc:format>
		<dc:date>2007-03-12T17:53:39+00:00</dc:date>
		<dc:creator>Paul Dana</dc:creator>
		<title>Giving Presentation to Middle School Math Club</title>
		<link>http://www.garagegames.com/blogs/1622/12527</link>
		<description>I am giving a presentation today to the Math Counts club at my daughter's middle school. The subject is how I use math in my job as a game developer. I am posting this blog to make an easy location for the students to get to some web pages I wish to show them.&lt;br&gt;&lt;br&gt;&lt;a href='http://phet.colorado.edu/web-pages/index.html' target=_blank&gt;PhET Physics Education Technology&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href='http://phet.colorado.edu/web-pages/simulations-base.html' target=_blank&gt;Motion&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href='http://www.robertpenner.com/easing/easing_demo.html' target=_blank&gt;Robert Penner's Easing Demo&lt;/a&gt;</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/1622/11479">
		<dc:format>text/html</dc:format>
		<dc:date>2006-10-26T03:05:03+00:00</dc:date>
		<dc:creator>Paul Dana</dc:creator>
		<title>Bit Shifter</title>
		<link>http://www.garagegames.com/blogs/1622/11479</link>
		<description>&lt;center&gt;&lt;b&gt;BIT SHIFTER&lt;/b&gt;&lt;/center&gt;&lt;br&gt;&lt;br&gt;&lt;center&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/flash_killbrother_small.jpg'  alt=&quot;&quot;&gt;&lt;/center&gt;&lt;br&gt;&lt;br&gt;Bit Shifter is a 3D Arcade Strategy game where you must save Bit World from infection by an Evil Virus. You play Flash Bios,  pilot of the S.S. Scandisc, delivering virus cleaning robots called Bits to infected ares of bitworld. You must fight off nasty creatures that spawn from the virus, protecting the Bits, but watch out! If the virus reaches the Data Stream it's all over! &lt;br&gt;&lt;br&gt;Plastic Games was formed when programmer Paul Dana met the art team of Jason Sharp and Kirk Alberts. Prior to meeting we had already become proficient in Torque engine technology and we wanted to put that skill to use and form a game development studio.&lt;br&gt;&lt;br&gt;Bit Shifter (later renamed to Flash Bios after the main character) is the first project Plastic Games worked on. We worked on it from April of 2003 until October of 2005. During this time we received an increasing number of offers for contract work and eventually stopped work on the game to do contract work fulltime.&lt;br&gt;&lt;br&gt;&lt;b&gt;Play the Game Yourself!&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;center&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/flashbios_bit.jpg'  alt=&quot;&quot;&gt;&lt;/center&gt;&lt;br&gt;&lt;br&gt;To checkout the game &lt;a href='http://www.plasticgames.com/dev/fb/FlashBios_024800.zip' target=_blank&gt; download this zip file &lt;/a&gt;. To see the depth of this game you need only play the tutorial and the first level.&lt;br&gt;&lt;br&gt;&lt;b&gt;What We Learned&lt;/b&gt;&lt;br&gt;&lt;br&gt;We learned a lot about how to make games during the two plus years we worked on Bit Shifter and even more about how &lt;b&gt;not&lt;/b&gt; to make games. &lt;br&gt;&lt;br&gt;We learned that the first and most important thing about a game is the feel of the control object. If the control object does not feel just fabulous to interact with then the game right off is no fun. Our control object is a spaceship as you see above and we made and re-made the flight model for Bit Shifter endlessly. We must have gone through six revisions and one of the last things we were working on when we stopped was the flight model.&lt;br&gt;&lt;br&gt;We learned how many different details affect the feel of the control object beyond just the physics, from camera lag and camera tilt to supporting details like thrusters that rotate in the direction of thrust and impact rotations when the object is hit.&lt;br&gt;&lt;br&gt;&lt;center&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/flashbios_hit.jpg'  alt=&quot;&quot;&gt;&lt;/center&gt;&lt;br&gt;&lt;br&gt;Above you see how the ship rotates to show impacts when hit with enemy fire. The image does not do this justice, you need to play the game really appreciate the detail that went into making just flying this ship around fun.&lt;br&gt;&lt;br&gt;&lt;center&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/flashbios_hurt.jpg'  alt=&quot;&quot;&gt;&lt;/center&gt;&lt;br&gt;&lt;br&gt;Above you can see that, in addition to rotating under an impact the ship would start to spew smoke and the cool neon blinking areas on the ship would go from blue to red as it took more and more damage.&lt;br&gt;This kind of detail extends to the rest of the world as well. The nasty creatures that spawned from the virus would bob up and down slowly but that would increase and they would start to spew smoke and fire when hurt. When you hit them they would rotate from the impact: infact you could get them spinning like crazy it was a blast.&lt;br&gt;&lt;br&gt;&lt;center&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/virus_1.jpg'  alt=&quot;&quot;&gt;&lt;/center&gt;&lt;br&gt;&lt;br&gt;The very terrain was a character in the game. The Data Stream represented the circuits flowing through Bit World. Each level would represent a part of those circuits with the Data Stream flowing in one side of the level and out the other. All the elements in the game from Bit Makers to Health Generators were &amp;quot;powered&amp;quot; by the Data Stream. We wrote custom rendering code to show the flow of power through the Data Stream and up the &amp;quot;Zor Paths&amp;quot; that brought power to the game ekements.&lt;br&gt;&lt;br&gt;&lt;center&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/virus_2.jpg'  alt=&quot;&quot;&gt;&lt;/center&gt;&lt;br&gt;&lt;br&gt;As areas of the terrain in Bit World got infected they would turn an animated turbulent red to show the presence of Virus using more custom rendering code. When the Zor Paths got infected they would turn red as well and the Virus would spread quickly down the Zor Paths. If the Virus reaches the Data Stream then the level is over!&lt;br&gt;&lt;br&gt;&lt;center&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/virus_3.jpg'  alt=&quot;&quot;&gt;&lt;/center&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;A Team Was Born&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/pg_grenade_logo_comp_small.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;After two plus years of effort we did not have a complete game. What we &lt;i&gt;did&lt;/i&gt; have was a vast appreciation for the effort it takes to make a quality game experience and the skills to acheive it. Best of all we had become a team.&lt;br&gt;&lt;br&gt;Since that time we have been further honing our skills working on contract projects. For details on our availability please contact Paul Dana &lt;a href='mailto:paul@plasticgames.com'&gt;paul@plasticgames.com&lt;/a&gt; or Jason Sharp &lt;a href='mailto:jason@plasticgames.com'&gt;jason@plasticgames.com&lt;/a&gt;.</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/1622/11477">
		<dc:format>text/html</dc:format>
		<dc:date>2006-10-26T02:44:20+00:00</dc:date>
		<dc:creator>Paul Dana</dc:creator>
		<title>What The...</title>
		<link>http://www.garagegames.com/blogs/1622/11477</link>
		<description>What the heck has Plastic Games been doing for the past year?&lt;br&gt;&lt;br&gt;Good question. &lt;br&gt;&lt;br&gt;The short answer is that we have put down work on Bit Shifter (aka Flash Bios) to pursue contract work. &lt;br&gt;&lt;br&gt;The long answer will be forthcoming in future blogs, including the one immediately following this one. Don't fear, I still plan to finish my series of blogs, The Long Strange Trip. This blog and the next one are just quick updates to let everyone know what is going on. &lt;br&gt;&lt;br&gt;You won't have long to wait as the next blog goes up in about an hour. It explains all about the game Bit Shifter and what we learned making it and includes a link to the game itself for people curious to try it out. I created this page so people could learn more about Plastic Games and how we learned to be an effective game development team.</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/1622/8779">
		<dc:format>text/html</dc:format>
		<dc:date>2005-09-24T05:15:14+00:00</dc:date>
		<dc:creator>Paul Dana</dc:creator>
		<title>Saturday Sep 24 5:15</title>
		<link>http://www.garagegames.com/blogs/1622/8779</link>
		<description>The Long Strange Trip, Part 3: Boys Go Wild&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Long Strange Trip, Part 3:  Boys Go Wild&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/then_now.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;This is part 3 in a series of blogs that documents the wonderous journey of Jason Sharp, Paul Dana, and Kirk Alberts as we learned the hard way how not to make games. &lt;a href='http://www.garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=8426'&gt;Part One is here&lt;/a&gt;&lt;br&gt;&lt;br&gt;We last left you, dear reader, at the end of &lt;a href='http://www.garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=8499'&gt;Part Two&lt;/a&gt;. I had finished a prototype of my game and had Joe Maruschak play it and gave me feedback. Also at this time Jason Sharp and Kirk Alberts were inspired by my Droids prototype to join me. Plastic Games was born! &lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/pg_grenade_logo_comp_small.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;Our Logo&lt;br&gt;&lt;br&gt;We  had Joe's feedback, which was:&lt;br&gt;&lt;br&gt;1.  Instant Death is nerve racking and somewhat hard to understand experience...why did I just die?...might want to add health.&lt;br&gt;2.  5 degree of freedom flight model is very difficult. Consder abandoning it. At the very least the flight model should be your focus until you get it right.&lt;br&gt;3.  Landing the ship feels awkward...how about just flying by to grab Droids?&lt;br&gt;4.  Write a mission statement...Identify your target audience and make decisions on what is right for your game by always going back to that mission statement. He cited his mission statement for Think Tanks: A cartoony tank game for former fraggers who don't have very much time in their life anymore but who would enjoy a simple online fighting game where it's quick to get into the game and quick to finish a map. &lt;br&gt;&lt;br&gt;Jason would do modeling and animation, Kirk would gui/hud/concept/texture/terrains, and I would do coding. Jason and Kirk already knew how to get art into the Torque Game Engine. We were all set! We were ready to continue our prototyping. One month later we had a new version. You can&lt;br&gt;&lt;a href='http://www.plasticgames.com/dev/blog_files/Droids_02901_08May2003.zip' target=_blank&gt; download this 8-May-2003 prototype of Droids right now &lt;/a&gt; and try it yourself.&lt;br&gt;&lt;br&gt;By this point we had decided that this remake of Oids would happen inside a computer. Instead of &amp;quot;robots&amp;quot; you would be saving &amp;quot;Bits&amp;quot; (they would still look like robots)...the more you save the less data loss, right? Get it? We called the ship the S. S. Scandisc and we envisioned saving Bits being like saving data inside a computer. When we told Joe of this theme he suggested the name Bit Shifter.&lt;br&gt;&lt;br&gt;&lt;b&gt;Our First Brilliant Move &lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/droids_newship_chip.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;A Spiffy new ship model and a &amp;quot;chip&amp;quot; model for Bit Prison&lt;br&gt;&lt;br&gt;Our first priority should have been addressing the flight model...so instead we made the ship look &lt;b&gt;much cooler&lt;/b&gt;. How could we resist? I had this fugly flying UFO donut. We needed a ship that looked like it could fly the way the UFO dounut could fly. &lt;br&gt;&lt;br&gt;Well...no we really didn't. What we really needed was to work on the flight model and improve it, possibly abandon it altogether. After that was done we could make a ship to match the flight model. Sure...but...but isn't that ship much cooler? &lt;br&gt;&lt;br&gt;While we were making new models heck we would make a new model for the Bit prisons. Computer chips are found inside computers...let's use that!&lt;br&gt;&lt;br&gt;&lt;b&gt;Our Second Brilliant Move&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/droids_magnet.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;A Giant Magnet that pulled you to your death!&lt;br&gt;&lt;br&gt;Instead of address basic issues we instead had an orgy of putting content into the game. We were &amp;quot;cloning&amp;quot; Oids, a 2D arcade game, and so I suppose we figured that if we just put in enough content the game would be fun. Instead of playing the game we had and fixing and adressing the game we had...we constantly thought instead about the game we were about to build. We continued with the plan that the gameplay is already decided...it's Oids in 3D. Therefore we simply needed to translate the elements of the 2D game into our game and, presto! Fun! Right?&lt;br&gt;&lt;br&gt;Not so much. &lt;br&gt;&lt;br&gt;We reasoned: The original game had Grav Pods that pulled you in and Repulsors that pushed you away. We translated that to our in-a-computer theme and said, OK: Our game will have Magnets to pull you and Case Fans to push you.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/droids_fan_large.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;A Giant Case fan that tracked you and pushed you&lt;br&gt;&lt;br&gt;Now this was cool!&lt;br&gt;&lt;br&gt;&lt;b&gt;The Brilliant Moves Just Keep Coming&lt;/b&gt;&lt;br&gt;&lt;br&gt;Only one month elapsed from when Jason and Kirk joined me to the version of the prototyp you can d/l and play yourself and that produced the screenshots your looking at. We had never worked as a team before and none of us had all &lt;b&gt;that&lt;/b&gt;&lt;br&gt; much experience with the Torque art pipeline. And yet we were able to get all the game elements into the game that you see here in that time. And this is not just static models. Each of these models has animations and sounds:&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/droids_fan.gif'  alt=&quot;&quot;&gt;&lt;br&gt;The case fan would track you and push you away&lt;br&gt;&lt;br&gt;This was quite an accomplishment. I had already created the Turret Resource that I am generally known for and there were AI Turrets in the game when Jason and Kirk joined me. That took an entire new C++ class to make work, but &lt;i&gt;this Fan is animated in script only!&lt;/i&gt; I made a few small changes to the script animation functions, mostly just exposing to script animation thread code normally only callable from C++. Beyond that the rest was done in script.&lt;br&gt;&lt;br&gt;And the turn around time was insane! In this same month not only did we make the new ship model, the chip prison, the magnet and the fan. The original game Oids also had &amp;quot;fuel pods&amp;quot;. You would land next to them. A little &amp;quot;gas hose&amp;quot; sort of deal stuck out and refuled your ship. Kirk made an awesome piece of concept art that lead to this game model:&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/droids_zapper_large.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;The Zapper that refueled you&lt;br&gt;&lt;br&gt;How f***ing cool is that?&lt;br&gt;Again this is a fully animated model that works in game, also done almost entirely in script. Notice the cool lightning effect across those electro rods. Once you land on the pad needing fuel, the arm comes down and your ship gets hit with lighting. As the lightning fires your ships fuel goes up. The needle indicators on the zapper slowly drain. Once your ship is full the arm retracts. If the zapper has been drained of its energy then the cool lightning effect across the rods would stop and of course the needles would read zero.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/droids_zapper.gif'  alt=&quot;&quot;&gt;&lt;br&gt;The Zapper had some bitchin detail &lt;br&gt;&lt;br&gt;&lt;b&gt;We Were Gods&lt;/b&gt;&lt;br&gt;&lt;br&gt;We were drunk with power by this point. We were astounded by our own brilliance; and it &lt;i&gt;was&lt;/i&gt; quite a technical achievement. We were so astounded, in fact, that it blinded us to the reality that we were &lt;i&gt;not&lt;/i&gt; actually making progress. It sure &lt;i&gt;felt&lt;/i&gt; like progress. After all...look at the number of features that we got into the game in such a short time! But...consider this: The Magnet, the Bit Prisons, The Fan, and the Zapper do not appear in the current version of the game!&lt;br&gt;&lt;br&gt;And we were not even done putting stuff into the game! Just like Oids, we added a  Missle Dome that would crack open when you got near and emit a Seeking Missle that would come and getcha!&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/droids_missle.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;Watch out for the seeking missle!&lt;br&gt;&lt;br&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;br&gt;&lt;br&gt;We added a lot of contant. We went wild. We assumed adding content would magically make the game fun. It didn't. It just muddied the waters more and more. As time went by I started to realize that fighting the muddy waters is a major challenge when designing games.&lt;br&gt;&lt;br&gt;Deciding what to put in the game is hard. Deciding what to take out is hard. Dealing with a muddy game design that already has too much in there is even harder still. &lt;br&gt;&lt;br&gt;This is one of the main reasons whey there is a certain order to do things in: start with the control scheme of the &amp;quot;main character&amp;quot;, in our case a space ship. Build only enough of the game to test the control scheme. Make sure it is tight.&lt;br&gt;&lt;br&gt;Next move onto the camera...as many things about the camera heavily influence the players perception of the &amp;quot;main character&amp;quot; being controlled.&lt;br&gt;&lt;br&gt;You continue with this process, iteratively improving the game in such away that it muddies the waters &lt;i&gt;less and less&lt;/i&gt;, rather than more and more.&lt;br&gt;&lt;br&gt;These are lessons I learned the hard way.&lt;br&gt;&lt;br&gt;Well...that is all for now. Be sure to tune in next time for Part 4 in the series: Burnt Down, Fell Over, And Then Sank In The Swamp.</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/1622/8499">
		<dc:format>text/html</dc:format>
		<dc:date>2005-08-18T00:54:09+00:00</dc:date>
		<dc:creator>Paul Dana</dc:creator>
		<title>Thursday Aug 18 0:54</title>
		<link>http://www.garagegames.com/blogs/1622/8499</link>
		<description>Long Strange Trip, Part 2:  The Prototype&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Long Strange Trip, Part 2:  The Prototype&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/then_now.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;This is part 2 in a series of blogs that documents the wonderous journey of Jason Sharp, Paul Dana, and Kirk Alberts as we learned the hard way how not to make games. &lt;a href='http://www.garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=8426'&gt;Part One is here&lt;/a&gt;&lt;br&gt;&lt;br&gt;We started two and a half years ago with a prototype called Droids, a 3D clone of an old 2D arcade style game called Oids. The gameplay and the name changed. It became first Bit Shifter and then later &lt;a href='http://www.plasticgames.com/dev/fbob' target=_blank&gt;Flash Bios&lt;/a&gt;.&lt;br&gt;&lt;br&gt;We are going to highlight the spots along this journey where we went wrong, how we failed to understand or to believe the advice we got, and why we think we failed to &amp;quot;get&amp;quot; the process of making a game until our second year.&lt;br&gt;&lt;br&gt;&lt;b&gt;Oids&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/oids_screenshot.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;Original 2D game Oids &lt;br&gt;&lt;br&gt;First you need to know about the original 2D arcade style game, called Oids. &lt;a href='http://www.garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=8426'&gt;Part One&lt;/a&gt; has a description of Oids and a playable download.&lt;br&gt;&lt;br&gt;&lt;b&gt;Droids&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/droids_mothership.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;Fugly UFO Donut headed for the Mother Ship&lt;br&gt;&lt;br&gt;Next you need to know about the Droids. You can &lt;a href='http://www.plasticgames.com/dev/blog_files/Droids_02201_23April2003.zip' target=_blank&gt; download this prototype right now &lt;/a&gt; and play it yourself if you like.&lt;br&gt;&lt;br&gt;The first prototype of Droids worked like this: in an effort to translate the 2D asteroids style flight control of the original game I made a custom vehicle type affectionately dubbed the UFO Donut Tank. The idea was to have a flight model &amp;quot;like spectator mode in an FPS game but with momentum&amp;quot; using the traditional WASD keys for moving and mouse for turning. &lt;br&gt;&lt;br&gt;For the Ship and the Mother Ship and all other game objects I learned how to use the Milkshape modeling program, made incredibly ugly stand-in art, and moved on. For the Droids I used the Blue Torque Guy model that came with Torque. To show &amp;quot;flat areas&amp;quot; where it  was OK to land I painted the terrain with grass texture and used brown desert color everywhere else.&lt;br&gt;&lt;br&gt;For baddies I chose four things from Oids to implement:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class='codeblock'&gt;&lt;pre&gt;1. Guns that shoot you &lt;br&gt;2. Anti Grav towers that push you &lt;br&gt;3. Magnetic towers that pull you &lt;br&gt;4. Teleporters &lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;The Open Beta&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/flashbios_bit.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;How the Game Looks Today&lt;br&gt;&lt;br&gt;Remember, you can &lt;a href='http://www.plasticgames.com/dev/fbob' target=_blank&gt;Play Flash Flash Bios RIGHT NOW!&lt;/a&gt; The open beta has started, so if you want to see where we are today, just &lt;a href='http://www.plasticgames.com/dev/fbob' target=_blank&gt;Sign Up&lt;/a&gt; and help us playtest!&lt;br&gt;&lt;br&gt;&lt;b&gt;The Plan&lt;/b&gt;&lt;br&gt;&lt;br&gt;The general advice I had received up to this point was to focus on prototyping the gameplay in small iterative steps. After playtesting each version, decide what needs work, and let that influence what  is worked on next. &lt;br&gt;&lt;br&gt;I looked upon myself as a newbie at making games, so I focused on the question: How do I know what needs work? How do I know what to &amp;quot;do from here&amp;quot;. &lt;br&gt;&lt;br&gt;I asked Joe Maruschak to play the prototype and give me his impressions as well as advice on &amp;quot;what to do from here&amp;quot;.&lt;br&gt;&lt;br&gt;&lt;b&gt;Joe Plays the game&lt;/b&gt;&lt;br&gt;&lt;br&gt;The version of the game I sent to joe had the movement keys bound to ESDF instead of WASD by mistake. I had W bound to &amp;quot;down&amp;quot; and spacebar bound to &amp;quot;up&amp;quot;.&lt;br&gt;&lt;br&gt;Joe sits down to play the game and presses W to go forward. The ship immediately plummets to the ground and goes boom (remember, touch anything other than a landing area and it's instant death).&lt;br&gt;&lt;br&gt;Joe spawns again and is now very cautious. He figures out where the keybinds are and tries flying around, touches the side of a hill and promptly goes boom.&lt;br&gt;&lt;br&gt;He is very tense while flying for the rest of the testing, but is able to find the prisons, shoot them to release the &amp;quot;droids&amp;quot;, land and save them, and bring them back to mother ship.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/droids_prison.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;Shooting Droids Prisons from First Person View&lt;br&gt;&lt;br&gt;&lt;b&gt;What Joe Said&lt;/b&gt;&lt;br&gt;&lt;br&gt;First he warned me up front that my flight model was too difficult. It allows five degrees of freedom. You can move along all three axes X, Y, Z and you can rotate around two Pitch, Yaw. He strongly advised that I work on the flight model first before any other game feature.&lt;br&gt;&lt;br&gt;Second Joe related how having &amp;quot;instant kill&amp;quot; on any contact made him very tense while fyling. He asked if I &lt;i&gt;intended&lt;/i&gt; flying to be &amp;quot;tense&amp;quot; in this game. I said no. This lead to discussions of how little up front &amp;quot;reading&amp;quot; most players do before just jumping in and trying a game and how most of their impressions of the game will come from their first few minutes playing it. He related how not many games are &amp;quot;insta kill&amp;quot; like old school arcade games and the reason for this is that having &amp;quot;damage&amp;quot; teaches you what hurts without killing you.&lt;br&gt;&lt;br&gt;This lead to complaint three. Too many keys to press. I was explaining how, yes, it was instant death if you touched the ground or any enemy shot hit you, but there was a shield that protected you from all harm and made you bounce off the ground. The fun was flying around bouncing and timing the shields. He pointed out how that as may be, it was still a lot to need six keys and a mouse to fly around with and then also need a key for shields. I countered that there was no gravity, so really you could fly with just the forward key and the mouse giving the direction to fly in. Joe pointed out that while this was true, it was not an obvious or intuitive flight model.&lt;br&gt;&lt;br&gt;Complaint four was about how it felt to &lt;i&gt;land&lt;/i&gt; the ship. In the original game you had to come in with a certain minimum speed or you exploded on landing. I implemented this same system but it was very &amp;quot;fussy&amp;quot; about rebounding off the ground and taking a long time till you lost enough momentum that the game would call that &amp;quot;stopped&amp;quot;. To fix this I added some code to say OK if you are going slow enough just stop, don't bounce a few times before stopping. This had the effect of making the landing areas feel &amp;quot;magnetic&amp;quot;...they would &amp;quot;grab&amp;quot; you to a stop. Joe complained that this felt awkward but also  he questioned having to land in the first place...why not just fly by?&lt;br&gt;&lt;br&gt;Finally he gave me a general piece of advice when trying to sort out &amp;quot;what to do next&amp;quot;. He said that a mission statement is more important than a game design at this phase. Identify &lt;i&gt;who&lt;/i&gt; your audiance is. Is this a game for hard core gamers? Is this a game for someone who used to play online games but does not have the time anymore? Is this a casual game meant for someone who is looking for a new distraction during lunch breaks? He advised us to get a strong mental image of who is playing the game and why this game would fill their needs.&lt;br&gt;&lt;br&gt;He gave me more impressions than this but there isn't space to go into them all, these four were his strongest observations at this point.&lt;br&gt;&lt;br&gt;I asked him what I should do from here and he said he had already answered that. I was overwhelmed with all the feedback and advice so it was clear to me what he meant. He said &amp;quot;work on the flight model&amp;quot;. I said &amp;quot;what if I like the flight model and want to keep it...what then&amp;quot;. Being very patient with me he says &amp;quot;still work on the flight model&amp;quot;.&lt;br&gt;&lt;br&gt;&lt;b&gt;What We Thought&lt;/b&gt;&lt;br&gt;&lt;br&gt;At this point Jason Sharp and Kirk Alberts had just become inspired by the prototype to join the project. Just as I had been promised. If I made it they will come.&lt;br&gt;&lt;br&gt;They were anxious to help out. Jason would make 3D models and animate them. Kirk would make textures for the model and GUI elements and textures for the terrains and skyboxes. He also knew Hammer and would make some interiors.&lt;br&gt;I was also excited to have them start on this work and I was interested in adressing all the issues that Joe brought. Except the flight model. I loved the flight model and was sure that it could be made to work.&lt;br&gt;&lt;br&gt;&lt;b&gt;What We Did&lt;/b&gt;&lt;br&gt;&lt;br&gt;What we did not do was hunker down and address the flight model. What we did do was go crazy putting content into the game. You can judge for yourself in the next blog in this series how much we  followed Joe's advice (or not).&lt;br&gt;&lt;br&gt;We talked about a mission statement and who are game was for, but we did not really connect this back with how the game actaully was. We had a confused sort of notion that our audiance was &amp;quot;people who played classic arcade games&amp;quot; but that this was a broad audiance with wide appeal. We knew our flight model was complicated but we felt that, since you only &lt;i&gt;really&lt;/i&gt; needed the forward key and the mouse to fly, it was not overly complicated. &lt;br&gt;&lt;br&gt;&lt;b&gt;The Big Mistake&lt;/b&gt;&lt;br&gt;&lt;br&gt;Our biggest mistake, and one that we would repeat several times, was to mis-identify where the project was along a continuum from start to finish. I was such a newbie that Joe and I were still talking at cross purposes at this point. If he had known exactly how un-ready I was to even &lt;i&gt;grasp&lt;/i&gt; his advice, nevermind follow it, I think he would have said &amp;quot;Look Paul. Your game is here on the continuum [points to 3%], because you still have basic issues with your control scheme (flight model) which is one of the very first issues you have to sort out. But you are acting like you are here on the continuum [points to 17%] because now you want to add 3D art, and here [points at 79%] because you want to add GUI elements.&amp;quot;.&lt;br&gt;&lt;br&gt;I am making up the particulars of course, but this is the thrust of it. We would do something, know it was not really &amp;quot;done&amp;quot;, but move on &lt;i&gt;anyway&lt;/i&gt; as if issues could all be sorted out at some later date.&lt;br&gt;As Joe was to make more clear to me in later discussions, this just serves to muddy the water. Not surprisingly the issues that I largely dealt with after this point had to do with muddy water.&lt;br&gt;&lt;br&gt;&lt;b&gt;The Bad Assumptions&lt;/b&gt;&lt;br&gt;&lt;br&gt;The root source of the Big Mistake and all our major problems is a set of bad assumptions we made, mostly without thinking conciously about it:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class='codeblock'&gt;&lt;pre&gt;   1. Adding more to the game will make it easier to see what is fun &lt;br&gt;      and what is not fun.&lt;br&gt;&lt;br&gt;   2. Moving a 2D game mechanic to 3D would be simple and workable&lt;br&gt;      with the right set of changes.&lt;br&gt;&lt;br&gt;   3. It would be possible to design the higher level aspects of the game&lt;br&gt;      without refining the lower level interactive elements&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;None of these assumptions was true and they all cost us. Many many hours were wasted because of these assumptions and many months of time went by without actually making much progress toward shipping a game.&lt;br&gt;&lt;br&gt;If there is any point to take away from this long winded discussion of our first prototype, it is this: try to avoid costly assumptions like the ones we made. There really is a right and a wrong way to make games. &lt;br&gt;&lt;br&gt;But that is a disussion for another day.&lt;br&gt;&lt;br&gt;That's all for this episode of The Long Strang Trip. You can read more in my next blog, &lt;a href='http://www.garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=8779'&gt;Part Three : Boys Go Wild&lt;/a&gt;.</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/1622/8426">
		<dc:format>text/html</dc:format>
		<dc:date>2005-08-05T03:46:48+00:00</dc:date>
		<dc:creator>Paul Dana</dc:creator>
		<title>Friday Aug 5 3:46</title>
		<link>http://www.garagegames.com/blogs/1622/8426</link>
		<description>What a long strange trip...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Long Strange Trip, Part 1: The Idea&lt;/b&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/then_now.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;What a long strange trip it's been...&lt;br&gt;&lt;br&gt;How stupidly we went about most of it.&lt;br&gt;&lt;br&gt;I started in March of 2003, a lone coder with a mission: make a game prototype first. Before making a webpage, before forming a team, before making a design document.&lt;br&gt;&lt;br&gt;It is now Aug of 2005. I have a team, and we have a product: Flash Bios, a 3D Arcade Strategy game. We are in beta and we will ship sometime this year. &lt;br&gt;&lt;br&gt;In my wildest dreams I did not think it would take us over two years to finish this game. After all...I thought really hard for months and months before I chose a game idea to go with. I sought (and thought I was following) the advice of experienced professionals. I spent a year learning the Torque Engine before trying to make a game with it; doing things like creating the Turrets resource and learning about the art path, etc. I took the humble path. Even though I had over 13 years of professional 3D graphics coding under my belt I still though of myself as a newbie. I would seek advice. I would follow it.&lt;br&gt;&lt;br&gt;Your asking...then what in God's name happened?&lt;br&gt;&lt;br&gt;I will tell you. We learned what not to do. The hard way. Blundering our way through this, Jason and I have finally learned how to follow the advice we were receving from the start.&lt;br&gt;&lt;br&gt;My friend and mentor, &lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=1449'&gt;Joe Maruschak&lt;/a&gt;, has advised me from the very start. He has convinced me to take time I don't really have to write this series of blogs, and tell people the story of our long strange trip. &lt;br&gt;&lt;br&gt;We are going to highlight the places where we went wrong, how we failed to understand it or to belive the advice we got, and our own views on where we failed to &amp;quot;get it&amp;quot;.&lt;br&gt;&lt;br&gt;&lt;b&gt;Oids&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/droids_mothership.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;Fugly UFO Donut headed for the Mother Ship&lt;br&gt;&lt;br&gt;First you need to know about the original 2D arcade style game, called Oids.  You can &lt;a href='http://www.plasticgames.com/dev/blog_files/OidsAtariSTEmulator.zip' target=_blank&gt;download Oids right now&lt;/a&gt; and play it yourself if you like. Be warned this is an &lt;i&gt;ancient&lt;/i&gt; game that ran on the Atari ST and the original black and white Macintosh. The download contains an Atari ST emulator as well as the game.&lt;br&gt;&lt;br&gt;Oids worked like this: your job was to save all the Oids on a Planet before you moved onto the next Planet in the System. Oids were these little robots held in prisons. The Mother Ship would spit you out and you would have to go find the Oids prisons and destroy them to free the Oids, being careful not to shoot the Oids! You would have to destroy any defenses guarding the Oids and then land on flat areas near the Oids. They would hop on board after you landed. Once your ship was holding the max (8) you would have to bring them back to the Mother Ship. Once you freed all the Oids in this way you would move onto the next Planet.&lt;br&gt;&lt;br&gt;Your ship, the Oids, and all defenses were one-shot-one-kill. If your ship touched anything (other than a flat area during landing) it would blow up. To protect yourself you had a shield that would slowly run down as you used it. Your ship expended fuel when you thrust. You had to eventually find a refueling station and land near it, or bring 8 Oids back to Mother Ship and she would refuel you.&lt;br&gt;&lt;br&gt;&lt;b&gt;Next Blog...&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;a href='http://www.garagegames.com/blogs/1622/8499'&gt;Read My Next Blog&lt;/a&gt; to find out how the original prototype played out.&lt;br&gt;&lt;br&gt;You will hear how the prototype inspired a team to materialize in front of my eyes, what joe had to say about the prototype, and how we followed some of his advice, but mostly failed to &amp;quot;get it&amp;quot;.&lt;br&gt;&lt;br&gt;Eventually you will find out how, despite being a bunch of utter noobs, we ended up with this:&lt;br&gt;&lt;br&gt;&lt;img src='http://www.plasticgames.com/dev/blog_images/flashbios_bit.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;Flash's stylish ship, the Scandisc and an antiviral bit&lt;br&gt;&lt;br&gt;Finally, speaking of long strange trips. Some of you may recall that my last April Fools .plan was about going to work for a guy who discovered Atlantis. As I told you then, although it was a joke and I never worked for &lt;a href='http://www.discoveryofatlantis.com' target=_blank&gt;Robert Samarst&lt;/a&gt;, but he really did discover Atlantis.&lt;br&gt;&lt;br&gt;No kidding.&lt;br&gt;&lt;br&gt;Also he finally released images he obtained on his expedition last summer. I have been waiting along time to see them. It represents a higher resolution scan of the &amp;quot;wall&amp;quot; he found, confirming what was seen in the lower resolution scan. Ie...that its a wall that travels in a straight line, keeps a consistent width, takes a perfect right angle bend, and keeps on going.&lt;br&gt;&lt;br&gt;&lt;a href='http://www.discoveryofatlantis.com/atlantisstructures/pic2.html' target=_blank&gt;How awesome is this?&lt;/a&gt;&lt;br&gt;&lt;br&gt;Now after your done gaping at that, &lt;a href='http://www.garagegames.com/blogs/1622/8499'&gt;Read My Next Blog&lt;/a&gt;.</description>
	</item>
</rdf:RDF>
