<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3041263000917456925</id><updated>2013-05-07T06:13:19.258-05:00</updated><category term='math'/><category term='Wordpress'/><category term='Left 4 Dead'/><category term='Unity 3D'/><category term='movies'/><category term='programming'/><category term='Half Life 2'/><category term='music'/><category term='Unity3D'/><category term='Street Fighter 4'/><category term='Fable'/><category term='game journalism'/><category term='Fallout 3'/><category term='C#'/><category term='game design'/><category term='game development'/><category term='Life'/><category term='SXSW'/><category term='Flower'/><category term='LittleBigPlanet'/><category term='Dreamfall'/><category term='TF2'/><category term='review'/><category term='level design'/><category term='video games as art'/><category term='blogging'/><category term='Valkyria Chronicles'/><category term='GTAIV'/><category term='CoD:WaW'/><title type='text'>Norman Tran's Blog</title><subtitle type='html'>Blogging my experiences while fumbling my way down the path of life.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default?start-index=26&amp;max-results=25'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>49</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-174409938465409564</id><published>2013-01-08T22:56:00.002-06:00</published><updated>2013-01-12T17:42:22.471-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unity 3D'/><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='math'/><title type='text'>The Math Behind Vision Cones in Unity 3D</title><content type='html'>&lt;img border="0" src="http://1.bp.blogspot.com/-7rtP-s2xnvg/UOz3I1oj4nI/AAAAAAAACD8/bl336toXN7g/s1600/Vision%2BCone%2BEnemies%2Bsm.png" width="550" /&gt;&lt;br /&gt;&lt;br /&gt;Lately, I've been tinkering with with an early Unity 3D prototype of a top-down action game and I figured I should implement vision cones to add a stealth element to dealing with the enemies. My initial solution was to stick a cube collider in front of enemies to represent their vision.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Simple, but crude: It doesn't take into account whether the player's character is obscured by a piece of the environment. &lt;br /&gt;&lt;br /&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-4hj0VA0zOhY/UOzv3e7y5QI/AAAAAAAACDg/HpWuzaRvim4/s1600/cube%2Bvision%2Bsm.png" width="550" /&gt;&lt;br /&gt;&lt;br /&gt;I thought to myself, there must be some way to represent a cone through math. In terms of collision, rectangles and cubes are simply sets of points and spheres are a radius and a center point. Are cones much more complex?&lt;br /&gt;&lt;br /&gt;I did some Googling and found this Gamasutra article: &lt;a href="http://www.gamasutra.com/view/feature/2888/building_an_ai_sensory_system_.php?print=1" target="_blank"&gt;http://www.gamasutra.com/view/feature/2888/building_an_ai_sensory_system_.php?print=1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Honestly, I didn't get very far into the article before I found what I needed. Basically we can think of a Cone as a small section of a circle or a slice of pie. To sum it up, building the math behind a the cone involves 3 steps:&lt;br /&gt;&lt;br /&gt;1. Figure out whether the player is within a circle around the enemy. This is determined by finding the magnitude(or square magnitude for efficiency) of a vector from the enemy position to the player position.&lt;br /&gt;&lt;br /&gt;2. Figure out whether the player is standing in the subsection of the circle around the enemy. To determine this, we need to figure out the angle between the enemy's forward vector and the vector from the enemy to the player.&lt;br /&gt;&lt;br /&gt;3. Is the player obscured by anything? To figure this out, shoot a raycast from the enemy to the player. If nothing is in the way, continue.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://docs.google.com/drawings/d/11mTkq6BmxnLldRbXHcWtwM4JZwoLONJ5to2zU8NL4UA/pub?w=550" /&gt;&lt;br /&gt;&lt;i&gt;Above, Angle A is the angle between the Enemy Forward Vector and the vector from the Enemy to the Player. Angle B is the angle between the Enemy Forward Vector and the edge of the Enemy Vision Cone. If the Player is inside the cone Angle A will be smaller than Angle B.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The mathematical function for the angle between two vectors is described in detail here: &lt;a href="http://www.wikihow.com/Find-the-Angle-Between-Two-Vectors" target="_blank"&gt;http://www.wikihow.com/Find-the-Angle-Between-Two-Vectors&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;With this I had the math to write up a function in C# in a Unity script:&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt;&lt;br /&gt;[SerializeField] private float m_halfConeSize = 45f;  &lt;br /&gt;     &lt;br /&gt;//Step 1: With a sphere collider, we can figure out when things are&lt;br /&gt;// within a circle around us.&lt;br /&gt;&lt;br /&gt;void OnTriggerStay(Collider col)  &lt;br /&gt;     {  &lt;br /&gt;         Vector3 myPos = transform.position;  &lt;br /&gt;         Vector3 myVector = transform.forward;  &lt;br /&gt;         Vector3 theirPos = col.transform.position;  &lt;br /&gt;         Vector3 theirVector = theirPos - myPos;  &lt;br /&gt;&lt;br /&gt;         //Step 2: Is the object in front of this enemy?&lt;br /&gt;&lt;br /&gt;         float angle = Vector3.Angle(myVector, theirVector);  &lt;br /&gt;         bool isInFront = angle &amp;lt; m_halfConeSize;  &lt;br /&gt;&lt;br /&gt;         //Step 3: Is there anything obscuring the object?&lt;br /&gt;         Debug.DrawLine(myPos, theirPos, isInFront ? Color.green : Color.red);  &lt;br /&gt;         if(isInFront)  &lt;br /&gt;         {  &lt;br /&gt;             //Bit shift the layermask so that this linecast only hits actors we want it to.  &lt;br /&gt;             int mask = 1 &amp;lt;&amp;lt; LayerMask.NameToLayer ("Env");   &lt;br /&gt;             if(!Physics.Linecast(myPos, theirPos, mask))  &lt;br /&gt;             {  &lt;br /&gt;                 SenseSomething(col.gameObject);  &lt;br /&gt;             }  &lt;br /&gt;         }  &lt;br /&gt;     }  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;I took a few shortcuts. Notably, I did not calculate the distance between the Player and the Enemy in Step 1. Instead, I let Unity's collision system handle that. OnTriggerStay is called every frame as long as the triggering collision continues to happen.&lt;br /&gt;&lt;br /&gt;However, I was not satisfied with the efficiency of this code. The angle-between-two vectors function uses at least a single square root because magnitudes are involved. Square roots are some of the most inefficient math computations. So I used a trick I picked up while working on a physics platformer prototype a few years ago: if I take the equation and use square magnitudes instead of magnitudes, I can eliminate the square roots. &lt;strike&gt;This makes the values from the magnitudes much higher, but the length of the vectors does not factor into the angle.&lt;/strike&gt;&lt;br /&gt;&lt;br /&gt;EDIT: I talked to a&amp;nbsp;&lt;a href="http://www.youtube.com/user/paulsdigitalself" target="_blank"&gt;Math teacher friend &lt;/a&gt; of mine and it turns out, this square magnitude variation on the equation is not equivalent. We can see the two charted on this &lt;a href="http://www.wolframalpha.com/input/?i=arccos%28x%29+vs+arccos%28x%5E2%29" target="_blank"&gt;Wolfram Alpha graph&lt;/a&gt;. For negative X values, I flip the values manually in the code below so the negative values aren't negated. What we have here is a close approximation, but it is not 100% accurate.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://docs.google.com/drawings/d/1FVrsWFkvGxohVncv4Vd51s0wkq1BeQeMS-k_neROZB4/pub?w=550" /&gt;&lt;br /&gt;&lt;i&gt;Where VP is the vector from the Enemy to the Player and VF is the Enemy's forward vector.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-image: URL(http://2.bp.blogspot.com/_z5ltvMQPaa8/SjJXr_U2YBI/AAAAAAAAAAM/46OqEP32CJ8/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; [SerializeField] private float m_halfConeSize = 45f;  &lt;br /&gt;&lt;br /&gt;    //Step 1: With a sphere collider, we can figure out when things are&lt;br /&gt;    // within a circle around us.&lt;br /&gt;&lt;br /&gt;     void OnTriggerStay(Collider col)  &lt;br /&gt;     {  &lt;br /&gt;         Vector3 myPos = transform.position;  &lt;br /&gt;         Vector3 myVector = transform.forward;  &lt;br /&gt;         Vector3 theirPos = col.transform.position;  &lt;br /&gt;         Vector3 theirVector = theirPos - myPos;  &lt;br /&gt;&lt;br /&gt;         //Step 2: Is the object in front of this enemy?&lt;br /&gt;&lt;br /&gt;         float mag = Vector3.SqrMagnitude(myVector) * Vector3.SqrMagnitude(theirVector);  &lt;br /&gt;         &lt;br /&gt;         if(mag == 0f) //prevent divide by zero.  &lt;br /&gt;             return;  &lt;br /&gt;&lt;br /&gt;         float dotProd = Vector3.Dot(myVector, theirPos - myPos);  &lt;br /&gt;         bool isNegative = dotProd &amp;lt; 0f;  &lt;br /&gt;         dotProd = dotProd * dotProd;  &lt;br /&gt;         //The Square operation will eliminate negative values, but we want to retain them.&lt;br /&gt;         if(isNegative)  &lt;br /&gt;             dotProd *= -1;  &lt;br /&gt;&lt;br /&gt;         float sqrAngle = Mathf.Rad2Deg * Mathf.Acos(dotProd/mag);  &lt;br /&gt;         bool isInFront = sqrAngle &amp;lt; m_halfConeSize;  &lt;br /&gt;         if(col.gameObject.name == "Player")  &lt;br /&gt;             print(sqrAngle + " " + col.gameObject.name);  &lt;br /&gt;&lt;br /&gt;         //Step 3: Is there anything obscuring the object?&lt;br /&gt;&lt;br /&gt;         Debug.DrawLine(myPos, theirPos, isInFront ? Color.green : Color.red);  &lt;br /&gt;         if(isInFront)  &lt;br /&gt;         {  &lt;br /&gt;         //Bit shift the layermask so that this linecast only hits actors we want it to.  &lt;br /&gt;             // We want the Env objects to block our linecast.  &lt;br /&gt;             int mask = 1 &amp;lt;&amp;lt; LayerMask.NameToLayer ("Env");   &lt;br /&gt;             if(!Physics.Linecast(myPos, theirPos, mask))  &lt;br /&gt;             {  &lt;br /&gt;                 //print("sensing something " + col.gameObject.name);  &lt;br /&gt;                 SenseSomething(col.gameObject);  &lt;br /&gt;             }  &lt;br /&gt;         }  &lt;br /&gt;     }  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/174409938465409564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=174409938465409564' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/174409938465409564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/174409938465409564'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2013/01/the-math-behind-vision-cones-in-unity-3d.html' title='The Math Behind Vision Cones in Unity 3D'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-7rtP-s2xnvg/UOz3I1oj4nI/AAAAAAAACD8/bl336toXN7g/s72-c/Vision%2BCone%2BEnemies%2Bsm.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-3104753022518917299</id><published>2012-06-24T15:39:00.004-05:00</published><updated>2012-06-24T15:45:04.369-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unity3D'/><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>C# Delegates, Destructors, and Garbage Collection</title><content type='html'>Just this past week, I've encountered a very specific memory leak in Unity 3D that could happen just generally coding in C# as well. Basically the leak involves subscribing to a delegate in a class' Constructor and then unsubscribing to that delegate in the class's Deconstructor. Here's the gist of what I was trying to do. &lt;br /&gt;&lt;br /&gt;&lt;textarea rows="11" cols="60"&gt;public SNController() {     FacebookManager.OnLogin += loggedIn;     FacebookManager.OnLoginFailed += loginFailed; }  ~SNController() {     FacebookManager.OnLogin -= loggedIn;     FacebookManager.OnLoginFailed -= loginFailed; } &lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;I thought this class -- which did not derive from MonoBehaviour -- would act like MonoBehaviours and call its destructor when a scene was changed. That was not the case at all. When I ran the program, the SNController objects would stick around and the loggedIn and loginFailed functions would be called multiple times as I exited and entered scenes. &lt;br /&gt;&lt;br /&gt;It turns out that -- because C# is a managed language -- destructors for objects are called when the objects are cleaned up by the Garbage Collector(GC).  &lt;br /&gt;&lt;br /&gt;So why didn't the GC destroy the SNController object? The problem was that the GC saw that this object was still subscribed to delegates from the FacebookManager class and would not destroy the object. Therefore, the Destructor would never be called, creating a Catch 22 situation. &lt;br /&gt;&lt;br /&gt;I needed to unsubscribe from these delegates explicitly when I was done with the SNController object. To do that, I wrote a Dispose method. &lt;br /&gt;&lt;br /&gt;&lt;textarea rows="5" cols="60"&gt;public Dispose() {     FacebookManager.OnLogin -= loggedIn;     FacebookManager.OnLoginFailed -= loginFailed; } &lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;Since SNController was instantiated as a member of a MonoBehaviour object, I would call SNController's Dispose method in the MonoBehaviour's OnDestroy method. This eliminated any extraneous references from the SNController object at the end of the scene and GC would destroy the object.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/3104753022518917299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=3104753022518917299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/3104753022518917299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/3104753022518917299'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2012/06/c-delegates-destructors-and-garbage.html' title='C# Delegates, Destructors, and Garbage Collection'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-9015329518541514998</id><published>2011-01-30T22:34:00.007-06:00</published><updated>2011-02-03T21:11:18.173-06:00</updated><title type='text'>Global Game Jam 2011 Post Mortem</title><content type='html'>&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/shadowless.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Ah, my second Global Game Jam in a row. You can play our game Shadowless &lt;a href="http://globalgamejam.org/2011/shadowless"&gt;here&lt;/a&gt;. The theme this year was Extinction and my team decided to make a game about light struggling to fend off darkness. At the end of the day Sunday, we ended up with a half done game that only slightly resembled the original design ambitions. Global Game Jam is about experimentation, and what's experimentation without failure? Sure, half the team was also trying to run the our GGJ location while making the game, but we also made some mistakes in the game's development. Here are a few things I learned this year:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Design discussions should only go as far as what you can build now.&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;During the first night of brainstorming, we discussed too many fancy game ideas. At one point the game involved a traveling beam of light, wading its way through an ever encroaching darkness. When it came time to building these grand ideas we found ourselves empty-handed. We hadn't come up with any basic gameplay to hold any of our original ideas up. Questions like, "What is the player doing from second to second?" and "How is this light beam interacting with this light crystal?" were not answered. In the end, all that time spent talking went to waste and most of the original ideas were thrown out.&lt;br /&gt;&lt;br /&gt;On Saturday afternoon we hastily reworked the premise into what the game is now. Inspired by endless survival games like Tilt-to-Live, our game would incorporate the core gameplay of frantically navigating through swarms of enemies while giving the player a primary goal of keeping a light crystal alive at the center of the screen.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Remote team members won't get the full experience.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;My artist friend Mike wanted to participate in our jam remotely from California. While we were able to give him work, he missed out on all the &lt;a href="http://img.photobucket.com/albums/v232/DesertChicken/legoPikachu.jpg"&gt;bleary-eyed fun&lt;/a&gt; and final presentations. I could have streamed him in over Skype, but bandwidth was at a premium. Besides, he would've spent most of the time staring at my sleep deprived face.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. We neglected sound.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've done this during a smaller Game Jam before. In the thick of programming our heads off, we just couldn't be bothered to take a listen to the sound effects that were just submitted. As a result, we couldn't get revisions to the artist in time. Maybe having a dedicated project manager there to organize everything would have helped but -- in the fast paced Game Jam environment -- I imagine that person would end up sitting around bored a lot.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/9015329518541514998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=9015329518541514998' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/9015329518541514998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/9015329518541514998'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2011/01/global-game-jam-2011-post-mortem.html' title='Global Game Jam 2011 Post Mortem'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-3164563376860092340</id><published>2010-07-03T11:36:00.006-05:00</published><updated>2010-07-03T12:29:07.083-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><title type='text'>Gaming is Play. Play is Learning.</title><content type='html'>&lt;img src="http://1.bp.blogspot.com/_a_Wq0_2jpk0/TC9yMHa_uUI/AAAAAAAAAFg/pdqPafgrRIg/s1600/lion.cubs.c01.21.2007.JZ3F8911.b-700.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;At a recent game dev beer night here in Austin, a conversation I was having with my animator friend Jesse stumbled into educational games. Well, it didn't so much stumble itself as much as I steered it. We were talking about our ultimate goals in this industry and I said I wanted to have a positive effect on people beyond entertainment.&lt;br /&gt;&lt;br /&gt;I've peeked into the world of productive gaming recently and the potential inspires me. There is movement in education toward &lt;a href="http://gamesplusblog.com/?p=2670"&gt;virtual classrooms&lt;/a&gt;. Game development can be a &lt;a href="http://www.3dsquared.org/"&gt;"gateway-drug"&lt;/a&gt; for children to learn complex job skills.&lt;br /&gt;&lt;br /&gt;Yet these examples don't involve game design for learning. In terms of games designed to educate the player, my friend countered that educational games just don't work. Exhibit #1: Our shared history in elementary school computer labs solving math problems to cartoon graphics. They didn't work.&lt;br /&gt;&lt;br /&gt;I was then reminded of &lt;a href="http://www.designinginteractions.com/interviews/BingGordon"&gt;Bing Gordon's interview&lt;/a&gt; about founding Electronic Arts in Bill Moggridge's &lt;u&gt;Designing Interactions&lt;/u&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"One of the first precepts of Electronic Arts, that interactive entertainment was going to be as big as traditional music and video entertainment, was driven by our belief that 'play' is a core human value; even a core mammalian value. We used this analogy that lion cubs learn to hung and fight by playing together. We asserted that interactive virtual world gaming would be a way that people could train in a bunch of different ways, socialize, and get same kind of richness that one can get in many aspects of real life, but without the risks."&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;When we play games, we are learning. Just look at how this concept can be applied to &lt;a href="http://www.lostgarden.com/2010/05/wordcamp-2010-why-we-turned-microsoft.html"&gt;Microsoft Word&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'd like to think my ultimate goal is to harness the power of interactive games to make the world a better place.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/3164563376860092340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=3164563376860092340' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/3164563376860092340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/3164563376860092340'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2010/07/gaming-is-play-play-is-learning.html' title='Gaming is Play. Play is Learning.'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_a_Wq0_2jpk0/TC9yMHa_uUI/AAAAAAAAAFg/pdqPafgrRIg/s72-c/lion.cubs.c01.21.2007.JZ3F8911.b-700.jpg' height='72' width='72'/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-3175011369050230699</id><published>2010-02-28T14:31:00.015-06:00</published><updated>2010-03-02T16:55:22.064-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><title type='text'>Flixel Jam 2 Post Mortem</title><content type='html'>&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/GameScreenshot.jpg" border="0" alt="Photobucket" /&gt;&lt;br /&gt;&lt;br /&gt;Last week's &lt;a href="http://autopoetica.org/"&gt;Flixel Game Jam&lt;/a&gt; came and went successfully. I have to admit, we didn't get as far at this Jam as we did in the last &lt;a href="http://gameconn.blogspot.com/2010/01/flixel-jam-postmortem.html"&gt;Flixel Jam&lt;/a&gt;. You can check out the fruits of our labor &lt;a href="http://lilknown.com/FlashGame/FlxJam2.swf"&gt;here&lt;/a&gt;. The idea was to create an RTS/Strategy game where the player casts miracles to convert dinosaurs to the player's faith. Along the way, the minions of L. Ron Hubbard seek to thwart you. It seemed like everyone had fun and learned something, but a few factors contributed to delays.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Brainstorming for two hours.&lt;/span&gt;&lt;br /&gt;At the beginning of the last Jam, we brainstormed ideas very informally. We threw ideas out there and chose the one that sounded the most feasible. While this wasn't the most inclusive process, but it was quick. Luckily, no one was very adamant about contributing.&lt;br /&gt;&lt;br /&gt;In contrast, during this Flixel Jam, we attempted a formal brainstorming technique we had learned during the Global Game Jam. It goes like this:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Everyone individually comes up with a random list of concepts, things, and mechanics for 15 minutes.&lt;/li&gt;&lt;li&gt;These lists are compiled and sorted into categories such as Mechanics, Places, and Things. Preferably this should be done on sticky notes for easy sorting.&lt;/li&gt;&lt;li&gt;Then each person combines sets of the sorted concepts into game ideas and pitches them to the team. They must answer three details about each idea: Visual Aesthetic, Game Mechanic, Game Flow, and Game Story.&lt;/li&gt;&lt;li&gt;Group members then discuss and pick the best idea that can be executed in the limited time available.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;One thing we realized after we ran though this process was that it's meant for smaller groups. We had around 10 people attending this Jam. Sorting and pitching the 100 ideas that came flooding in after step two became unwieldy. Even after we moved the process to a Google Doc Spreadsheet, pitching the ideas took too long when everyone had to have a chance at compiling and pitching ideas.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/BrainstormingSpreadsheetsm.png" border="0" alt="Photobucket" /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;AHHHHHHHH!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;By the time we did choose an idea, we were so desperate to move forward, we came up with a mechanic and a story/premise, but did not establish the game flow/loop. Without this, we didn't have as much direction by the end of the day.&lt;br /&gt;&lt;br /&gt;I can't really say which method would be superior for next time. It depends on how many people will be involved. If we're splitting up into groups of less than five people, we can probably do the more formal method.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Less experienced programmers.&lt;/span&gt;&lt;br /&gt;After we were done brainstorming someone asked who was the lead programmer. Since I was the most experienced with Flixel the task fell upon me. Last Flixel Jam we had a few fairly hardcore programmers who had played with Flixel for a good amount of time before hand. Comparatively, most of our programmers had limited experience with Flixel. In the time we had, I attempted to give a sloppy crash-course explanation to how Flixel works. I suppose this programmer deficiency comes with the random collection of Jam participants and the six hour time limit. There simply isn't enough time to learn a new language and develop a complete game in that time. Programmers need to show up prepared.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/FlxJam2Jammerssm.jpg" border="0" alt="Photobucket" /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Photo by Dmitri Wolf.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Starting unprepared.&lt;/span&gt;&lt;br /&gt;SVN, Flex SDK, Flixel, Flash Develop - for programmers all those things need to be downloaded and installed before we begin. Getting everyone set up ate up another hour of our time.&lt;br /&gt;&lt;br /&gt;For the next Jam, we should post on the Flixel Jam site that all participants should be set up with the proper software and be ready to go when they arrive. Furthermore, if programmers want to make a significant contribution, they'll need to play around with Flixel to become familiar with it before showing up as well.&lt;br /&gt;&lt;br /&gt;Despite the challenges we faced we managed to put together a prototype that shows off the group's unique sense of humor and the basic ideas behind our original concept.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/3175011369050230699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=3175011369050230699' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/3175011369050230699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/3175011369050230699'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2010/02/flixel-jam-2-post-mortem.html' title='Flixel Jam 2 Post Mortem'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-1699695334730721758</id><published>2010-02-08T22:27:00.006-06:00</published><updated>2010-03-02T15:05:36.586-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Transitioning to Box2D 2.1: b2Fixtures</title><content type='html'>My game development team got a bit of a shot a few weeks ago when found that our ActionScript 3.0 physics engine, Box2D had released the Alpha version for their 2.1 update called 2.1a. Strangely, the C++ version of Box2D has yet to release this update.&lt;br /&gt;&lt;br /&gt;I actually stumbled into downloading the new version while looking for a way to create multi-shape bodies. I figured the examples that come with the Box2D source would show me how. Boy was I in for a surprise: what were all these b2Fixtures doing in the code?&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One of the many changes in Box2D 2.1a are the new b2Fixtures. Fixtures replace b2ShapDef's from 2.0.&lt;br /&gt;&lt;br /&gt;The b2Fixtures must be used to associate b2Shape's with b2Body's. In addition they now hold values such as friction, restitution, density, isSensor, etc.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var bodyDef:b2BodyDef = new b2BodyDef();&lt;br /&gt;bodyDef.type = b2Body.b2_dynamicBody;&lt;br /&gt;bodyDef.position.Set(10 / m_physScale, 10 / m_physScale);&lt;br /&gt;&lt;br /&gt;var shapeDef:b2PolygonShape = new b2PolygonShape();&lt;br /&gt;shapeDef.SetAsBox(20 / m_physScale, 20 / m_physScale);&lt;br /&gt;&lt;br /&gt;var fixtureDef:b2FixtureDef = new b2FixtureDef();&lt;br /&gt;fixtureDef.shape = shapeDef;&lt;br /&gt;body = m_world.CreateBody(bodyDef);&lt;br /&gt;body.CreateFixture(fixtureDef);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Note that all the size and position variables are divided by m_physScale. This scales everything down by 30. We found out the hard way that Box2D works on very small scales. If your physical bodies are too big, then the forces needed to affect them will be ridiculously large.&lt;br /&gt;&lt;br /&gt;In this code, b2BodyDef is used to set the Body's position in the world, and define that it is a dynamic body. Notice that b2Body enumerates the Body types. b2PolygonShape defines the square polygon for this Fixture. b2Fixture then takes the Shape. The world creates the Body and then the Body creates the Fixture.&lt;br /&gt;&lt;br /&gt;In order to create compound Bodies with multiple shapes, we need to use b2PolygonShape.SetAsOrientedBox().&lt;br /&gt;&lt;br /&gt;For b2CircleShape's we have to use b2CircleShape.SetLocalPosition().&lt;br /&gt;&lt;br /&gt;Here's some code for creating a Body with both a square and a circle.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var bodyDef:b2BodyDef = new b2BodyDef();&lt;br /&gt;bodyDef.type = b2Body.b2_dynamicBody;&lt;br /&gt;bodyDef.position.Set(10 / m_physScale, 10 / m_physScale);&lt;br /&gt;&lt;br /&gt;var shapeDef:b2PolygonShape = new b2PolygonShape();&lt;br /&gt;shapeDef.SetAsOrientedBox(20/m_physScale, 20/m_physScale, new b2Vec2(0.0, -15.0/m_physScale), 0.5 * Math.PI);&lt;br /&gt;&lt;br /&gt;var circleDef:b2CircleShape = new b2CircleShape();&lt;br /&gt;circleDef.SetRadius(10/m_physScale);&lt;br /&gt;circleDef.SetLocalPosition(new b2Vec2(20 / m_physScale, 20 / m_physScale));&lt;br /&gt;&lt;br /&gt;var fixtureDef:b2FixtureDef = new b2FixtureDef();&lt;br /&gt;fixtureDef.shape = shapeDef;&lt;br /&gt;var fixtureDef2:b2FixtureDef = new b2FixtureDef();&lt;br /&gt;fixtureDef2.shape = circleDef;&lt;br /&gt;body = m_world.CreateBody(bodyDef);&lt;br /&gt;body.CreateFixture(fixtureDef);&lt;br /&gt;body.CreateFixture(fixtureDef2);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Stay tuned for other changes that 2.1a has introduced.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/1699695334730721758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=1699695334730721758' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/1699695334730721758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/1699695334730721758'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2010/02/transitioning-to-box2d-21-b2fixtures.html' title='Transitioning to Box2D 2.1: b2Fixtures'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-5101752913174490575</id><published>2010-02-02T11:26:00.012-06:00</published><updated>2010-03-02T15:06:10.724-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><title type='text'>Global Game Jam 2010: Post Mortem</title><content type='html'>&lt;img style="text-align:center" src="http://img.photobucket.com/albums/v232/DesertChicken/Title.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;I had a great time at last weekend's Global Game Jam 2010. Team Mound of Awesome managed to pump out a Flash stealth game in the 32 hours we had UT. The final build can be found &lt;a href="http://mutualdestruction.org/" target="_blank"&gt;here&lt;/a&gt;. For more games from the Austin location, check out the &lt;a href="http://globalgamejam.org/sites/electronic-game-developers-society/games" target="_blank"&gt;GGJ site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This year's theme at our location was Deception involving a Man, a Plan, and/or a Canal. &lt;a name='more'&gt;&lt;/a&gt;While we were forming teams, I had a few choices. Since I'm interning at Gendai Games, I would've been able to contribute to the their GameSalad team. However, I didn't have a Mac, and I didn't want to be limited by my computer. I had a little experience with XNA and plenty of experience with C# but I wasn't sure I'd be a good fit with that team. Unless I wanted to spend the weekend learning a new language, the Unity and Lua teams were out of the question. The OpenGL, C++ guys were nuts. So I settled on the Flash, Flixel team. Turns out they were three programmers who drove in from the SMU Guildhall in Plano, TX.&lt;br /&gt;&lt;br /&gt;Even when I told the guys I was on board as a programmer, I had some doubts. Who were they? Their initial pirate vs cops SHMUP idea seemed too complex. Thanks to a brainstorming exercise proposed to all the teams, we ended up with a better game idea.&lt;br /&gt;&lt;br /&gt;Each team member would spend 15 minutes brainstorming terms and concepts. Then the next 15 minutes would be spent organizing those organizing this disparate ideas into game concepts based on three core values. Each team member then pitched their concepts and we picked from the best sounding&lt;br /&gt;&lt;br /&gt;Our game ended up being this:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Aesthetic: The art and visual style of the game. Without a solid artist on board, we settled on pixel art to begin with.&lt;/li&gt;&lt;li&gt;Mechanic: The core gameplay that the game is based around. While throwing together words our pile of ideas, I came up with deceiving enemies with masks then donkey punching them.&lt;/li&gt;&lt;li&gt;Flow/Story: How the game is structured. Is it a traditional arcade game with levels and a boss? Is it an endless game where the player goes for the high score? We decided our game would consist of a series of rooms and then a boss at the end. We couldn't decide why our protagonist needed to donkey punch people yet.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="text-align:center" src="http://img.photobucket.com/albums/v232/DesertChicken/MovingMinions.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;As Friday the weekend went on, I learned a few things about making games in such a fast paced environment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Don't plan far ahead.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Our team didn't fall into this trap but I saw that other teams in our location did. One team planed on a very complex puzzle game based on 3D rendered cubes that would determine what direction a ball you threw at them would bounce. They ended up with a 2D action game about knocking over boxes. Another team thought up a robust storyline about a spy who was going to be betrayed in the middle of the game and then he would have to fight his own people who knew all his tricks. By Sunday, that team had barely gotten then engine in place to develop basic gameplay.&lt;br /&gt;&lt;br /&gt;Our team set smaller goals as we met them. We had to come up with story and solutions to problems as we created the game. After we implemented the stealth mechanic, we found that the game was fun enough without the donkey punching. We hadn't figured out what our final boss encounter was going to be till Sunday morning - and we couldn't. We knew wanted to throw a surprise at the player for the final encounter but not much else. By Sunday, we settled on Mr. Mask meeting the CEO of Mask Wax Co., Barry Boss. Players would have to figure out how to get Billy to follow them into a manhole. It was a reversal of the player's need to stay away from the enemy's view circles all game. Suddenly, the player must use them to his advantage. In order to come up with that, we had first to figure out the foundations of our story and what our core mechanic would even feel like.&lt;br /&gt;&lt;br /&gt;&lt;img style="text-align:center" src="http://img.photobucket.com/albums/v232/DesertChicken/BarryBoss.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Pick your battles.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Towards the end of the Game Jam Sunday, I applied the Flixel logo to our game and made it red to match our Mr. Mask title screen. This is what this logo is all about. A cacophony of colors merging into the color of our game's logo. With this much mental investment in a logo, I shouldn't have been surprised by what happened later in the day. Another team member changed the logo from red to white. From within me, I felt a boiling rage bubbling. Wait, I told myself, you're being crazy. Let it go. You have a game to finish.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Tools are only as good as how much people use them.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The shear collaborative power of Wikis, forums, or even Google Wave is meaningless if no one uses it. The lesson is something I've also learned running &lt;a href="http://gamesplusblog.com"&gt;GamesPlusBlog&lt;/a&gt;. Our team needed an information radiator to communicate what tasks needed doing. So we started a Wave and slapped on coding and art tasks we needed into it. It became very apparent that some of our group members were using it and some weren't. The art list simply went ignored and the coding tasks simply weren't complete. The idea behind an information radiator is so people don't have to spend time asking what there is to do. You simply look at the Wave/whiteboard/Wiki/what-have-you and you know. It's particularly effective in long term projects where people may be working remotely. But this is a Game Jam. We're all working around the same table over the course of three days. Asking your team members what needs to be done is 'information radiation' enough. That being said, the Wave was useful for communicating which levels needed to be created because our level designers were using to store a large amount of info that would have been hard to keep track of.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_a_Wq0_2jpk0/S2jymI152LI/AAAAAAAAAFA/IaJO9Cn883E/s400/MissonComplete.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;At the end of the day I'm proud to say TCAOMM was one of the most polished games at our GGJ2010 location.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/5101752913174490575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=5101752913174490575' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/5101752913174490575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/5101752913174490575'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2010/02/global-game-jam-2010-post-mortem.html' title='Global Game Jam 2010: Post Mortem'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_a_Wq0_2jpk0/S2jymI152LI/AAAAAAAAAFA/IaJO9Cn883E/s72-c/MissonComplete.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-5942122662091817554</id><published>2010-01-25T22:04:00.006-06:00</published><updated>2010-03-02T15:06:35.603-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><title type='text'>Flixel Jam Postmortem</title><content type='html'>&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/TerminalVelocityScreen.jpg" border="0" alt="Photobucket"&gt;&lt;br /&gt;&lt;br /&gt;Phil's second &lt;a href="http://autopoetica.org"&gt;Flixel Jam&lt;/a&gt; has come to a close. It was a lot of fun and I hope to see everyone again for another Jam. In the six hours, we managed to pull together a simple game about falling from the sky. Dubbed Terminal Velocity, the game is far from perfect: it's too hard and it needs about a weeks worth of polish. However, that wasn't the point. In six hours we organized a team of ten developers- many of whom had never met before- and created a proof of concept for a simple mechanic. The result of those six hours can be seen &lt;a href="http://lilknown.com/FlashGame/TerminalVelocity.swf"&gt;here&lt;/a&gt;. For those interested, here are links to our &lt;a href="http://bit.ly/7J4K6O"&gt;source code&lt;/a&gt; as well as our &lt;a href="http://bit.ly/5IDFJ3"&gt;current build&lt;/a&gt; of the game.&lt;br /&gt;&lt;br /&gt;Here are some things we've learned:&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Data sharing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We needed to share art assets and code, but we did not come up with a simple way to do it before hand. For art we debated whether to use DropBox or to set up a network share directory on someone's hard drive. I personally preferred DropBox, but using it would've required an email from every person in the room. They would've also needed to download the DropBox client and set up accounts on the website. The large amount of people and late arrivals made all this inconvenient. So we went with the network share. Once the person hosting the files set up a directory to share files, we only had to share the name of their computer. However, the speed of a network share- especially in the library's WiFi- left much to be desired.&lt;br /&gt;&lt;br /&gt;For code, any kind of group programming demands source control. Git seemed like a shoe in, since me and Phil had been using it for a project of our own. However, asking a ragtag group of developers to learn such a command line oriented program would've taken up too much of the Jam's time. The source control had to be fairly easy to use with a public, remote repository we could set up quickly and for free. Subversion and Google Code hosting offered the perfect solution. Tortoise SVN for Windows users is almost a no-brainer to learn and SVN comes pre-installed on Apple computers. With Google Code, we didn't have to set up our own server. Once we started, the speed of our coding impressed me. The source control allowed us to all work independently without stepping on each other's toes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Information sharing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We decided to use a Meebo.com chatroom for sharing the links to the repository, the network share computer names, and other things. The chatroom was easy to set up, but it became a distraction when it momentarily went down with our library's WiFi. Again, we would have to share the room's information with late arrivals. Next time, I'd like to try using a white board to communicate information everyone needs to know.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Working with artists&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We had five programmers and four artists working together. As a career programmer, I'm pretty familiar with working with a team of other programmers. However, video games add the challenge of communicating requirements to artists. While the artists did a great job on music and graphics in the little time they had, their efforts could have been more efficient if we had been better communicating with them. Because we hadn't given them enough direction, they ended up running on their own. At the end of the day, too many music tracks and graphics were created and only a small percentage were implemented into the game. For the next game jam, I'd like to try using the white board to write down specifically which game objects we need assets for.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Looking back at this Jam, the challenges we faced remind me of the challenges Agile programming methodologies try to solve. We had to tackle how to manage a large team of developers all working in tandem. We had to find the proper technology for communicating in an efficient manner. In essence, creating a concept game in six hours is akin to making a scoping-deliverable in a fast paced development environment. Hopefully next time we can be more prepared and our game will be as good, if not better than what we made.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/5942122662091817554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=5942122662091817554' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/5942122662091817554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/5942122662091817554'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2010/01/flixel-jam-postmortem.html' title='Flixel Jam Postmortem'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-255240785167664418</id><published>2010-01-18T01:31:00.010-06:00</published><updated>2010-03-02T15:07:57.486-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Getting started with Git Part 2: Branching and Tracking</title><content type='html'>Part 1 of Getting started with Git can be found &lt;a href="http://gameconn.blogspot.com/2010/01/getting-started-with-git.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now that we've pulled and pushed code with a remote repository it's time get more advanced. One of the more elegant features of Git or any source control is the ability to branch code and work without fear of breaking the original source. With Git's local and remote repositories, the options become even more robust.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Branching Locally:&lt;/h3&gt;&lt;br /&gt;&lt;code&gt;git branch BRANCHNAME&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This command will create a branch called BRANCHNAME in your local repository. After it's created you can use &lt;code&gt;git checkout BRANCHNAME&lt;/code&gt; to move between branches and your original master branch in the local repository.&lt;br /&gt;&lt;br /&gt;You'll want to create branches when you're making drastic changes to the code that won't be easily rolled back. For example, I was working on our game engine and I wanted to implement the just released 2.1a version of the Box2D physics engine. Doing so would break all our code and it would take a couple of days at least to get it all back up and running. I branched so I could work with the working build while I was fixing up the broken one.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Working With Remote Branches:&lt;/h3&gt;&lt;br /&gt;Now, what if you want to push this local branch to the remote repository for the rest of your team to see? You can use this push command to create a new branch on the server&lt;br /&gt;&lt;br /&gt;&lt;code&gt;git push git@github.com:OWNERNAME/REPOSITORYNAME.git LOCALBRANCH:REMOTEBRANCH&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;What if someone else creates a branch that you want to keep track of? You can use this command to create a local branch and checkout their code into this new branch.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;git branch --track LOCALBRANCH origin/REMOTEBRANCH&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The --track argument tells git that any push and pull on this local branch should go to that remote branch. In fact, once you have tracking set up on a branch, simply typing &lt;code&gt;git push&lt;/code&gt; or &lt;code&gt;git pull&lt;/code&gt; will make Git automatically push or pull for that branch without you having to specify the remote address and which branches you want to work with.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/255240785167664418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=255240785167664418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/255240785167664418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/255240785167664418'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2010/01/getting-started-with-git-part-2.html' title='Getting started with Git Part 2: Branching and Tracking'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-2169249689977107426</id><published>2010-01-09T14:26:00.020-06:00</published><updated>2010-03-02T15:08:44.011-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game development'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Getting started with Git</title><content type='html'>One of the toughest things to learn during this game project was actually our source control Git. Phil(our most experienced member) insisted we use Git because of its superiority to SVN and the like. Git allows you to create both a remote and local repository of your code. This means you can branch and merge code all you like on your local repository and only interact with the remote repository when you need to.&lt;br /&gt;&lt;br /&gt;I've used SVN before so I didn't think much about learning Git. Ironically, after a week of trying to share code between the four programmers in our group, Phil was probably the least Git literate in our group. Git's cryptic interface can be pretty unforgiving, especially if you don't know Git's recommended workflow.&lt;br /&gt;&lt;br /&gt;So I decided to write a guide to getting started with Git on Windows.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;First you'll want to download and install Git here: &lt;a href="http://code.google.com/p/msysgit/downloads/list"&gt;http://code.google.com/p/msysgit/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I downloaded the full installer. Once the installation is complete, you should have the options "Git Bash here" and "Git GUI here" in your right click menu. I created a directory to store the project code called "flashproject".  Right clicking on this directory and clicking "Git Bash here" should start a command line pointing at this directory.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Get the code from the remote repository&lt;/h3&gt;&lt;br /&gt;If you've set up a remote git repository with GitHub, you'll need to create an SSH public key to identify yourself. Detailed instructions for creating this key can be found &lt;a href="http://help.github.com/linux-key-setup/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now, you need to get the code from the repository. If that repository is GitHub, we do it with a clone command:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;git clone git@github.com:[repository creator's username]/[repository name].git&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This should download all the code from the remote repository into the directory we created. You only need to clone once. After this first time, you'll use &lt;code&gt;git pull&lt;/code&gt; to get code from the remote repository.&lt;br /&gt;&lt;br /&gt;UPDATE: Well, after trying this out with people in person, it looks like Git won't navigate to the newly cloned directory. We couldn't work with the code through Git until we used &lt;code&gt;cd DIRECTORYNAME&lt;/code&gt; to navigate Git into the working directory. You'll know when you're in the right directory when you see &lt;code&gt;(master)&lt;/code&gt; in the Git command line.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The Git Workflow&lt;/h3&gt;&lt;br /&gt;Once you have all the files on your hard drive, it's time to write some code. Once you're done, you'll need to follow a workflow to make sure your changes and any changes pushed by other coders to the remote repository merge nicely.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Add any additional files to Git's tracking.&lt;/b&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;git add "File path and name."&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Commit changes locally:&lt;/b&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;git commit -am "Commit message"&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Here is the biggest difference between working with Git and SVN for me. You need to commit your changes to the local repository if you want to then push the changes to the remote repository. When me and Phil started using Git, we were confused when it refused to pull remote code because of conflicts. Can't we just merge those conflicts? Turns out Git won't merge your changes with any changes from the remote repository unless your local code is committed first.&lt;br /&gt;&lt;br /&gt;UPDATE: -am will allow you to write the commit message in the command line. If you choose to type &lt;code&gt;git commit -a&lt;/code&gt; the command line will open a text editor so you can write a very detailed message. If you have lots of complex changes, this method may be preferable to the -am shortcut as git automatically generates some change logs in the text. One thing I found confusing about the editor, however, was how you exit. Once you've typed your commit message, you'll need to press ESC on your keyboard to enter its "command mode." Then press shift and ZZ to tell the editor to exit.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Pull the changes from the remote repository.&lt;/b&gt;&lt;br /&gt;Just to check if there have been any changes since you pulled/cloned last.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;git pull&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. Merge the remote and local changes if there were any.&lt;/b&gt;&lt;br /&gt;Git will automatically merge basic differences to code, but you'll need to resolve more complex differences. Git will go into merge mode and modify the files, showing your changes and the remote changes with markers. These markers should look something like this:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; &lt;br /&gt;//Changes from one side. &lt;br /&gt;======= &lt;br /&gt;//Changes made by the other side. &lt;br /&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;You'll have to go into each file and pick and choose which lines of code you want to keep manually. This seems complicated, but unless you and another coder are working on the exact same lines of code at the same time, you won't have to do manual merging very often.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5. Push your merged changes to the remote repository.&lt;/b&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;git push&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This is just a basic start to pulling code from a remote repository, working with your local copy and pushing the changes back to the remote repository. Stay tuned for a guide to working with branches remotely and locally.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/2169249689977107426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=2169249689977107426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/2169249689977107426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/2169249689977107426'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2010/01/getting-started-with-git.html' title='Getting started with Git'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-3362756821939291063</id><published>2009-12-14T00:09:00.011-06:00</published><updated>2010-03-02T15:09:21.375-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Wordpress'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>Listing Authors in a WordpressMU page</title><content type='html'>I'm trying to give my staff more of a presence on &lt;a href="http://gamesplusblog.com" target="_blank"&gt;GamesPlusBlog&lt;/a&gt;. They need to feel ownership of their piece of the blog and their content within.&lt;br /&gt;&lt;br /&gt;One way of doing this is recognizing when authors join the site. For awhile now, our About Us page only displayed the three founders of the blog - Tim, Mike, and me. Ever since we began bringing on new writers, Mike has suggested we list them on this page. Pragmatic programmer that I am, however, I didn't want to have a list to curate every time an Author joined the site.&lt;br /&gt;&lt;br /&gt;The obvious solution is have PHP and Wordpress generate a list of blog authors and display them onto the About Us page. &lt;a name='more'&gt;&lt;/a&gt;Simple enough: a quick Google and I find the &lt;a href="http://codex.wordpress.org/Template_Tags/wp_list_authors" target="_blank"&gt;wp_list_authors&lt;/a&gt; function. However, Wordpress prohibits PHP code from executing on its pages and posts.&lt;br /&gt;&lt;br /&gt;Another Google and the &lt;a href="http://wordpress.org/extend/plugins/exec-php/" target="_blank"&gt;EXEC-PHP plugin&lt;/a&gt; looks like the key. Unfortunately I'm also working with WordpressMU.&lt;br /&gt;&lt;br /&gt;Because WPMU is meant for use as a public, open blogging platform, like Wordpress.com or Blogger, it assumes any of your posts and pages are created by untrustworthy user accounts. Thus, it presents its own set of 'security' filters for posts and pages. We at GPB are using WPMU as a centralized, private blogging platform to simplify management for multiple blogs - not how WPMU was meant to be used. WPMU strips any PHP tags from posts.&lt;br /&gt;&lt;br /&gt;Writing a small Wordpress Plugin to recognize a shortcode was my solution. Much like Wordpress galleries and captions, shortcode can be used in articles and pages without WPMU freaking out on you.&lt;br /&gt;&lt;br /&gt;Here's my code - well sort of. Blogger likes to strip html tags from articles. I had ul tags surrounding the author list in the output string, but those aren't entirely necessary.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;add_shortcode('gpb_listauthors', 'gpb_listauthors_shortcode');&lt;br /&gt;function gpb_listauthors_shortcode($atts, $content=null)&lt;br /&gt;{&lt;br /&gt;    $args = array(&lt;br /&gt;        'echo'=&gt;false,&lt;br /&gt;        'exclude_admin'=&gt;false&lt;br /&gt;    );&lt;br /&gt;    &lt;br /&gt;    $output = wp_list_authors($args);&lt;br /&gt;    &lt;br /&gt;    return $output;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Initially I echoed the code directly in the gpb_listauthors_shortcode function. This would output the list at the top of my Page. The solution was to build a string and return it. Hence the echo = false argument.&lt;br /&gt;&lt;br /&gt;Ah, a nice list of my writers:&lt;br /&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/WordpressAuthorList.jpg" border="0" alt="Photobucket"&gt;</content><link rel='related' href='http://gamesplusblog.com/?page_id=2' title='Listing Authors in a WordpressMU page'/><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/3362756821939291063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=3362756821939291063' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/3362756821939291063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/3362756821939291063'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2009/12/listing-authors-in-wordpressmu-page.html' title='Listing Authors in a WordpressMU page'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-2765231328524916697</id><published>2009-10-27T19:31:00.003-05:00</published><updated>2009-10-27T19:40:02.692-05:00</updated><title type='text'>Daily Routines blog</title><content type='html'>My sister passed me a link to &lt;a href="http://dailyroutines.typepad.com/daily_routines/" target="_blank"&gt;The Daily Routines blog&lt;/a&gt;. Though it's currently stopped, it serves as a collection of interviews with professional writers about their daily routines.&lt;br /&gt;&lt;br /&gt;It seems routine is the key to all creative endeavors. Here's what Michael Lewis has to say:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight:bold;"&gt;Is there any time of day you like to write?&lt;/span&gt;&lt;br /&gt;I've always written best very early in the morning and very late at night. I write very little in the middle of the day. If I do any work in the middle of the day, it is editing what I've written that morning.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What would your ideal writing day look like?&lt;/span&gt;&lt;br /&gt;Left to my own devices, with no family, I'd start writing at seven p.m. and stop at four a.m. That is the way I used to write. I liked to get ahead of everybody. I'd think to myself, "I'm starting tomorrow's workday, tonight!" Late nights are wonderfully tranquil. No phone calls, no interruptions. I like the feeling of knowing that nobody is trying to reach me.&lt;/blockquote&gt; &lt;br /&gt;&lt;br /&gt;See, even professionals have sloppy schedules. It's a comforting thought.</content><link rel='related' href='http://dailyroutines.typepad.com/daily_routines/2009/02/michael-lewis.html' title='Daily Routines blog'/><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/2765231328524916697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=2765231328524916697' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/2765231328524916697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/2765231328524916697'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2009/10/daily-routines-blog.html' title='Daily Routines blog'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-4257879862254450812</id><published>2009-10-13T23:23:00.002-05:00</published><updated>2009-10-13T23:57:38.481-05:00</updated><title type='text'>Motivation in the long haul</title><content type='html'>I apologize for any confusion, dear reader, that this blog's original mission statement and colorful banner may cause you. No longer is this a repository for my video game musings: those have found a new &lt;a href="http://gamesplusblog.com" target="_blank"&gt;home&lt;/a&gt;. What's left is, well, everything else about my life.&lt;br /&gt;&lt;br /&gt;I find myself at a crossroads of sorts. Or maybe I arrived years ago while deciding college major. I closed my eyes, pinched my nose and walked down my chosen path. Now, four years later, I open my eyes to find myself right back where I started.&lt;br /&gt;&lt;br /&gt;In my quest to find my true path I've attempted to dedicate myself to long term projects. Yet how does one find motivation and discipline to achieve such long term goals? It's a challenge foreign to the typical day job. Where motivations come in pay checks and goals come from others.&lt;br /&gt;&lt;br /&gt;I've noticed that independant webcomic artists are the epitome of this desire to break away from the infamous "Day Job." I stumbled upon this &lt;a href="http://www.webcomics.com/forum/post/912528#post913087" target="_blank"&gt;Webcomics.com forum thread about&lt;/a&gt; motivation.&lt;br /&gt;&lt;br /&gt;Here are a few takeaways:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;1) Have a goal. Maybe it's the ending to your story, or enough pages for a collected volume in time to print for the next big convention, or just the big party for yourself that you'll throw when you reach the 1-yr mark. Whatever it is, keep your eyes on the prize, man.&lt;br /&gt;&lt;br /&gt;2) Make friends-- in real life, not just online-- with other cartoonists who are also just starting out, and keep each other motivated. Put up an ad in your local comic shop, for example. If you can't find anyone locally, then get to a convention (small ones are OK) and meet other artists there.&lt;br /&gt;&lt;br /&gt;3) Be obsessed. Disturbing, but true. :-)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Advice applicable to any field.</content><link rel='related' href='http://www.webcomics.com/forum/post/912528#post913087' title='Motivation in the long haul'/><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/4257879862254450812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=4257879862254450812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/4257879862254450812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/4257879862254450812'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2009/10/motivation-in-long-haul.html' title='Motivation in the long haul'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-5385458583885972356</id><published>2009-04-30T23:30:00.004-05:00</published><updated>2010-01-11T13:08:04.786-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>GamesPlusBlog!</title><content type='html'>&lt;a href="http://www.gamesplusblog.com" &gt;&lt;img src="http://gamesplusblog.com/wp-content/themes/gpb/pics/logo.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If I even have any regular readers who are outside my close circle of friends, you must be wondering why I haven't been posting much lately.  Well, I've been working my ass off to get a collaborative blog up called GamesPlusBlog.  For now, it's just a blog with a few writers.  We're still ironing out the design and functionality but hopefully, it'll grow.&lt;br /&gt;&lt;br /&gt;My game writing will be moving to the new site.  What will become of GameConn?  I'm not sure.  Maybe I'll make it a life blog.  Ya'll wanna hear about cooking, music and programming?</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/5385458583885972356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=5385458583885972356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/5385458583885972356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/5385458583885972356'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2009/04/gamesplusblog.html' title='GamesPlusBlog!'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-4487976755640615588</id><published>2009-04-15T16:56:00.006-05:00</published><updated>2009-04-15T17:46:27.767-05:00</updated><title type='text'>Uuugh, BRAID.</title><content type='html'>&lt;img src="http://3.bp.blogspot.com/_a_Wq0_2jpk0/SeZb3ar5ggI/AAAAAAAAAEg/ORTPZB6A_I0/s400/braid1sm.jpg"/&gt;&lt;br /&gt;&lt;br /&gt;Thinking with time is a lot harder than thinking with portals.  Maybe it's difficulty isn't as elegantly balanced as Portal's but that was probably not Jonathan Blow's intention.  I can't seem to take more than an hour of this game without getting a headache.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/4487976755640615588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=4487976755640615588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/4487976755640615588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/4487976755640615588'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2009/04/uuugh-braid.html' title='Uuugh, BRAID.'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_a_Wq0_2jpk0/SeZb3ar5ggI/AAAAAAAAAEg/ORTPZB6A_I0/s72-c/braid1sm.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-8949985589160407331</id><published>2009-04-08T11:05:00.006-05:00</published><updated>2009-04-14T01:35:35.963-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fallout 3'/><title type='text'>Fallout 3's ending</title><content type='html'>&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/fallout3_ca003.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;(Spoilers: This post discusses Fallout 3's missions and ending.)&lt;br /&gt;&lt;br /&gt;Versus CluClu Land &lt;a href="http://versusclucluland.blogspot.com/2009/04/gdc09-wot-i-asked-will-wright-and-what.html"&gt;discusses&lt;/a&gt; the nature of our "domination" of games.  Why can't I be this smart?&lt;br /&gt;&lt;br /&gt;The articles got me thinking.  Did Fallout 3's ending incite such ire because it violated the player's dominance of the game?   The majority of mission outcomes are very much under the player's control.&lt;br /&gt;&lt;br /&gt;Before reaching the end of the game, players decide the fate of Megaton, consider President Eden's ultimatum and make countless other choices.  Is there any doubt players came to expect complete control over their game?  But the ending effectively stripped all of that control from the player.  What was a game so easily dominated and at the whim of the player suddenly and linearly forces him into death for sake of the story.  What was such an ending doing in this game?  The ending is so at odds with the open ended nature of the game that, even if the player possessed an unavoidable alternative to dying, the game bends over backwards to force you to die.&lt;br /&gt;&lt;br /&gt;I can imagine meetings where developers argued about this ending.  It makes sense, poetically.  One could argue, perhaps pretentiously, that sacrificing the player’s character symbolizes the significance of his sacrifice and the impact of death.  And the way the G.E.C.K.’s code was used managed to illicit an emotional response from me.  In that way, Fallout 3’s main quest line succeeds.  But we have to wonder if it was in the right game.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/8949985589160407331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=8949985589160407331' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/8949985589160407331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/8949985589160407331'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2009/04/fallout-3s-ending.html' title='Fallout 3&apos;s ending'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-9140715730378601579</id><published>2009-03-25T23:32:00.008-05:00</published><updated>2009-04-14T00:49:45.946-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='movies'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='SXSW'/><title type='text'>SXSW in tow, pt 3</title><content type='html'>&lt;a href="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/DSC_0083.jpg"&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/bannerpt3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(Pictures by &lt;a href="http://www.flickr.com/photos/desibattousai/sets/72157615875387630/?page=3"&gt;Rama&lt;/a&gt; and &lt;a href="http://www.flickr.com/photos/nerdstar/"&gt;Christina&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Let's talk about the image above. During last year's SXSW I overheard a friend's awe at the crowd in 6th street. I never made it there last year so I was unprepared to witness it on Saturday night. Imagine a downtown street as dense with people as a crowded bar. Imagine it being so crowded that someone decided they needed to chain their bike to the sign post &lt;span style="font-weight:bold;"&gt;above&lt;/span&gt; Mike's bike.&lt;br /&gt;&lt;br /&gt;Anyway, I woke up Saturday morning tired, a bit jealous, and wondering about my criteria for good music.  I was afraid I'd taken in too much.  Like going for one too many helpings of mashed potatoes.  Regardless, there was a lot happening today and I wasn't going to miss out.  I figured following Rama downtown when he left around lunch time would make transportation easier than yesterday.&lt;br /&gt;&lt;br /&gt;Once parked we made our way to the convention center for the guitar trade show.  Afterwards, we sat in the SESAC day stage on the same floor as the trade show.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/Natccu.jpg"&gt;Natccu&lt;br /&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/Natccu.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;"I am Natccu," she said before bursting into her first song.  J-Pop rock with a healthy dose of gurrl.  Really reminiscent of anime soundtrack music, so this one's for my anime watching friends.  I was digging the show but Rama wanted to leave in the middle of it.&lt;br /&gt;&lt;br /&gt;We made our way almost a dozen blocks toward Waterloo park.  This year's Mess With Texas party was already underway.&lt;br /&gt;&lt;br /&gt;Last year the party hosted 3 stages and introduced me to Yeasayers and Black Mountain.  As dusty and crowded as the park was, a long list of prospective bands in one free venue was compelling.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/banner3initial.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;I said in part 1 that you don't go to SXSW to see bands you've heard of.  However in a venue this size, even shrunken down from last year, room is plentiful.  Last year, Mike told me about an indie punk band called &lt;a href="http://www.myspace.com/cursive"&gt;Cursive&lt;/a&gt;.  He wanted to download them but they had removed themselves from emusic.  Their song, The Recluse, found it's way into one of my Pandora stations and I dug it.  I gotta say, they play The Recluse better in person than on the album.  Rama wanted to leave in the middle of this performance too.  I was getting tired of his watching habits.&lt;br /&gt;&lt;br /&gt;I eventually found myself alone and watching the death metal band, &lt;a href="http://www.myspace.com/trashtalkfu"&gt;Trash Talk&lt;/a&gt;.  I actually find death metal fans more intriguing than the music itself.  The mosh pits, the guys jumping at the microphone and even climbing on stage to scream lyrics with the band.  There was a rather death metal looking gentleman to my right holding his dog's leash.  He was bobbing his head, pumping his fist and shouting "Yeah!" on occasion.  We were a few yards away from the mosh pit.  "Damn dogs are the bane of my existence," he said.  His dog lay on the ground, lazily sweeping sand over an electrical cord.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.myspace.com/juicyfruit5116"&gt;Thao Nguyen&lt;br /&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/ThaoNguyen1.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've been debating whether I should mention that she's Vietnamese here.  On the one hand her name gives it away and it's kinda racist of me.  On the other her deep, soulful voice was completely unexpected.  It's reminds me of Cat Power or even Feist.&lt;br /&gt;&lt;br /&gt;At this point I was simply exhausted from inadequate sleep and tons of walking.  My shoes were covered in a fine layer of sand.  &lt;a href="http://www.myspace.com/kingkhantheshrines"&gt;King Khan &amp; The Shrines&lt;/a&gt;, &lt;a href="http://www.myspace.com/japanther"&gt;Japanater&lt;/a&gt;, &lt;a href="http://www.myspace.com/viviangirlsnyc"&gt;Vivian Girls&lt;/a&gt;, and &lt;a href="http://www.myspace.com/thethermals"&gt;Thermals&lt;/a&gt; all probably deserving of some mention but at this point I could hardly parse the music anymore.&lt;br /&gt;&lt;br /&gt;I needed a palate cleanser and it was 10 blocks away.  Christina, Mike and Rama were in line for the movie 500 Days of Summer.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/desibattousai/3384306880/in/set-72157615875387630/"&gt;&lt;img src="http://farm4.static.flickr.com/3554/3384306880_258d0c1a6e.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Gosh, I guess this is just how Rama rolls.  That's &lt;a href="http://www.imdb.com/name/nm0221046/"&gt;Zooey Deschanel&lt;/a&gt;.  The movie itself had surprisingly high production values for such a limited budget.  During the post show talk the writers revealed that director &lt;a href="http://www.flickr.com/photos/desibattousai/3384307838/in/set-72157615875387630/"&gt;Marc Webb's&lt;/a&gt; innovative techniques came from his music video experience.&lt;br /&gt;&lt;br /&gt;With my pallet properly cleansed we walked down the 6th street I described in the first paragraph.  Thumping base emanated form venues left and right.  Bands with no gigs set up and played right on the street.&lt;br /&gt;&lt;br /&gt;Mike looked into one window and saw interesting instruments.  Christina looked in the SXSW brochure and determined Moriarty was playing.  A friend's recommendation and a $5 cover was enough to convince us to go in.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.myspace.com/moriartylands"&gt;Moriarty&lt;br /&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/moriarty3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What can I really say.  They put on the best show I saw all SXSW.  I guess I'm a sucker for talented folk music.  But their stage presence was really the star.  Clever coordination and a charming sense of humor.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/moriarty4.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;You see the man in the red tie?  He's preparing himself for an intense xylophone solo.  During Mess with Texas Rama mused that small shows were better than big concerts.  While watching Moriarty, it was hard to disagree.  Intimate, live music is really the ultimate way to experience the medium.  So much energy of a performance is lost when you cut out the band's presence.  By the end of the set, I was sold.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/Picture34.jpg" /&gt;</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/9140715730378601579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=9140715730378601579' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/9140715730378601579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/9140715730378601579'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2009/03/sxsw-in-tow-pt-3.html' title='SXSW in tow, pt 3'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-3050771403313651135</id><published>2009-03-25T21:44:00.007-05:00</published><updated>2009-03-26T11:34:40.034-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='SXSW'/><title type='text'>SXSW in tow, pt 2</title><content type='html'>&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/bannerpt2-1.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;*UPDATE* The band &lt;a href="http://www.myspace.com/solidgoldband"&gt;Solid Gold&lt;/a&gt; now has a link.&lt;br /&gt;&lt;br /&gt;(Photos by &lt;a href="http://www.flickr.com/photos/nerdstar/" &gt;Christina&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Weekday day shows are probably the easiest shows to see during SXSW. Everyone's at work so there are are no lines and venues typically don't have cover at these times.  That being said I only actually attended one of these shows last week.  Wednesday afternoon, Mike and I were to meet Christina during her lunch hour.  6th street, the epicenter of Austin nightlife, was a sunny and blocked off corridor of music venues.  Its concrete lay in wait for the ensuing crowds.&lt;br /&gt;&lt;br /&gt;The three of us made our way to Emo's but Christina's first choice was a no show.  Off to Plan B:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.myspace.com/herewegomagic"&gt;Here We Go Magic&lt;br /&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/herewegomagic1.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Kinda psychedelic electronic elements mixed in with upbeat rock. They were interesting enough to get an emusic download from me. But now that I have the album, there's a bit too much psychedelic stuff here.&lt;br /&gt;&lt;br /&gt;I've already written what &lt;a href="http://gameconn.blogspot.com/2009/03/sxsw-in-tow-pt-1.html"&gt;I did that night&lt;/a&gt;.  Thursday was busy with work.  Friday was a half-hearted exercise in what not to do at SXSW:&lt;br /&gt;&lt;br /&gt;My sister said again and again, for SXSW, you really need a bike.  Imagine parking in any downtown.  Now imagine parking in a downtown with thousands of people flocking to hundreds of simultaneous music performances.  We began the day trying to figure out or little transportation conundrum.  Mike had a bike, I didn't.  We finally decided to take the bus downtown so Mike could bring his bike along.&lt;br /&gt;&lt;br /&gt;After we met Rama at the Austin convention center for &lt;a href="http://2008.sxsw.com/music/flatstock/"&gt;Flatstock&lt;/a&gt; Mike rode off to meet Christina.  Rama led me the 5 blocks, he'd already walked a few times that day, towards 6th street.  He complained about the further 7 blocks down 6th we'd have to walk to meet with Mike and Christina.  We stopped and ate a $3 slice of pizza and a $4 bratwurst bought with money from an ATM with a $5 transfer fee. (Note to self: be more prepared next time.)  He decided not to follow me the rest of the way.&lt;br /&gt;&lt;br /&gt;After finding Mike and Christina we wandered around the "outskirts" of SXSW trying to catch some good free shows.  We saw a band called &lt;a href="http://www.myspace.com/solidgoldband"&gt;Solid Gold&lt;/a&gt; &lt;del&gt;but I haven't been able to look them up.  Apparently they share a name with a psychedelic soul group.&lt;/del&gt; The band has since contacted me with a link to their site. More psychedelic than I remember the performance being. Sounds pretty good, though.&lt;br /&gt;&lt;br /&gt;The people owning a house in this area had set up an art gallery in their front yard and a venue in the backyard.  We were greeted with a goat.  And these guys:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.myspace.com/flatcarrattlers"&gt;Flatcar Rattlers&lt;br /&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/flatcarrattlers.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Punk-country or something like that. Wish I knew the genre. Not really my cup of tea, though.  After dinner Christina and Mike decided to call it a night. Our initial plan involved me running behind their bikes.  Miraculously, an empty cab passed us as we considered this.&lt;br /&gt;&lt;br /&gt;The next morning I awoke to hear Rama bumped into a few members of Delhi 2 Dublin and partied with them.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/desibattousai/sets/72157615787752971/"&gt;&lt;img src="http://farm4.static.flickr.com/3565/3384216720_89e76b2be5.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bah.&lt;br /&gt;&lt;br /&gt;Saturday would prove to be much better.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/3050771403313651135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=3050771403313651135' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/3050771403313651135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/3050771403313651135'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2009/03/sxsw-in-tow-pt-2.html' title='SXSW in tow, pt 2'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3565/3384216720_89e76b2be5_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-6235694260968506424</id><published>2009-03-23T21:04:00.012-05:00</published><updated>2009-03-23T22:54:59.544-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='SXSW'/><title type='text'>SXSW in tow, pt 1</title><content type='html'>&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/banner.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;(&lt;a href="http://www.flickr.com/photos/desibattousai/sets/72157615780864896/"&gt;Photos by Rama&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Looking at the Austin Chronicle's SXSW insert, one can be easily intimidated by the music schedule.  Like the classifieds of a desperate musical hell, thousands of bands in 9pt font reach at you to lift them from this dank obscurity.&lt;br /&gt;&lt;br /&gt;I came to Austin in the hopes that some new music would find me.  As I scanned the pages before me like some black and white &lt;span style="font-style: italic;"&gt;Where's Waldo&lt;/span&gt;, I realized I would have to find the music myself... or at least stumble upon some. I was not disappointed.&lt;br /&gt;&lt;br /&gt;Wednesday kicked off SXSW's 5 day musical... orgy.  That night Rama and I were dropped off downtown and we made our way to a venue called Back Alley Social.  Rama wanted to see Blue Scholars, a hip hop group.  He'd heard of them before.  In SXSW, if you don't have an expensive, all access badge, you don't come to see bands you've heard of.  Any sliver of popularity will attract crowds the small bar venues are ill prepared to contain.  The resulting line for 'Scholars quickly discouraged Rama.  Off to Plan B.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/List.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Rama led me to a bar called Copa.  The theme Wednesday was international music.  Apparently he was interested in a few of the bands.  Luckily for us, none with the notoriety to pack the venue.  We found a seats in the venue's plentiful space and dug in for the night.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.1001nightsorchestra.com/"&gt;1001 Nights Orchestra&lt;br /&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/1001Nights1.jpg" alt="Photobucket" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The band certainly lived up to the international theme. A variety of exotic instruments produced Middle Eastern and Eastern European folk music.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.last.fm/music/Ashu"&gt;Ashu&lt;br /&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/Ashu1.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now this one's interesting. Ashu is a Bombay band named after it's creator, the guy in the middle with the red glasses.  Apparently a music video is gathering them a bit of popularity in the Indian community. The venue was filling out at this point in the night.  Rama glanced around the room and decried all the Indian faces, as if embarrassed to be at a family reunion.&lt;br /&gt;&lt;br /&gt;The band itself had a surprisingly western rock feel.&lt;br /&gt;&lt;br /&gt;Ashu ended their performance at 1am.  I don't know if there's a correlation between dance music and the wee hours of the night. But when this next band's drummer incited dancing with his Indian drums during the sound check, it was obvious where this performance was going.&lt;br /&gt;&lt;a href="http://delhi2dublin.com/"&gt;&lt;br /&gt;Delhi 2 Dublin&lt;br /&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/Delhi2Dublin1.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What do you get when you mix dance beats, a Korean sitarist in a kilt, a pink haired fiddler, a dhol drummer, and a lead singer flowing in Hindi? A damn good show, apparently.  Delhi 2 Dublin brought the house down in spite of the venue's shoddy sound equipment. Energetic beats that get your head bobbing combined with folksy Celtic and Indian instruments. They were just the kind of innovative music I was hoping to find.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/6235694260968506424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=6235694260968506424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/6235694260968506424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/6235694260968506424'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2009/03/sxsw-in-tow-pt-1.html' title='SXSW in tow, pt 1'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-6602305684998373037</id><published>2009-03-10T15:33:00.004-05:00</published><updated>2009-03-11T14:51:08.539-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Street Fighter 4'/><title type='text'>Battle Report: Losing</title><content type='html'>It's an odd feeling when you realize you're out of your league in a fighting game.  Where you have no tactics or moves to save you from your opponent's torrent of moves.  No branch to grasp as you fall down the side of the cliff.  I wish Capcom would hurry up and implement the update that will allow us to record our matches.  I'd be able to analyze what's going wrong.&lt;br /&gt;&lt;br /&gt;My recent loses with Sakura have left me in a bewildered state.  My old tactics are failing.  Her moves don't seem as effective as other character's.  I'm stuck in a rut.  Naturally, I should pick up another character to gain a new perspective in the game.  But it doesn't feel right.  I love her for her personality but her moves aren't giving me the support I need.  I guess we weren't all that compatible to begin with.  It's not you, Sakura, it's me.  All that time we spent together must feel like a waste.  Hopefully we can be still be friends.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/698211-190_super.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;I'm trading in the spunky school girl for a Sumo wrestler.  He's a charge character so he's more reactionary than Sakura's all out offensive mix-up style.  Not that he has no offense.  Tricking people into the Oichio throw should be fun.  But picking a new character presents a new set of challenges.  I have to spend time to learn Honda. Time that is such a commodity in adult life. Time that veteran Street Fighter players have already clocked. Where's the limit to my abilities in these games? How much time am I prepared to sink into this game?</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/6602305684998373037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=6602305684998373037' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/6602305684998373037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/6602305684998373037'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2009/03/battle-report-losing.html' title='Battle Report: Losing'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-8277514596245478139</id><published>2009-03-06T03:27:00.003-06:00</published><updated>2009-03-26T22:01:18.819-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='movies'/><title type='text'>Thoughts on the Watchmen movie</title><content type='html'>The movie was enjoyable. The visual splendor and recreation of classic scenes was fun. But the changes...  Well, let's just say I understand why Alan Moore &lt;a href="http://latimesblogs.latimes.com/herocomplex/2008/09/alan-moore-on-w.html"&gt;wanted nothing to do with this project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you haven't read it, read it before you watch it.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/8277514596245478139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=8277514596245478139' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/8277514596245478139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/8277514596245478139'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2009/03/thoughts-on-watchmen-movie.html' title='Thoughts on the Watchmen movie'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-6946456693727997887</id><published>2009-03-02T21:58:00.005-06:00</published><updated>2009-03-02T22:16:29.484-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Street Fighter 4'/><category scheme='http://www.blogger.com/atom/ns#' term='Flower'/><category scheme='http://www.blogger.com/atom/ns#' term='video games as art'/><title type='text'>Thoughts on Flower</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_a_Wq0_2jpk0/SaytABFs5qI/AAAAAAAAAEQ/lFhE6-RWEcU/s1600-h/flower-game-screenshot-2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 225px;" src="http://3.bp.blogspot.com/_a_Wq0_2jpk0/SaytABFs5qI/AAAAAAAAAEQ/lFhE6-RWEcU/s400/flower-game-screenshot-2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5308808276566927010" /&gt;&lt;/a&gt;&lt;br /&gt;I got this funny little feeling while playing Flower the first time.  I’m not sure what it is.  It’s like a little tickle in my chest that compels me to hang my mouth in awe.  It makes me hold my controller gentle hands, careful not to pop the fragile bubble of immersion.&lt;br /&gt;&lt;br /&gt;I know what you’re thinking.  What a bunch of artsy-fartsy BS.  And you’re right.  Maybe the feeling comes from a sense of heightened expectations.  I’m making myself extra receptive to this grand experience that was promised to me in press about the game.  I had the same feeling while playing ICO so many years ago.  All the reviewers having emotional reactions and talked about it in “hushed tones.”  I had to own this game.  Same thing happened with Shadow of the Colossus.  My mouth hung open as I rode a horse through its giant planar landscapes.&lt;br /&gt;&lt;br /&gt;I have managed to discard this awe on my subsequent play through.  I am no longer audience to the grand “initial experience.”  I am simply poking into its nooks and crannies to get 100%.&lt;br /&gt;&lt;br /&gt;Hype aside, Flower is a game that manages to relax me.  The combination of soothing musical score, piano key sound effects, and densely colorful images would melt me into my seat.  Well, it would if I didn’t have to keep my arms up and steer the motion controls.  But really, at least in one play session, I could feel my muscles loosening up as I swooshed through the mellow first levels.  Then I loaded up Street Fighter 4 to face the horde of Ken players.  SF4 is adrenaline pumping, heart pounding joystick pumping.  So antithetical to the former experience that it gave me a cramp in my diaphragm.  An experience I repeated today.  I really gotta stop doing that.&lt;br /&gt;&lt;br /&gt;Flower isn’t all swooshing around someone’s inner Happy Place.  As the developer’s intention it lulls me into calmness before kicking up the mood for the climax.  Without spoiling too much, Flower succeeds at eliciting a set of emotions then messes with them.  It’s short.  But so are poems.  I guess we can see Flower as a sort of game design poem.  Verses told in game play semantics.  Someone stop me if I sound too artsy-fartsy.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/6946456693727997887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=6946456693727997887' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/6946456693727997887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/6946456693727997887'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2009/03/thoughts-on-flower.html' title='Thoughts on Flower'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_a_Wq0_2jpk0/SaytABFs5qI/AAAAAAAAAEQ/lFhE6-RWEcU/s72-c/flower-game-screenshot-2.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-4825035935849542725</id><published>2009-02-23T22:12:00.006-06:00</published><updated>2009-03-02T22:16:05.214-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Street Fighter 4'/><title type='text'>Battle Report: Street Fighter 4</title><content type='html'>&lt;img src="http://img.photobucket.com/albums/v232/DesertChicken/Blog%20Graphics/sakura.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;I love silly fighting game characters. Facing off against the stoic badasses that head each fighting game. Throwing out their ridiculous winning animations after their equally ridiculous wins against more "epic" characters. Reminding us to never take these games too seriously.&lt;br /&gt;&lt;br /&gt;That's part of the reason I knew Sakura was my main when I first played her. The other part? Instant gratification. When her dragon punch lands it has at least double the hits as a normal Ken/Ryu punch. Sure the damage is probably the same, but the clack-clack-clack-clack after catching a player off guard and punishing them just feels so good. Her offensive based specials also reminded me of playing Guilty Gear more than other character.&lt;br /&gt;&lt;br /&gt;As you can probably tell, I'm feeling pretty good about this game right now. It's almost a polar opposite to my flagging attempts at playing last night. The day before going online for the first time showed me just how nubish me and my local fighting game clique are. Players saw through my over reliance of special moves and tore me apart. My tactics didn't work and I had nothing to replace them.&lt;br /&gt;&lt;br /&gt;Then my friend came over and tore down anything that was left. His Balrog's punches a bulldozer clearing the rubble. I found myself barely able to do damage to him. But I'm not one to resign after defeat. As cliched as it is, what does not kill you makes you stronger. With the cleared land, I could now build a solid foundation.&lt;br /&gt;&lt;br /&gt;My friend taught me to pay more attention to basic attacks. Landing a sweep on an attacking player is safer and easier than trying to counter the attacks with a special move. With my back to basics style I went online today and picked apart my foes. Only unleashing my former link combo flashiness when the opportunity arose. Sure they were newbies. All bearing exploitable holes in their offense and defense. But it feels good not to lose to them.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/4825035935849542725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=4825035935849542725' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/4825035935849542725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/4825035935849542725'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2009/02/battle-report-street-fighter-4.html' title='Battle Report: Street Fighter 4'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-4359998404717058579</id><published>2009-02-13T17:03:00.005-06:00</published><updated>2009-03-02T22:13:56.148-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Half Life 2'/><title type='text'>Well made HL2 fan film</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/q1UPMEmCqZo&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/q1UPMEmCqZo&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Brings back memories of Half Life 2.  I can't really put into words why I like the Combine of the Half Life universe.  Maybe it's the militaristic, oppression with a Sci-Fi bent.  Maybe its all the little details like how the cops' suits emit sirens when the die.  Something about it just pumps my adrenaline.&lt;br /&gt;&lt;br /&gt;I've got two friends who own the game right now but they're both climbing out of respectable backlogs. I'm afraid they'll both be turned off by the fledgling level design Valve has so refined in Portal and HL2's Episodes.&lt;br /&gt;&lt;br /&gt;Come on, guys. Weather HL2.  Or play through Portal and see the kind of pacing and subtle story telling Valve is capable of achieving.  If you want more, go for the episodes.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/4359998404717058579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=4359998404717058579' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/4359998404717058579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/4359998404717058579'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2009/02/well-made-hl2-fan-film.html' title='Well made HL2 fan film'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3041263000917456925.post-722472138334212578</id><published>2009-02-11T21:48:00.002-06:00</published><updated>2009-03-02T22:14:56.485-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Left 4 Dead'/><title type='text'>Par for course: L4D content free</title><content type='html'>Looks like the Left4Dead content coming out this fall will be &lt;a href="http://www.joystiq.com/2009/02/11/left-4-dead-dlc-4-free/"&gt;free for both consoles&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Microsoft has tried to maintain a certain "market value" for all it's content on the XBLM.  After all, people might be reluctant to pay for a Gears or Halo map pack if they just got their L4D maps for free.  I can imagine how Valve convinced Microsoft to allow this sort of heretical price tag on the XBLM.  "Go ahead and send the message that people should be buying our games on the PC and not the 360 if you really wanna charge for this stuff."&lt;br /&gt;&lt;br /&gt;I'm glad as the game shipped a little light on the content side.  Even by Valve's new "you'll only play a few maps anyway, just look at Counter Strike" ideology, the 4 campaigns are starting to wear thin.&lt;br /&gt;&lt;br /&gt;I'll admit, I was hoping the 360 content wouldn't be free.  I engaged in a some petty PC superiority posturing with a 360 L4D player awhile back.  This news only goes to prove his point.  But really, what does it matter who's right or wrong when we're speculating on the backroom dealings of game publishers?  We all end up on the cover of &lt;a href="http://www.thisamericanlife.org/Radio_Episode.aspx?sched=1251"&gt;Modern Jackass&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://gameconn.blogspot.com/feeds/722472138334212578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3041263000917456925&amp;postID=722472138334212578' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/722472138334212578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3041263000917456925/posts/default/722472138334212578'/><link rel='alternate' type='text/html' href='http://gameconn.blogspot.com/2009/02/par-for-course-l4d-content-free.html' title='Par for course: L4D content free'/><author><name>Norman Tran</name><uri>https://plus.google.com/106890675594591930469</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-rG55JTRqpHs/AAAAAAAAAAI/AAAAAAAACCI/WHZJKqlawXw/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>