<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.wolfire.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
    <title type="text">Wolfire Games Blog</title>
    <subtitle type="html">Development log</subtitle>
    <updated>2010-07-27T19:25:14Z</updated>
    <id>tag:blog.wolfire.com,2009:atom.xml</id>
    <link rel="alternate" type="text/html" hreflang="en" href="http://blog.wolfire.com/" />
    
    <rights>Copyright (c) 2010</rights>
    <generator uri="http://blog.wolfire.com/" version="1.0">
        Bloggart 1.0
    </generator>
    
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.wolfire.com/WolfireGames" /><feedburner:info uri="wolfiregames" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>37.868575</geo:lat><geo:long>-122.258558</geo:long><feedburner:emailServiceId>WolfireGames</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.wolfire.com%2FWolfireGames" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.wolfire.com%2FWolfireGames" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.wolfire.com%2FWolfireGames" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.wolfire.com/WolfireGames" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.wolfire.com%2FWolfireGames" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.wolfire.com%2FWolfireGames" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.wolfire.com%2FWolfireGames" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.addtoany.com/?linkname=Wolfire%20Games%20Blog&amp;linkurl=http%3A%2F%2Ffeeds.wolfire.com%2FWolfireGames&amp;type=feed" src="http://www.addtoany.com/addfr-b.gif">Add to Any Feed Reader</feedburner:feedFlare><feedburner:browserFriendly>Welcome to the Wolfire Blog! This is where we keep everyone up to date on our progress on Overgrowth and other new stuff. Be sure to subscribe to get the latest news!</feedburner:browserFriendly><entry>
        <title>Old School Color Cycling with HTML5</title>
        <link rel="alternate" type="text/html" href="http://feeds.wolfire.com/~r/WolfireGames/~3/WdoSVyGMdqM/Old-School-Color-Cycling-with-HTML5" />
        <id>tag:blog.wolfire.com,2009:post:183001</id>
        <updated>2010-07-27T19:25:14Z</updated>
        <published>2010-07-27T19:25:14Z</published>
        <author>
            <name>Jeffrey Rosen</name>
            <uri>http://blog.wolfire.com/</uri>
        </author>
        <content type="html">
            &lt;p&gt;In the last day, a number of people have sent me this awesome link, so I figured I would post it here as well.  It is an awesome mix of HTML5, game tech, and nostalgia:
&lt;/p&gt;
&lt;p&gt;Joe Huckaby of &lt;a href='http://www.effectgames.com'&gt;Effect Games&lt;/a&gt; has created a neat HTML5 tool for rendering old school game backgrounds that use &lt;a href='http://en.wikipedia.org/wiki/Color_cycling'&gt;color cycling&lt;/a&gt;.  For all of the technical details, check out &lt;a href='http://www.effectgames.com/effect/article.psp.html/joe/Old_School_Color_Cycling_with_HTML5'&gt;Joe's blog post&lt;/a&gt;.
&lt;/p&gt;
&lt;div style='text-align:center;font-size:80%;margin:1em 0;'&gt;
    &lt;a href="http://www.effectgames.com/demos/canvascycle/?sound=0"&gt;
        &lt;img src="http://cdn.wolfire.com/blog/a/canvascycling.png" alt="HTML5 Color Cycling" /&gt;
    &lt;/a&gt;
    &lt;br /&gt;Click above to check it out
&lt;/div&gt;

&lt;p&gt;It should work in all browsers except the IEs (although IE9 should support it.)  The art was created by &lt;a href='http://www.markferrari.com/'&gt;Mark Ferrari&lt;/a&gt;.
&lt;/p&gt;
        &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=WdoSVyGMdqM:KeifPOVDv5U:PE2Ei85r0XQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?i=WdoSVyGMdqM:KeifPOVDv5U:PE2Ei85r0XQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=WdoSVyGMdqM:KeifPOVDv5U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=WdoSVyGMdqM:KeifPOVDv5U:bnS3RViFzaE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=bnS3RViFzaE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WolfireGames/~4/WdoSVyGMdqM" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://blog.wolfire.com/2010/07/Old-School-Color-Cycling-with-HTML5</feedburner:origLink></entry>
    
    <entry>
        <title>Overgrowth Alpha 89</title>
        <link rel="alternate" type="text/html" href="http://feeds.wolfire.com/~r/WolfireGames/~3/4ZX8j8DHymg/Overgrowth-Alpha-89" />
        <id>tag:blog.wolfire.com,2009:post:182001</id>
        <updated>2010-07-27T01:55:13Z</updated>
        <published>2010-07-27T01:55:13Z</published>
        <author>
            <name>Jeffrey Rosen</name>
            <uri>http://blog.wolfire.com/</uri>
        </author>
        <content type="html">
            &lt;p&gt;Here is what is new in &lt;a href="http://www.wolfire.com/overgrowth"&gt;Overgrowth&lt;/a&gt; in the 89th weekly alpha.  If you are confused what a weekly alpha is, or even what Overgrowth is, please read our fancy &lt;a href="http://blog.wolfire.com/2009/02/overgrowth-faq/"&gt;FAQ&lt;/a&gt;.  Basically, we are developing a massive video game from the ground up -- we are able to do this completely independently by accepting &lt;a href="http://www.wolfire.com/overgrowth/preorder"&gt;preorders&lt;/a&gt; for the game before it's done!
&lt;/p&gt;
&lt;div style="text-align:center;"&gt;
&lt;a href="http://www.wolfire.com/overgrowth"&gt;&lt;img src="http://cdn.wolfire.com/blog/og520.png" alt="Overgrowth" /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;Here are a few highlights from the source repository:
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
     More modular IK calculation
 &lt;/li&gt;

 &lt;li&gt;
     Started hooking up IK animation widgets
 &lt;/li&gt;

 &lt;li&gt;
     Fixed ctrl-click crash bug
 &lt;/li&gt;

 &lt;li&gt;
     Fixed a bone labels bug
 &lt;/li&gt;

 &lt;li&gt;
     Starting Blender PHXBN import/export script
 &lt;/li&gt;
&lt;/ul&gt;
&lt;div style='text-align:center;font-size:80%;margin:1em 0;'&gt;&lt;a href="http://cdn.wolfire.com/blog/alpha/a89.jpg"&gt;&lt;img src="http://cdn.wolfire.com/blog/alpha/a89thumb.jpg" alt="Overgrowth Alpha 89" /&gt;&lt;/a&gt;&lt;br /&gt;
Checking out some ruins
&lt;/div&gt;

&lt;p&gt;Thanks as always for all the support!  See you guys in &lt;a href="http://www.wolfire.com/irc"&gt;IRC&lt;/a&gt; and the &lt;a href="http://forums.wolfire.com"&gt;forums&lt;/a&gt;.
&lt;/p&gt;
        &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=4ZX8j8DHymg:0gB-e8qn5Vg:PE2Ei85r0XQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?i=4ZX8j8DHymg:0gB-e8qn5Vg:PE2Ei85r0XQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=4ZX8j8DHymg:0gB-e8qn5Vg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=4ZX8j8DHymg:0gB-e8qn5Vg:bnS3RViFzaE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=bnS3RViFzaE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WolfireGames/~4/4ZX8j8DHymg" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://blog.wolfire.com/2010/07/Overgrowth-Alpha-89</feedburner:origLink></entry>
    
    <entry>
        <title>Overgrowth Tutorial: Playing With BVH Animations</title>
        <link rel="alternate" type="text/html" href="http://feeds.wolfire.com/~r/WolfireGames/~3/WP8knUnDgYI/Overgrowth-Tutorial-Playing-With-BVH-Animations" />
        <id>tag:blog.wolfire.com,2009:post:181001</id>
        <updated>2010-07-24T17:55:07Z</updated>
        <published>2010-07-24T17:55:07Z</published>
        <author>
            <name>John Graham</name>
            <uri>http://blog.wolfire.com/</uri>
        </author>
        <content type="html">
            &lt;p&gt;David already teased everyone with the new animation tech in Overgrowth with his &lt;a href='http://blog.wolfire.com/2010/07/Initial-motion-capture-tests'&gt;initial motion capture tests&lt;/a&gt; video.  However, this week I had a chance to really go into the nitty gritty details of the new features.  So without further ado, I humbly present to you a new Overgrowth tech demo.
&lt;/p&gt;
&lt;div style="text-align:center;font-size:80%;margin:1em 0;"&gt;
    &lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="520" height="320" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="src" value="http://www.youtube.com/v/-UcXDCEkm5s&amp;hl=en&amp;fs=1" /&gt;&lt;embed type="application/x-shockwave-flash" width="520" height="320" src="http://www.youtube.com/v/-UcXDCEkm5s&amp;hl=en&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;
    &lt;br /&gt; Be sure to &lt;a href='http://www.youtube.com/watch?v=-UcXDCEkm5s&amp;hd=1'&gt;check it out in HD&lt;/a&gt;!
&lt;/div&gt;

&lt;p&gt;In summary, BVH animation files can now be loaded into the engine and David has created an animation algorithm that can translate the orginal humanoid BVH data to suit the specific size and dimensions of the current humanoid character you have rigged (assuming it has the same core structure). Last but not least, once you have a BVH animation loaded, you can save it out as an ANM file which can then be utilized by the scripting layer.
&lt;/p&gt;
&lt;p&gt;Remember you can download all the CMU motion captured data I used in this video (as well as 2500 other animations I didn't use) from &lt;a href='http://sites.google.com/a/cgspeed.com/cgspeed/motion-capture/cmu-bvh-conversion'&gt;this web site&lt;/a&gt;.  The animations come with a nice index explaining what actions each file contains.
&lt;/p&gt;
&lt;p&gt;Hopefully the video makes it pretty clear how everything is working right now.  The tech isn't finished yet but I thought it was especially fun to see Robbert performing a high-detail boxing animation.
&lt;/p&gt;
&lt;p&gt;What do you guys think of the new animation technology?
&lt;/p&gt;
        &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=WP8knUnDgYI:GwgwhMOpVp4:PE2Ei85r0XQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?i=WP8knUnDgYI:GwgwhMOpVp4:PE2Ei85r0XQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=WP8knUnDgYI:GwgwhMOpVp4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=WP8knUnDgYI:GwgwhMOpVp4:bnS3RViFzaE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=bnS3RViFzaE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WolfireGames/~4/WP8knUnDgYI" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://blog.wolfire.com/2010/07/Overgrowth-Tutorial-Playing-With-BVH-Animations</feedburner:origLink></entry>
    
    <entry>
        <title>Blender as an animation editor</title>
        <link rel="alternate" type="text/html" href="http://feeds.wolfire.com/~r/WolfireGames/~3/Jz019XK0ypI/Blender-as-an-animation-editor" />
        <id>tag:blog.wolfire.com,2009:post:180001</id>
        <updated>2010-07-23T04:30:28Z</updated>
        <published>2010-07-23T04:30:28Z</published>
        <author>
            <name>David Rosen</name>
            <uri>http://blog.wolfire.com/</uri>
        </author>
        <content type="html">
            &lt;p&gt;While working on some combat animations, I decided that the current Phoenix animation editor is too hard to use, and there are too many bottlenecks in the route to making it better. So, for now, I am looking into alternative approaches to editing animations. 
&lt;/p&gt;
&lt;p&gt;So far I am leaning towards integrating Blender animation, perhaps with custom import and export scripts. One of my original motivations for creating an animation editor was to make it available to all players without any expensive or platform-specific software. Blender fulfills this requirement because it's free, cross-platform, and open-source. Many valuable resources are free and open-source as well: for example, this great animation tutorial series &lt;a href="http://blip.tv/file/1773781"&gt;here&lt;/a&gt;, and this reusable character rig &lt;a href="http://blenderartists.org/forum/showthread.php?t=131079"&gt; here&lt;/a&gt;. Here is Robbert set up with that rig:
&lt;/p&gt;
&lt;div style='text-align:center;font-size:80%;margin:1em 0;'&gt;
    &lt;a href="http://cdn.wolfire.com/blog/blender/rabbitpose.jpg"&gt;
        &lt;img src="http://cdn.wolfire.com/blog/blender/rabbitposesmall.jpg" alt="Rabbit pose" /&gt;
    &lt;/a&gt;
    &lt;br /&gt; Dramatic combat pose!
&lt;/div&gt;

&lt;p&gt;Blender also already has tools for working with blend shapes (aka morph targets) for per-vertex effects like facial expressions, so this could save a lot of time in that regard as well. However, the existing Phoenix animation editor would still be useful for adding important meta-data like ragdoll joint limits, animation events, and scripted IK lines.
&lt;/p&gt;
&lt;div style='text-align:center;font-size:80%;margin:1em 0;'&gt;
    &lt;a href="http://cdn.wolfire.com/blog/blender/rabbitpose3.jpg"&gt;
        &lt;img src="http://cdn.wolfire.com/blog/blender/rabbitpose3small.jpg" alt="Rabbit pose" /&gt;
    &lt;/a&gt;
    &lt;br /&gt; Robbert takes a bow
&lt;/div&gt;

&lt;p&gt;I've heard complaints about the user interface in Blender, but I've always found it to be pretty consistent-- once you learn a few basic rules, everything makes sense. It has also made a lot of progress while being battle-tested in shorts like &lt;a href="http://www.youtube.com/watch?v=eFQxRd0isAQ"&gt;Elephants Dream&lt;/a&gt;, &lt;a href=http://www.youtube.com/watch?v=XSGBVzeBUbk"&gt;Big Buck Bunny&lt;/a&gt;, and the soon-to-be-released, &lt;a href="http://www.youtube.com/watch?v=HOfdboHvshg"&gt;Sintel&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;What do you think, would it be a good idea to use Blender as the primary animation tool for Overgrowth?
&lt;/p&gt;
        &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=Jz019XK0ypI:5r-sI3gyQV4:PE2Ei85r0XQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?i=Jz019XK0ypI:5r-sI3gyQV4:PE2Ei85r0XQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=Jz019XK0ypI:5r-sI3gyQV4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=Jz019XK0ypI:5r-sI3gyQV4:bnS3RViFzaE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=bnS3RViFzaE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WolfireGames/~4/Jz019XK0ypI" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://blog.wolfire.com/2010/07/Blender-as-an-animation-editor</feedburner:origLink></entry>
    
    <entry>
        <title>Linear algebra for game developers ~ part 3</title>
        <link rel="alternate" type="text/html" href="http://feeds.wolfire.com/~r/WolfireGames/~3/gZV782H8HUo/Linear-algebra-for-game-developers-part-3" />
        <id>tag:blog.wolfire.com,2009:post:156003</id>
        <updated>2010-07-21T04:17:50Z</updated>
        <published>2010-07-21T04:17:50Z</published>
        <author>
            <name>David Rosen</name>
            <uri>http://blog.wolfire.com/</uri>
        </author>
        <content type="html">
            &lt;p&gt;I introduced vectors in &lt;a href="http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-1/"&gt;Part 1&lt;/a&gt;, and a toolset for working with them in &lt;a href="http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-2/"&gt;Part 2&lt;/a&gt;. However, today I would like to talk about perhaps the most important concept for game developers. This is the concept of the transformation matrix.
&lt;/p&gt;
&lt;p&gt;Let's start by looking at the building blocks of the transformation matrix:
&lt;/p&gt;
&lt;h2&gt;Basis Vectors&lt;/h2&gt;

&lt;p&gt;Let's say we're making an Asteroids game on really old hardware, and we want to have a simple 2D space ship that can rotate freely. The ship model looks like this:
&lt;/p&gt;
&lt;div  style='text-align:center;font-size:80%;margin:1em 0;'&gt;
        &lt;img  src="http://cdn.wolfire.com/blog/linear/spaceship.jpg" alt="space ship"  /&gt;
&lt;/div&gt;

&lt;p&gt;So how do we draw it when the player rotates by an arbitrary amount, like 49 degrees counter-clockwise? Well, trigonometry we can create a function for 2D rotation that inputs a point and an angle, and outputs a rotated point:
   &lt;pre&gt;
   &lt;font color="#00FFFF"&gt;vec2&lt;/font&gt; rotate(&lt;font color="#00FFFF"&gt;vec2&lt;/font&gt; point, &lt;font color="#00FFFF"&gt;float&lt;/font&gt; angle){
           &lt;font color="#00FFFF"&gt;vec2&lt;/font&gt; rotated_point;
           rotated_point.x = point.x * &lt;font color="#00FFFF"&gt;cos&lt;/font&gt;(angle) - point.y * &lt;font color="#00FFFF"&gt;sin&lt;/font&gt;(angle);
           rotated_point.y = point.x * &lt;font color="#00FFFF"&gt;sin&lt;/font&gt;(angle) + point.y * &lt;font color="#00FFFF"&gt;cos&lt;/font&gt;(angle);
           &lt;font color="#00FFFF"&gt;return&lt;/font&gt; rotated_point;
   }
   &lt;/pre&gt;
   Applying this to our three points gives us the following shape:
&lt;/p&gt;
&lt;div  style='text-align:center;font-size:80%;margin:1em 0;'&gt;
        &lt;img  src="http://cdn.wolfire.com/blog/linear/spaceshiprotated.jpg" alt="space ship"  /&gt;
&lt;/div&gt;

&lt;p&gt;Cosine and sine operations are pretty slow, but we're only doing them on three points, so it can smoothly on our old hardware. But now we decide to upgrade the ship to look like this:
&lt;/p&gt;
&lt;div  style='text-align:center;font-size:80%;margin:1em 0;'&gt;
        &lt;img  src="http://cdn.wolfire.com/blog/linear/fancyspaceship.jpg" alt="space ship"  /&gt;
&lt;/div&gt;

&lt;p&gt;Now our old method is too slow! We don't have enough sine and cosine operations to rotate this many points. There are many ways to solve this problem, but an elegant solution comes to us like this: "What if instead of rotating each point in the model, we just rotate the model's x and y axes instead?"
&lt;/p&gt;
&lt;div  style='text-align:center;font-size:80%;margin:1em 0;'&gt;
        &lt;img  src="http://cdn.wolfire.com/blog/linear/spaceshiprotated2.jpg" alt="space ship"  /&gt;
&lt;/div&gt;

&lt;p&gt;How does this work? Well, let's look at what coordinates mean. When we talk about the the point (3,2), we are saying that its position is three times the x-axis plus two times the y-axis. The default axes are (1,0) for the x-axis and (0,1) for the y-axis, so we get the position 3&lt;em&gt;(1,0) + 2&lt;/em&gt;(0,1). But the axes don't have to be (1,0) and (0,1). If we rotate these axes, then we can rotate every point at the same time.
&lt;/p&gt;
&lt;p&gt;To get the rotated x and y axes we just use the trigonometric function above. For example, if we are rotating by 49 degrees, then we get the new x-axis by rotating (1,0) by 49 degrees and we get the y-axis by rotating (0,1) by 49 degrees. Our new x-axis is (0.66, 0.75), and our new y-axis is (-0.75, 0.66). We can do this by hand for our 3-point model to prove that it works:
&lt;/p&gt;
&lt;p&gt;The top point is (0,2), which means its new position is zero times the rotated x-axis plus twice the rotated y-axis. 
&lt;/p&gt;
&lt;div style='text-align:center'&gt;&lt;p&gt;0*(0.66,0.75) + 2*(-0.75, 0.66) = (-1.5, 1.3)&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;The bottom-left point is (-1,-1), which means its new position is negative one times the rotated x-axis plus negative one times the rotated y-axis. 
&lt;/p&gt;
&lt;div style='text-align:center'&gt;&lt;p&gt;-1*(0.66,0.75) + -1*(-0.75, 0.66) = (0.1, -1.4)&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;The bottom-right point is (1,-1), which means its new position is one times the rotated x-axis plus negative one times the rotated y-axis. 
&lt;/p&gt;
&lt;div style='text-align:center'&gt;&lt;p&gt;1*(0.66,0.75) + -1*(-0.75, 0.66) = (1.4, 0.1)&lt;/p&gt;&lt;/div&gt;

&lt;div  style='text-align:center;font-size:80%;margin:1em 0;'&gt;
        &lt;img  src="http://cdn.wolfire.com/blog/linear/multigraph.jpg" alt="space ship"  /&gt;
&lt;/div&gt;

&lt;p&gt;What we are doing here is using the ship coordinates as if they exist in a separate coordinate system with rotated axes (or 'basis vectors'). This is useful in this case because it separates the cost of manipulating the orientation of the ship from the cost of applying the orientation to the model points. 
&lt;/p&gt;
&lt;p&gt;Whenever you have modified the basis vectors (1,0) and (0,1) to (a,b) and (c,d), then the modified point (x,y) can be found using this expression:
&lt;/p&gt;
&lt;div style='text-align:center'&gt;&lt;p&gt;x(a,b) + y(c,d)&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;Normally the basis vectors are (1,0) and (0,1) so you just get x(1,0) + y(0,1) = (x,y), and you don't have to bother with this. However, it's important to remember that you can use other bases (plural of basis) as well.
&lt;/p&gt;
&lt;h2&gt;Matrices&lt;/h2&gt;

&lt;p&gt;Matrices are like 2-dimensional vectors. For example, a typical 2x2 matrix might look like this:
   &lt;div style='text-align:center'&gt;&lt;p&gt;&lt;pre&gt;
   [a c 
    b d]
   &lt;/pre&gt;&lt;/p&gt;&lt;/div&gt;
   When you multiply a matrix by a vector, you sum the dot product of each row of the matrix with the vector. For example, if we multiply the above matrix with the vector (x,y), we get:
&lt;/p&gt;
&lt;div style='text-align:center'&gt;&lt;p&gt;(a,c)&amp;bull;(x,y) + (b,d)&amp;bull;(x,y)&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;Written another way, this is:
&lt;/p&gt;
&lt;div style='text-align:center'&gt;&lt;p&gt;x(a,b) + y(c,d)&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;Look familiar? This is the exact same expression that we use when changing the basis vectors! This means that multiplying a 2x2 matrix with a 2D vector is the same thing as changing its basis vectors. For example, if we plug the standard basis vectors (1,0) and (0,1) into the matrix columns, we get:
&lt;/p&gt;
&lt;div style='text-align:center'&gt;&lt;p&gt;&lt;pre&gt;
[1 0 
 0 1]
&lt;/pre&gt;&lt;/p&gt;&lt;/div&gt;
This is the identity matrix, which has no effect, as we would expect from the neutral basis vectors we chose. If we plug in our 49-degree rotation bases, we get:
&lt;div style='text-align:center'&gt;&lt;p&gt;&lt;pre&gt;
[0.66 -0.75 
 0.75  0.66]
 &lt;/pre&gt;&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;This matrix will rotate any 2D vector counter-clockwise by 49 degrees. We could write our asteroids program with a lot more elegance by using matrices like this. For example, our ship-rotation function could look like this:
&lt;/p&gt;
&lt;pre&gt;
&lt;font color="#00FFFF"&gt;void&lt;/font&gt; RotateShip(&lt;font color="#00FFFF"&gt;float&lt;/font&gt; degrees){
        Matrix2x2 R = GetRotationMatrix(degrees);
        &lt;font color="#00FFFF"&gt;for&lt;/font&gt;(&lt;font color="#00FFFF"&gt;int&lt;/font&gt; i=0; i&amp;lt;num_points; ++i){
                rotated_point[i] = R * point[i];
        }
}
&lt;/pre&gt;
However, it would be even more elegant if we could include translation (movement through space) in the matrix as well. Then we would have a single data structure that can elegantly store and apply the orientation and position of each object. Fortunately, there is a way to do this, even though it's a bit of an ugly hack. If we want to translate by a vector (e,f), we can just tack it onto our change-of-basis matrix like this:

&lt;div style='text-align:center'&gt;&lt;p&gt;&lt;pre&gt;
[a c e 
 b d f 
 0 0 1]
 &lt;/pre&gt;&lt;/p&gt;&lt;/div&gt;

And then we add an extra [1] to the end of each position vector like this:

&lt;div style='text-align:center'&gt;&lt;p&gt;[x y 1]&lt;/p&gt;&lt;/div&gt;

Now when we multiply them together we get:

&lt;div style='text-align:center'&gt;&lt;p&gt;(a,c,e)&amp;bull;(x,y,1) + (b,d,f)&amp;bull;(x,y,1) + (0,0,1)&amp;bull;(x,y,1)&lt;/p&gt;&lt;/div&gt;

Which can essentially be rewritten:

&lt;div style='text-align:center'&gt;&lt;p&gt;x(a,b) + y(c,d) + (e,f)&lt;/p&gt;&lt;/div&gt;

So now we have the entire transformation in a single matrix! This is important for many reasons aside from just elegant code, because now we can use all of the standard matrix manipulation tools on it. For example, we can multiply matrices together to add their effects, or we can invert a matrix to give it the exact opposite transformation.

&lt;h2&gt;3D Matrices&lt;/h2&gt;

Matrices in 3D work just like they do in 2D -- I just used 2D examples in this post because they are easier to convey with a 2D screen. You just define three columns for the basis vectors instead of two. If the basis vectors are (a,b,c), (d,e,f) and (g,h,i) then your matrix should be:

&lt;div style='text-align:center'&gt;&lt;p&gt;&lt;pre&gt;
[a d g 
 b e h 
 c f i]
&lt;/pre&gt;&lt;/p&gt;&lt;/div&gt;
If you need translation (j,k,l), then you add the extra column and row like before:

&lt;div style='text-align:center'&gt;&lt;p&gt;&lt;pre&gt;
[a d g j 
 b e h k 
 c f i l 
 0 0 0 1]
 &lt;/pre&gt;&lt;/p&gt;&lt;/div&gt;

And add an extra [1] onto the vectors like this: 
&lt;div style='text-align:center'&gt;&lt;p&gt;[x y z 1]&lt;/p&gt;&lt;/div&gt;

There is a lot more to say about matrix transformations, but I thought I should stop here to see if this makes any sense. Do you have any questions about this topic, or any ideas for future ones?
        &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=gZV782H8HUo:hJjBeoA603s:PE2Ei85r0XQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?i=gZV782H8HUo:hJjBeoA603s:PE2Ei85r0XQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=gZV782H8HUo:hJjBeoA603s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=gZV782H8HUo:hJjBeoA603s:bnS3RViFzaE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=bnS3RViFzaE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WolfireGames/~4/gZV782H8HUo" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://blog.wolfire.com/2010/07/Linear-algebra-for-game-developers-part-3</feedburner:origLink></entry>
    
    <entry>
        <title>Overgrowth Alpha 88</title>
        <link rel="alternate" type="text/html" href="http://feeds.wolfire.com/~r/WolfireGames/~3/-sLT6wh5Dfo/Overgrowth-Alpha-88" />
        <id>tag:blog.wolfire.com,2009:post:179001</id>
        <updated>2010-07-20T06:48:35Z</updated>
        <published>2010-07-20T06:48:35Z</published>
        <author>
            <name>Jeffrey Rosen</name>
            <uri>http://blog.wolfire.com/</uri>
        </author>
        <content type="html">
            &lt;p&gt;Here is what is new in &lt;a href="http://www.wolfire.com/overgrowth"&gt;Overgrowth&lt;/a&gt; in the 88th weekly alpha.  If you are confused what a weekly alpha is, or even what Overgrowth is, please read our fancy &lt;a href="http://blog.wolfire.com/2009/02/overgrowth-faq/"&gt;FAQ&lt;/a&gt;.  Basically, we are developing a massive video game from the ground up -- we are able to do this completely independently by accepting &lt;a href="http://www.wolfire.com/overgrowth/preorder"&gt;preorders&lt;/a&gt; for the game before it's done!
&lt;/p&gt;
&lt;div style="text-align:center;"&gt;
&lt;a href="http://www.wolfire.com/overgrowth"&gt;&lt;img src="http://cdn.wolfire.com/blog/og520.png" alt="Overgrowth" /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;Here are a few highlights from the source repository:
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
     Fixed "terrainlow.obj" write directory issue
 &lt;/li&gt;

 &lt;li&gt;
     Fixed stippled line drawing bug
 &lt;/li&gt;

 &lt;li&gt;
     Safer one-shot animations without script callbacks
 &lt;/li&gt;

 &lt;li&gt;
     Vertexstream merging and splitting
 &lt;/li&gt;

 &lt;li&gt;
     Added script query for unmodified IK target positions
 &lt;/li&gt;

 &lt;li&gt;
     Started on alternate controls for creating animations
 &lt;/li&gt;

 &lt;li&gt;
     Fixed frustum culling issue for duplicated objects
 &lt;/li&gt;

 &lt;li&gt;
     Improved undo
 &lt;/li&gt;

 &lt;li&gt;
     Testing out lying-down animations using IK
 &lt;/li&gt;
&lt;/ul&gt;
&lt;div style='text-align:center;font-size:80%;margin:1em 0;'&gt;&lt;a href="http://cdn.wolfire.com/blog/alpha/a88.jpg"&gt;&lt;img src="http://cdn.wolfire.com/blog/alpha/a88thumb.jpg" alt="Overgrowth Alpha 88" /&gt;&lt;/a&gt;&lt;br /&gt;

&lt;/div&gt;

&lt;p&gt;Thanks as always for all the support!  See you guys in &lt;a href="http://www.wolfire.com/irc"&gt;IRC&lt;/a&gt; and the &lt;a href="http://forums.wolfire.com"&gt;forums&lt;/a&gt;.
&lt;/p&gt;
        &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=-sLT6wh5Dfo:TmLOXSm2jiU:PE2Ei85r0XQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?i=-sLT6wh5Dfo:TmLOXSm2jiU:PE2Ei85r0XQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=-sLT6wh5Dfo:TmLOXSm2jiU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=-sLT6wh5Dfo:TmLOXSm2jiU:bnS3RViFzaE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=bnS3RViFzaE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WolfireGames/~4/-sLT6wh5Dfo" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://blog.wolfire.com/2010/07/Overgrowth-Alpha-88</feedburner:origLink></entry>
    
    <entry>
        <title>Cyberpunk sketches</title>
        <link rel="alternate" type="text/html" href="http://feeds.wolfire.com/~r/WolfireGames/~3/QXlnn7nHyf8/Cyberpunk-sketches" />
        <id>tag:blog.wolfire.com,2009:post:173001</id>
        <updated>2010-07-17T04:16:51Z</updated>
        <published>2010-07-17T04:16:51Z</published>
        <author>
            <name>Aubrey Serr</name>
            <uri>http://blog.wolfire.com/</uri>
        </author>
        <content type="html">
            &lt;p&gt;Here at Wolfire we think it's a good idea to keep thinking of new ideas for games (as we mentioned in this &lt;a href="http://blog.wolfire.com/2009/03/gestating-ideas-for-new-games/"&gt;blog post&lt;/a&gt;), because you never know when you will hit on something cool. Because of the 10-year anniversary of Deus Ex, I have been thinking a lot about the cyberpunk setting, so I decided to do a few concepts and a test asset to explore some of those ideas.
&lt;/p&gt;
&lt;p&gt;First, here are some sketches of robots that inhabit this setting:
&lt;/p&gt;
&lt;div  style='text-align:center;font-size:80%;margin:1em 0;'&gt;
    &lt;a  href="http://cdn.wolfire.com/blog/gameideas/mechs.jpg
"&gt;
        &lt;img  src="http://cdn.wolfire.com/blog/gameideas/mechs-thumb.jpg" alt="cyberpunk"  /&gt;
     &lt;/a&gt;
&lt;/div&gt;

&lt;div  style='text-align:center;font-size:80%;margin:1em 0;'&gt;
    &lt;a  href="http://cdn.wolfire.com/blog/gameideas/civBots.jpg
"&gt;
        &lt;img  src="http://cdn.wolfire.com/blog/gameideas/civBots-thumb.jpg
" alt="cyberpunk"  /&gt;
     &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;Next are some thumbnail sketches of the humans who live and fight here:
&lt;/p&gt;
&lt;div  style='text-align:center;font-size:80%;margin:1em 0;'&gt;
    &lt;a  href="http://cdn.wolfire.com/blog/gameideas/soldiers.jpg
"&gt;
        &lt;img  src="http://cdn.wolfire.com/blog/gameideas/soldiers-thumb.jpg
" alt="cyberpunk"  /&gt;
     &lt;/a&gt;
&lt;/div&gt;

&lt;div  style='text-align:center;font-size:80%;margin:1em 0;'&gt;
    &lt;a  href="http://cdn.wolfire.com/blog/gameideas/streetNinja.jpg
"&gt;
        &lt;img  src="http://cdn.wolfire.com/blog/gameideas/streetNinja-thumb.jpg
" alt="cyberpunk"  /&gt;
     &lt;/a&gt;
&lt;/div&gt;

&lt;div  style='text-align:center;font-size:80%;margin:1em 0;'&gt;
    &lt;a  href="http://cdn.wolfire.com/blog/gameideas/tanks.jpg
"&gt;
        &lt;img  src="http://cdn.wolfire.com/blog/gameideas/tanks-thumb.jpg
" alt="cyberpunk"  /&gt;
     &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;These quick drawings are good for comparing the shapes and silhouettes of the different character, but we need more color and detail to really show off their different styles:
&lt;/p&gt;
&lt;div  style='text-align:center;font-size:80%;margin:1em 0;'&gt;
    &lt;a  href="http://cdn.wolfire.com/blog/gameideas/punkSoldier.jpg
"&gt;
        &lt;img  src="http://cdn.wolfire.com/blog/gameideas/punkSoldier-thumb.jpg" alt="cyberpunk"  /&gt;
     &lt;/a&gt;
&lt;/div&gt;

&lt;div  style='text-align:center;font-size:80%;margin:1em 0;'&gt;
    &lt;a  href="http://cdn.wolfire.com/blog/gameideas/StudyGirl.jpg
"&gt;
        &lt;img  src="http://cdn.wolfire.com/blog/gameideas/StudyGirl-thumb.jpg
" alt="cyberpunk"  /&gt;
     &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;Finally, I made a 3D character asset to test out hand-painted shading:
&lt;/p&gt;
&lt;div  style='text-align:center;font-size:80%;margin:1em 0;'&gt;
    &lt;a  href="http://cdn.wolfire.com/blog/gameideas/Traveler2.jpg"&gt;
        &lt;img  src="http://cdn.wolfire.com/blog/gameideas/Traveler2-thumb.jpg" alt="cyberpunk"  /&gt;
     &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;I hope you like these sketches! I still devote almost all of my effort to &lt;a href="http://www.wolfire.com/overgrowth"&gt;Overgrowth&lt;/a&gt;, but I find that sketching out other ideas helps get my mind from getting cluttered with them. Who knows, we might even use them one day! What do you think of these sketches? Are these characters you would like to see in a game one day?
&lt;/p&gt;
        &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=QXlnn7nHyf8:dtDLOzyP-Rw:PE2Ei85r0XQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?i=QXlnn7nHyf8:dtDLOzyP-Rw:PE2Ei85r0XQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=QXlnn7nHyf8:dtDLOzyP-Rw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=QXlnn7nHyf8:dtDLOzyP-Rw:bnS3RViFzaE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=bnS3RViFzaE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WolfireGames/~4/QXlnn7nHyf8" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://blog.wolfire.com/2010/07/Cyberpunk-sketches</feedburner:origLink></entry>
    
    <entry>
        <title>Indie Water Cooler interview</title>
        <link rel="alternate" type="text/html" href="http://feeds.wolfire.com/~r/WolfireGames/~3/IEDsR8VxeTs/Indie-Water-Cooler-interview" />
        <id>tag:blog.wolfire.com,2009:post:178001</id>
        <updated>2010-07-15T05:58:16Z</updated>
        <published>2010-07-15T05:58:16Z</published>
        <author>
            <name>Jeffrey Rosen</name>
            <uri>http://blog.wolfire.com/</uri>
        </author>
        <content type="html">
            &lt;p&gt;Our buddies at &lt;a href='http://dejobaan.com'&gt;Dejobaan&lt;/a&gt; (makers of the recent  &lt;a href='http://dejobaan.com/aaaaa/'&gt;
   AaaaaAAaaaAAAaaAAAAaAAAAA!!!
   &lt;/a&gt; video game) recently hosted a novel interview with Eitan Glinert, Andy Moore, and me on their new site &lt;a href='http://indiesuperstar.com'&gt;Indie Superstar&lt;/a&gt;.
&lt;/p&gt;
&lt;div style='text-align:center;font-size:80%;margin:1em 0;'&gt;
    &lt;a href="http://indiesuperstar.com/archives/296"&gt;
        &lt;img src="http://cdn.wolfire.com/blog/a/dejo.png" alt="Wolfire on Indie Superstar" /&gt;
    &lt;/a&gt;
    &lt;br /&gt; Click to go to the interview
&lt;/div&gt;

&lt;p&gt;It was really interesting being interviewed by a fellow indie developer, alongside two other developers.  There are some interesting anecdotes.
&lt;/p&gt;
&lt;p&gt;Check it out here: &lt;a href='http://indiesuperstar.com/archives/296'&gt;Indie Water Cooler&lt;/a&gt;.
&lt;/p&gt;
        &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=IEDsR8VxeTs:sYRW-4a6yJc:PE2Ei85r0XQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?i=IEDsR8VxeTs:sYRW-4a6yJc:PE2Ei85r0XQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=IEDsR8VxeTs:sYRW-4a6yJc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=IEDsR8VxeTs:sYRW-4a6yJc:bnS3RViFzaE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=bnS3RViFzaE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WolfireGames/~4/IEDsR8VxeTs" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://blog.wolfire.com/2010/07/Indie-Water-Cooler-interview</feedburner:origLink></entry>
    
    <entry>
        <title>Overgrowth Alpha 87</title>
        <link rel="alternate" type="text/html" href="http://feeds.wolfire.com/~r/WolfireGames/~3/3DNFGUptO1k/Overgrowth-Alpha-87" />
        <id>tag:blog.wolfire.com,2009:post:177001</id>
        <updated>2010-07-13T08:56:24Z</updated>
        <published>2010-07-13T08:56:24Z</published>
        <author>
            <name>Jeffrey Rosen</name>
            <uri>http://blog.wolfire.com/</uri>
        </author>
        <content type="html">
            &lt;p&gt;Here is what is new in &lt;a href="http://www.wolfire.com/overgrowth"&gt;Overgrowth&lt;/a&gt; in the 87th weekly alpha.  If you are confused what a weekly alpha is, or even what Overgrowth is, please read our fancy &lt;a href="http://blog.wolfire.com/2009/02/overgrowth-faq/"&gt;FAQ&lt;/a&gt;.  Basically, we are developing a massive video game from the ground up -- we are able to do this completely independently by accepting &lt;a href="http://www.wolfire.com/overgrowth/preorder"&gt;preorders&lt;/a&gt; for the game before it's done!
&lt;/p&gt;
&lt;div style="text-align:center;"&gt;
&lt;a href="http://www.wolfire.com/overgrowth"&gt;&lt;img src="http://cdn.wolfire.com/blog/og520.png" alt="Overgrowth" /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;As you might have noticed from the lack of blog updates this week, it has been unusually slow.  This is because David was visiting San Francisco this week for his (and my) birthday.  We were in &lt;a href='http://blog.wolfire.com/2009/06/inspiration-from-nature-in-sierra-city/'&gt;Sierra City&lt;/a&gt; for a good chunk of the week, so coding was not optimal.  He is back in position now and we should be back in business!
&lt;/p&gt;
&lt;p&gt;Here are a few highlights from the source repository:
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
     Improved automatic bone weights
 &lt;/li&gt;

 &lt;li&gt;
     Fixed file manipulation issues without admin access
 &lt;/li&gt;

 &lt;li&gt;
     Better rolling off edges
 &lt;/li&gt;
&lt;/ul&gt;
&lt;div style='text-align:center;font-size:80%;margin:1em 0;'&gt;&lt;a href="http://cdn.wolfire.com/blog/alpha/a87.jpg"&gt;&lt;img src="http://cdn.wolfire.com/blog/alpha/a87thumb.jpg" alt="Overgrowth Alpha 87" /&gt;&lt;/a&gt;&lt;br /&gt;
Some new art assets coming soon in the data pack.
&lt;/div&gt;

&lt;p&gt;Thanks as always for all the support!  See you guys in &lt;a href="http://www.wolfire.com/irc"&gt;IRC&lt;/a&gt; and the &lt;a href="http://forums.wolfire.com"&gt;forums&lt;/a&gt;.
&lt;/p&gt;
        &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=3DNFGUptO1k:9iQUGDgnq2M:PE2Ei85r0XQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?i=3DNFGUptO1k:9iQUGDgnq2M:PE2Ei85r0XQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=3DNFGUptO1k:9iQUGDgnq2M:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=3DNFGUptO1k:9iQUGDgnq2M:bnS3RViFzaE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=bnS3RViFzaE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WolfireGames/~4/3DNFGUptO1k" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://blog.wolfire.com/2010/07/Overgrowth-Alpha-87</feedburner:origLink></entry>
    
    <entry>
        <title>Odds and ends</title>
        <link rel="alternate" type="text/html" href="http://feeds.wolfire.com/~r/WolfireGames/~3/Q9tJnjRx_Q0/Odds-and-ends" />
        <id>tag:blog.wolfire.com,2009:post:172001</id>
        <updated>2010-07-12T06:16:57Z</updated>
        <published>2010-07-12T06:16:57Z</published>
        <author>
            <name>Aubrey Serr</name>
            <uri>http://blog.wolfire.com/</uri>
        </author>
        <content type="html">
            &lt;p&gt;Here are a few odds and ends that I have done that I thought were worth showing off on the blog. The first is a collection of &lt;a href='http://blog.wolfire.com/2009/10/thumbnailing-pros-and-cons/'&gt;thumbnail images&lt;/a&gt; I did for level &lt;a href='http://blog.wolfire.com/2009/04/set-pieces-in-level-design/'&gt;set pieces&lt;/a&gt;. I plan to do a lot more of these, but I'm still trying to come up with cool ideas!
&lt;/p&gt;
&lt;div style='text-align:center;font-size:80%;margin:1em 0;'&gt;
    &lt;a href="http://cdn.wolfire.com/blog/oddsandends/SetPieces.jpg"&gt;
        &lt;img  src="http://cdn.wolfire.com/blog/oddsandends/SetPiecessmall.jpg" alt="set piece thumbs" /&gt;
     &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;You may remember my previous dog clan concept art (&lt;a href='http://blog.wolfire.com/2010/03/Drop-the-hammer/'&gt;here&lt;/a&gt; and &lt;a href='http://blog.wolfire.com/2010/04/Sword-Breaker'&gt;here&lt;/a&gt;). This clan specializes in using the spear in formation tactics. Long ago their clan was saved from certain destruction by the Storm Runner clan, and so they pledged their lives, and the lives of all their descendents, to repaying their debt to clan Storm Runner. As a result of the close association between the clans, the Fartooth clan has developed unique battle tactics that depend on the support of the fast moving Storm Runners.
&lt;/p&gt;
&lt;div style='text-align:center;font-size:80%;margin:1em 0;'&gt;
    &lt;a href="http://cdn.wolfire.com/blog/oddsandends/FarToothClan.jpg"&gt;
        &lt;img src="http://cdn.wolfire.com/blog/oddsandends/FarToothClansmall.jpg" alt="Fartooth clan" /&gt;
     &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;And finally I have drawn up a new &lt;a href='http://blog.wolfire.com/2010/04/Planning-Assets'&gt;plan&lt;/a&gt; for the current set of assets I am working on. Here it is!
&lt;/p&gt;
&lt;div style='text-align:center;font-size:80%;margin:1em 0;'&gt;
    &lt;a href="http://cdn.wolfire.com/blog/oddsandends/CretePlan.jpg"&gt;
        &lt;img src="http://cdn.wolfire.com/blog/oddsandends/CretePlansmall.jpg" alt="Crete plan" /&gt;
     &lt;/a&gt;
&lt;/div&gt;
        &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=Q9tJnjRx_Q0:xR6QrBU1Yrk:PE2Ei85r0XQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?i=Q9tJnjRx_Q0:xR6QrBU1Yrk:PE2Ei85r0XQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=Q9tJnjRx_Q0:xR6QrBU1Yrk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.wolfire.com/~ff/WolfireGames?a=Q9tJnjRx_Q0:xR6QrBU1Yrk:bnS3RViFzaE"&gt;&lt;img src="http://feeds.feedburner.com/~ff/WolfireGames?d=bnS3RViFzaE" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/WolfireGames/~4/Q9tJnjRx_Q0" height="1" width="1"/&gt;</content>
    <feedburner:origLink>http://blog.wolfire.com/2010/07/Odds-and-ends</feedburner:origLink></entry>
    
</feed>
