<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>et1337 makes games</title>
	<atom:link href="http://et1337.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://et1337.wordpress.com</link>
	<description>The finest in indie game development.</description>
	<lastBuildDate>Mon, 30 Jan 2012 02:44:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='et1337.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/296ae2ab77fbb221d0845bb3ed827578?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>et1337 makes games</title>
		<link>http://et1337.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://et1337.wordpress.com/osd.xml" title="et1337 makes games" />
	<atom:link rel='hub' href='http://et1337.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Global Game Jam 2012 Liveblog</title>
		<link>http://et1337.wordpress.com/2012/01/27/global-game-jam-2012-liveblog/</link>
		<comments>http://et1337.wordpress.com/2012/01/27/global-game-jam-2012-liveblog/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 21:59:39 +0000</pubDate>
		<dc:creator>et1337</dc:creator>
				<category><![CDATA[Game design]]></category>

		<guid isPermaLink="false">http://et1337.wordpress.com/?p=411</guid>
		<description><![CDATA[Update: Snakes in a Tower is complete! Downloads with source available for Mac and PC. Friday 4:59pm This is my first Global Game Jam. Super excited. So I&#8217;m going to liveblog it. I&#8217;ll be working on a MacBook, so I decided to port the essentials of my XNA component entity system over to MonoGame. Here&#8217;s what [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=et1337.wordpress.com&amp;blog=8972165&amp;post=411&amp;subd=et1337&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> Snakes in a Tower is complete! <a href="http://globalgamejam.org/2012/snakes-tower">Downloads with source available for Mac and PC</a>.</p>
<p><strong>Friday 4:59pm</strong></p>
<p>This is my first Global Game Jam. Super excited. So I&#8217;m going to liveblog it. I&#8217;ll be working on a MacBook, so I decided to port the essentials of my XNA component entity system over to MonoGame. Here&#8217;s what I got so far!</p>
<p><img class="alignnone" src="http://i.imgur.com/xn8Cdl.jpg" alt="" width="640" height="400" /></p>
<p>Breathtaking, I know.</p>
<p><strong>Saturday 12:20am</strong></p>
<p>Opening meeting was awesome. Heard some fantastic keynotes from fantastic people. We got to hear some great insight from Ian Schreiber before starting (I&#8217;m at the Ohio State jam). The theme has been given to everyone by now, so I&#8217;ll go ahead and say that the theme is this:</p>
<p><img class="aligncenter" src="http://globalgamejam.org/sites/default/files/images/Ouroboros.preview.png" alt="" width="500" height="499" /></p>
<p>We heard a lot of great ideas that seem quite achievable. I think we&#8217;ll see some great things come out of this jam. I had an idea to do a prison game where the goal is to escape and every room is the same, and it turns out the prison is infinite and there&#8217;s no way to escape. Pretty lame idea, but one of the few artists expressed interest and joined my group.</p>
<p>We brainstormed for a while and came up with some interesting ideas. Most interesting was an idea to make the game a bit like Shutter Island. The player begins by strangling a prison guard until he passes out. As he goes through the prison, he finds clues that suggest things are not as they seem. Eventually he discovers that he&#8217;s actually a patient at a mental insitution, and all he has to do to escape is talk to the guard at the beginning.</p>
<p>Interesting idea, but not very related to the theme, and probably out of scope of the game jam. Then suddenly my partner had a great idea that&#8217;s very scalable. It will work with just the basic gameplay elements, but could eventually be expanded to a full-blown title. I won&#8217;t say too much about it yet, but it takes the theme very literally.</p>
<p>My partner and I got along so well that we actually grabbed some food and talked for over an hour and a half. So not the best start as far as getting work done, but honestly the main reason I wanted to do this game jam was to connect with people, and so far that&#8217;s gone great.</p>
<p>Now we&#8217;ve gone our separate ways to work on our individual areas. I&#8217;ll be wrestling with MonoGame and Box2D, and he&#8217;ll be working on some of the art. Tomorrow we have a room in the Ohio Union from 9:00am to 1:00am, and I think it&#8217;s gonna be a great day! I&#8217;m very excited about our game design.</p>
<p>In other news, apparently MonoGame has XACT support in the works&#8230; which might have far-reaching consequences for Project Lemma. But that&#8217;s for another time! For now I have to get to work.</p>
<p><strong>Saturday 2:40am</strong></p>
<p>Box2D.XNA is compiling and I have a sprite displaying. MonoGame is working pretty well. Taking a break from coding to post this masterpiece giving a peek of the final gameplay:</p>
<p><img class="aligncenter" src="http://i.imgur.com/i4qDEl.jpg" alt="" width="640" height="361" /></p>
<p>Basically, it&#8217;s a giant snake tearing through a skyscraper. It lengthens as it eats people. Your goal is to survive and direct the snake by opening doors, building obstacles, etc. Eventually the snake gets long enough that you can trick it into eating its own tail, and then you win!</p>
<p><strong>Saturday 5:03am</strong></p>
<p>Bed time. Got Box2D.XNA working and figured out the SpriteBatch weirdities.</p>
<p style="text-align:center;"><a href="http://i.imgur.com/fKtnY.jpg"><img class="aligncenter" src="http://i.imgur.com/fKtnYl.jpg" alt="" width="640" height="400" /></a></p>
<p style="text-align:left;"><strong>Saturday 12:55pm</strong></p>
<p style="text-align:left;">We started around 9:00am today. We have some artwork in progress (although not in-game yet), and a pretty decent snake. I&#8217;m planning on implementing all the game logic with Box2D sensors sized automatically to our artwork. Here&#8217;s a screenshot.</p>
<p style="text-align:left;"><a href="http://i.imgur.com/kf0OR.png"><img class="aligncenter" src="http://i.imgur.com/kf0ORl.png" alt="" width="640" height="497" /></a></p>
<p style="text-align:left;"><strong>Saturday 7:49pm</strong></p>
<p style="text-align:left;">Hit some frustrating bugs. I was pretty grumpy before I got some Chipotle in me. On the plus side:</p>
<ul>
<li>The snake&#8217;s basic AI is done.</li>
<li>Stairways are basically implemented.</li>
<li>The game has been successfully tested on Mac and PC.</li>
<li>We&#8217;ve got some nifty art now.</li>
<li>The project is officially entitled &#8220;Snakes in a Tower&#8221;. Yep.</li>
</ul>
<p>Here&#8217;s a screenshot:</p>
<p><a href="http://i.imgur.com/uKQmp.png"><img class="aligncenter" src="http://i.imgur.com/uKQmpl.png" alt="" width="640" height="496" /></a></p>
<p><strong>Saturday 9:32pm</strong></p>
<p>Things are finally shaping up! I think I&#8217;ve discovered a fascinating gameplay element. Since the snake gets longer by eating victims, the player has an incentive to feed them to the snake. Originally we were going to have the victims randomly run out of office doors, but now I think it would be better if they only come out when the player actively opens the door. Man, this is going to be a morbid game.</p>
<p><a href="http://i.imgur.com/Xenxi.png"><img class="aligncenter" src="http://i.imgur.com/Xenxil.png" alt="" width="640" height="366" /></a></p>
<p><strong>Sunday 1:24am</strong></p>
<p>Calling it a night. We added the innocent victims AKA python food. When you open an office door they literally explode outward and basically run around like headless chickens. They also have the ability to traverse stairways, resulting in a lot of random door slamming. The victims also tend to stack up and fall to their death in the elevator shafts. All in all, it&#8217;s enormously entertaining.</p>
<p>Also, if you leave a door open to a stairwell, the snake will always take it, smashing the staircase and emerging enthusiastically on the other side. Soon the player will be able to repair the staircases so he and the victims can use them again.</p>
<p>Here&#8217;s a screenshot of the whole fiasco.</p>
<p style="text-align:center;"><a href="http://i.imgur.com/prRme.png"><img class="aligncenter" src="http://i.imgur.com/prRmel.png" alt="" width="640" height="402" /></a></p>
<p>Tomorrow I&#8217;ll finish up the repair functionality, add sounds, a life counter, and polish things like a basic main menu and game over screen. If we have time we&#8217;ll work on a pistol to fight off enraged PETA supporters.</p>
<p>Also, check out this fantastic logo courtesy of our artist!</p>
<p><a href="http://i.imgur.com/i1RVo.jpg"><img class="aligncenter" src="http://i.imgur.com/i1RVol.jpg" alt="" width="640" height="360" /></a></p>
<p><strong>Sunday 9:10pm</strong></p>
<p>Whoops, I sort of went dark today. Busy polishing!</p>
<p><strong>Conclusion</strong></p>
<p>Global Game Jam 2012 has come to a successful end! All the games presented at our local event were fully functional and quite a bit of fun. I ran into some technical difficulties literally at the last minute; we kind of held everyone back. I felt bad, but we were so close to perfection! <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Here&#8217;s a screenshot of the final game:</p>
<p><a href="http://i.imgur.com/QEDPL.jpg"><img class="aligncenter" src="http://i.imgur.com/QEDPLl.jpg" alt="" width="640" height="480" /></a></p>
<p>And here&#8217;s the gameplay trailer:</p>
<p><span style="text-align:center; display: block;"><a href="http://et1337.wordpress.com/2012/01/27/global-game-jam-2012-liveblog/"><img src="http://img.youtube.com/vi/e-53TJtWH3Y/2.jpg" alt="" /></a></span></p>
<p>I learned a lot from this game jam. A lot of people say they learned to start very small and fight feature creep, but I think we had that under control from the get-go. The idea would have been a decent success even with less features than we got done, which is one of the big things I took away from this jam.</p>
<p>If you frequent game development forums, you&#8217;ll often see new people with great ideas and no experience. And everywhere in the threads, in the stickies, in the FAQs, you&#8217;ll see little blurbs telling these people that ideas are worthless, and the real value is in the execution. I think I&#8217;ve bought into this mindset a little too much. Before this jam, I didn&#8217;t realize how long it&#8217;s been since I&#8217;ve actually made a drop-dead simple game that&#8217;s just about pure fun mechanics. I spend most of the time on my game projects writing things like voxel renderers, script engines, and nice editors, features that don&#8217;t directly impact gameplay. I skip right past the gameplay stage and go straight to the hard stuff.</p>
<p>This game jam has taught me how much depth a gameplay mechanic can add to a game. I&#8217;m definitely going to revise my techniques in the future because of it.</p>
<p>The one thing I regret is not spending enough time talking to people and helping them out with their games. I think I would have learned even more if I had done that, and I certainly could have helped other people learn more. I spent most of my time dealing with technical issues which taught me nothing I didn&#8217;t already know. Next time I think I might just float between groups helping people, because if I decide to take responsibility for a project, I now know it will become a matter of personal pride and I&#8217;ll take it way too seriously. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>That&#8217;s all folks! Download the game and source <a href="http://globalgamejam.org/2012/snakes-tower">here</a>. Thanks for reading everyone. Back to Project Lemma next week.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/et1337.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/et1337.wordpress.com/411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/et1337.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/et1337.wordpress.com/411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/et1337.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/et1337.wordpress.com/411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/et1337.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/et1337.wordpress.com/411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/et1337.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/et1337.wordpress.com/411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/et1337.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/et1337.wordpress.com/411/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/et1337.wordpress.com/411/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/et1337.wordpress.com/411/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=et1337.wordpress.com&amp;blog=8972165&amp;post=411&amp;subd=et1337&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://et1337.wordpress.com/2012/01/27/global-game-jam-2012-liveblog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>0.000000 0.000000</georss:point>
		<geo:lat>0.000000</geo:lat>
		<geo:long>0.000000</geo:long>
		<media:content url="http://1.gravatar.com/avatar/f1385752761906e7f9b0008c0c3d699f?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">et1337</media:title>
		</media:content>

		<media:content url="http://i.imgur.com/xn8Cdl.jpg" medium="image" />

		<media:content url="http://globalgamejam.org/sites/default/files/images/Ouroboros.preview.png" medium="image" />

		<media:content url="http://i.imgur.com/i4qDEl.jpg" medium="image" />

		<media:content url="http://i.imgur.com/fKtnYl.jpg" medium="image" />

		<media:content url="http://i.imgur.com/kf0ORl.png" medium="image" />

		<media:content url="http://i.imgur.com/uKQmpl.png" medium="image" />

		<media:content url="http://i.imgur.com/Xenxil.png" medium="image" />

		<media:content url="http://i.imgur.com/prRmel.png" medium="image" />

		<media:content url="http://i.imgur.com/i1RVol.jpg" medium="image" />

		<media:content url="http://i.imgur.com/QEDPLl.jpg" medium="image" />
	</item>
		<item>
		<title>Quick update &#8211; Alpha inbound soon!</title>
		<link>http://et1337.wordpress.com/2012/01/14/quick-update-alpha-inbound-soon/</link>
		<comments>http://et1337.wordpress.com/2012/01/14/quick-update-alpha-inbound-soon/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 19:01:14 +0000</pubDate>
		<dc:creator>et1337</dc:creator>
				<category><![CDATA[Coding]]></category>

		<guid isPermaLink="false">http://et1337.wordpress.com/?p=391</guid>
		<description><![CDATA[This week was a lot of under the hood improvements. The voxel engine got a TON of performance optimizations, which allow my Nvidia GTX 260 to render my test scene at 100-200 FPS. Screenshots: New features: Rough-draft tutorial level with instructions and whatnot. Fullscreen toggling on-the-fly by hitting F11 Rudimentary fog effect Performance optimizations: Voxels [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=et1337.wordpress.com&amp;blog=8972165&amp;post=391&amp;subd=et1337&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div>
<p>This week was a lot of under the hood improvements. The voxel engine got a TON of performance optimizations, which allow my Nvidia GTX 260 to render my test scene at 100-200 FPS.</p>
<p><strong>Screenshots:</strong><br />
<img src="http://i.imgur.com/eVnERl.jpg" alt="" /></p>
<p><img src="http://i.imgur.com/SwT2Al.jpg" alt="" /></p>
<p><img src="http://i.imgur.com/rDBq4l.jpg" alt="" /></p>
<p><img src="http://i.imgur.com/mWw2il.jpg" alt="" /></p>
<p><strong>New features:</strong></p>
<ul>
<li>Rough-draft tutorial level with instructions and whatnot.</li>
<li>Fullscreen toggling on-the-fly by hitting F11</li>
<li>Rudimentary fog effect</li>
</ul>
<p><strong>Performance optimizations:</strong></p>
<ul>
<li>Voxels are now rendered as surfaces, rather than complete cubes. This lets me cull a lot of unnecessary geometry.</li>
<li>Voxels are now split into chunks. This lets me easily implement frustum culling and view distance, which helps tremendously with shadow map rendering as well.</li>
<li>I fixed some bugs in the voxel modification code, making voxel modifications of up to 100-150 cells practically instantaneous.</li>
<li>Shadow maps and reflections are now rendered every other frame. It&#8217;s a hack, but the important thing is that the gameplay is responsive.</li>
</ul>
<p>My biggest development challenge was my battle with fullscreen toggling and graphics resource management. Switching from fullscreen to windowed mode, the entire XNA GraphicsDevice is invalidated, along with every vertex buffer, texture, shader, everything. So that was interesting.</p>
<p>Just a quick update this time. Expect a playable alpha soon! Very soon!</p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/et1337.wordpress.com/391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/et1337.wordpress.com/391/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/et1337.wordpress.com/391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/et1337.wordpress.com/391/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/et1337.wordpress.com/391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/et1337.wordpress.com/391/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/et1337.wordpress.com/391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/et1337.wordpress.com/391/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/et1337.wordpress.com/391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/et1337.wordpress.com/391/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/et1337.wordpress.com/391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/et1337.wordpress.com/391/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/et1337.wordpress.com/391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/et1337.wordpress.com/391/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=et1337.wordpress.com&amp;blog=8972165&amp;post=391&amp;subd=et1337&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://et1337.wordpress.com/2012/01/14/quick-update-alpha-inbound-soon/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point>0.000000 0.000000</georss:point>
		<geo:lat>0.000000</geo:lat>
		<geo:long>0.000000</geo:long>
		<media:content url="http://1.gravatar.com/avatar/f1385752761906e7f9b0008c0c3d699f?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">et1337</media:title>
		</media:content>

		<media:content url="http://i.imgur.com/eVnERl.jpg" medium="image" />

		<media:content url="http://i.imgur.com/SwT2Al.jpg" medium="image" />

		<media:content url="http://i.imgur.com/rDBq4l.jpg" medium="image" />

		<media:content url="http://i.imgur.com/mWw2il.jpg" medium="image" />
	</item>
		<item>
		<title>Digital art, Facebook 3D Graph Explorer, and more Project Lemma</title>
		<link>http://et1337.wordpress.com/2011/12/30/digital-art-facebook-3d-graph-explorer-and-more-project-lemma/</link>
		<comments>http://et1337.wordpress.com/2011/12/30/digital-art-facebook-3d-graph-explorer-and-more-project-lemma/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 07:36:43 +0000</pubDate>
		<dc:creator>et1337</dc:creator>
				<category><![CDATA[Art]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Game design]]></category>
		<category><![CDATA[graph explorer]]></category>
		<category><![CDATA[image manipulation]]></category>
		<category><![CDATA[mapping project]]></category>

		<guid isPermaLink="false">http://et1337.wordpress.com/?p=377</guid>
		<description><![CDATA[My last two posts focused on general game development topics, but no longer. It&#8217;s the end of the year, time to look back and review before looking forward to the new year! Digital Art First off, some fun diversions. In my pursuit of an art minor at Ohio State, I took a digital art class [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=et1337.wordpress.com&amp;blog=8972165&amp;post=377&amp;subd=et1337&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div>
<p>My last two posts focused on general game development topics, but no longer. It&#8217;s the end of the year, time to look back and review before looking forward to the new year!</p>
<h2>Digital Art</h2>
<p>First off, some fun diversions. In my pursuit of an art minor at Ohio State, I took a digital art class autumn quarter. The instructor let me use software I was already familiar with, so I didn&#8217;t learn much. But the class gave me the motivation to plonck my butt down and make some art, which is all I really wanted.</p>
<p>One of the assignments was to create a mapping project, which resulted in this monstrosity:</p>
<p><a title="External link" href="http://et1337.files.wordpress.com/2011/12/mapping.jpg" rel="nofollow external"><img src="http://i.imgur.com/i8VCJ.jpg" alt="" /></a></p>
<p>It&#8217;s not the most efficient representation, but it&#8217;s a diagram of all the files I&#8217;ve created while at Ohio State. The brightest circle is the root directory, and the other directories branch off of it. It would have been really interesting (not to mention embarassing) to map out all my files all the way back to 6th grade, but that would have roughly doubled the size of the project. Maybe I&#8217;ll revisit it later. <img src="http://public.gamedev.net//public/style_emoticons/default/wink.png" alt="" /> (Bonus: see if you can find where this image itself was stored! I N C E P T I O N)</p>
<p>Then my teacher wanted me to actually do some &#8220;real&#8221; image manipulation, which resulted in this series:</p>
<p><a title="External link" href="http://i.imgur.com/KhwZk.jpg" rel="nofollow external"><img src="http://i.imgur.com/KhwZkl.jpg" alt="" /></a></p>
<p><a title="External link" href="http://i.imgur.com/0m8Cp.jpg" rel="nofollow external"><img src="http://i.imgur.com/0m8Cpl.jpg" alt="" /></a></p>
<p><a title="External link" href="http://i.imgur.com/xB1cw.jpg" rel="nofollow external"><img src="http://i.imgur.com/xB1cwl.jpg" alt="" /></a></p>
<p>I built the cube scene in Blender 2.5. The pictures were taken with the crappy camera in my Droid X for two reasons. One, it&#8217;s the only camera I had. And two, the gritty low quality would help mask my terrible image editing skills. <img src="http://public.gamedev.net//public/style_emoticons/default/smile.png" alt="" /> The picture of me climbing in the window took around 50 attempts to get right. The hardest part was probably lining up the camera in Blender to match the perspective of the photos. The one thing I really regret now is making the window have zero thickness. I wanted it to look like a portal, but the fact that it has no thickness makes it look a bit like a projection.</p>
<p>For the final project, my instructor said we could do whatever we wanted. So I built something I&#8217;ve been wanting to do for a while: a 3D Facebook Graph explorer! Rather than simply graphing your friends&#8217; mutual relationships, I wanted to graph EVERYTHING. You can see connections between posts, tags, photos, people, places, events, everything.</p>
<p><a title="External link" href="http://i.imgur.com/dzR0A.jpg" rel="nofollow external"><img src="http://i.imgur.com/dzR0Al.jpg" alt="" /></a></p>
<p><a title="External link" href="http://i.imgur.com/bJsDa.jpg" rel="nofollow external"><img src="http://i.imgur.com/bJsDal.jpg" alt="" /></a></p>
<p><iframe width="627" height="353" src="http://www.youtube.com/embed/ydzBjvJuKLU?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>This came about after I saw how easy and awesome the Facebook Graph API is. Really, it&#8217;s amazing. They provide a simple graph explorer for you that shows the kind of JSON data you can get. It&#8217;s fun just to mess around with. <a title="External link" href="http://developers.facebook.com/tools/explorer/" rel="nofollow external">Check it out.</a></p>
<p>I used the super easy <a title="External link" href="http://panda3d.org/" rel="nofollow external">Panda3D engine</a> which allowed me to write everything in Python. For this project, I took advantage of the engine&#8217;s built-in bloom, text rendering, and ODE integration for the nifty physics bounciness. Panda3D also features a browser plugin, which made Facebook integration very easy. I used Facebook&#8217;s Javascript library to do the authentication. All I had to do was pass the access token to the plugin via an embed parameter. Then <a title="External link" href="https://github.com/facebook/python-sdk/blob/master/src/facebook.py" rel="nofollow external">this simple library</a> made it easy to talk to Facebook from Python.</p>
<p>The one feature I really wanted that never panned out was asynchronous HTTP requests. You&#8217;d think something like that would be built into Python, but noooo. And the third-party solutions are generally pretty complex (looking at you, <a title="External link" href="http://twistedmatrix.com/" rel="nofollow external">Twisted</a>). Anyway, <a href="http://et1337.net23.net/src.zip">I&#8217;m posting the source here</a> in case anyone&#8217;s interested. The whole thing weighs in at around 1000 lines.</p>
<h2>Project Lemma</h2>
<p>I&#8217;ve made a lot of progress with Project Lemma over Christmas break. I started by adding <a href="http://et1337.wordpress.com/2011/12/10/c-for-scripting-runtime-compilation/">C# scripting support</a>, followed by some useful tools for scripting, like triggers. I also added an immensely useful animation system similar to the <a title="External link" href="http://code.google.com/p/java-universal-tween-engine/" rel="nofollow external">Universal Tween Engine</a>. It allows you to create transitions in one easy line of code. For example, to double the scale of a sprite over the course of three seconds, you might do something like sprite.Run(new Scale(2.0f, 3.0f)). I learned this from developing on the iPhone, whose success I am convinced is entirely due to nifty transitions.</p>
<p>Combined with the <a href="http://et1337.wordpress.com/2011/06/27/component-binding-behind-the-scenes/">property binding system</a> and the scripting system, it&#8217;s incredibly powerful. Here&#8217;s a script I wrote that runs when the first level loads (it tries to simulate the player &#8220;waking up&#8221;).</p>
<p><pre class="brush: csharp;">
renderer.BlurAmount.Value = 3.0f; // Start out blurry and completely black
renderer.Tint.Value = Vector3.Zero;
script.Add(&quot;Animation&quot;, new Animation
(
  new Animation.Sequence
  (
    new Animation.Vector3MoveTo(renderer.Tint, Vector3.One, 1.0f), // Fade in from black
    new Animation.Execute(delegate() { enablePlayerComponents(true); }), // Enable player movement
    new Animation.FloatMoveTo(renderer.BlurAmount, 0.0f, 4.0f) // Slowly decrease the blur amount
  )
));
</pre></p>
<p>Hopefully this is enough to show how it works. I just pass a property to the animation, and each frame the animation object updates the value of that property. The real power comes in the ability to combine animations together, as demonstrated by the Animation.Sequence. Once the base was done, it was very easy to add classes like Animation.Reverse, Animation.Parallel, Animation.Repeat, and Animation.Speed.</p>
<p>In fact, <a title="External link" href="http://pastebin.com/eNeJG5jq" rel="nofollow external">here&#8217;s the complete source code</a>. It&#8217;s less than 500 lines.</p>
<p>After that, I revamped the editor UI. And by revamped, I mean I built one. The old one was a single text label with a bunch of spaces and newlines to create the illusion of formatting. The new design supports mouse navigation and is much better!</p>
<p><img src="http://i.imgur.com/K602d.jpg" alt="" /></p>
<p>I again took advantage of the property binding system with this UI. For example, in the image above, the fields are displayed in a series of lists. The size of the list depends on the number and size of items contained in the list. So, I just created a binding on the Children property that notifies the list whenever a child is added, replaced, or removed. Whenever a child is added, I add a binding to its Size property that also notifies the list when the child&#8217;s size changes. When notified of these changes, the list marks itself &#8220;dirty&#8221;, which means it needs to recalculate its layout before being drawn.</p>
<p>At first I had it recalculate the layout immediately upon receiving a change notification, but that resulted in the entire UI layout being recalculated every time something changed, which could be multiple times per frame. The dirty flag ensures the layout is only recalculated once per frame.</p>
<p>Next, I quickly threw in a few graphics updates that allow more control over the look and feel. I added support for spotlights (which is easy with deferred shading; it&#8217;s just like point lights, but with a cone instead of a sphere). So now there will be dramatic lighting all over the place. I also got some feedback from the last video (thank you, by the way!) that everything looked a little dark. After fiddling with all the lights in the editor a bit, I realized I needed a better way to tweak the overall color of the game.</p>
<p>I implemented a simple, quick, but effective solution described in a <a title="External link" href="http://http.developer.nvidia.com/GPUGems/gpugems_ch22.html" rel="nofollow external">GPU Gems article</a>. Rather than rolling your own color curve editing tool, it takes advantage of the fact that you already have a fantastic curve editor: it&#8217;s called Photoshop (or GIMP). Here&#8217;s a synopsis of the technique:</p>
<ol>
<li>Take a screenshot of your dark/bland/whatever game.</li>
<li>Edit the curves until you like what you see.</li>
<li>Save the curves profile. GIMP saved mine automatically.</li>
<li>Make a new 256&#215;1 image with a gradient from black to white going left to right. This is called a color or light ramp.</li>
<li>Apply the saved curves profile.</li>
<li>Save the image and use it as a texture in your post-process composite effect.</li>
<li>Use the source code below in the composite effect.</li>
</ol>
<p><pre class="brush: plain;">
float3 inColor = ... // This is your unedited color
float3 outColor;
outColor.r = tex1D(LightRampSampler, inColor.r).r;
outColor.g = tex1D(LightRampSampler, inColor.g).g;
outColor.b = tex1D(LightRampSampler, inColor.b).b;
</pre></p>
<p>DONE. Easy, right? It&#8217;s the poor man&#8217;s tone mapping. Here&#8217;s a screenshot showing off the brighter color correction and deferred spotlights:</p>
<p><a title="External link" href="http://i.imgur.com/FjrWd.jpg" rel="nofollow external"><img src="http://i.imgur.com/FjrWdl.jpg" alt="" /></a></p>
<p>A lot more work has been done on Project Lemma, but it&#8217;s not very exciting. I fixed a lot of memory leaks. There&#8217;s a lot of exciting work happening on the gameplay, but I&#8217;m not quite ready to show it yet. More on that in the new year!</p>
<h2>Work</h2>
<p>I went back to work for two weeks over Christmas break. My co-workers released <a title="External link" href="http://itunes.apple.com/us/app/sarge/id469925180?mt=8" rel="nofollow external">Sarge</a> and <a title="External link" href="http://itunes.apple.com/us/app/oculus-visualizer/id476401530?mt=8" rel="nofollow external">Oculus</a> while I was gone! Check out Sarge, it features some great voice acting and hand-drawn animation.</p>
<p>Anyways, my employer let me take my work machine (MacBook Pro) back to Ohio State so I can continue working. Unbelievable! Now that I have access to my work computer in my free time, I&#8217;d love to take some screenshots and talk about the game I&#8217;m working on, but I&#8217;m not sure what I&#8217;m allowed to say under NDA. I&#8217;ll ask and double check. At any rate, the game should be done by this summer, so stay tuned.</p>
<h2>Wrapping up</h2>
<p>Whew. That was a lot. It&#8217;s late. Needless to say, I&#8217;m excited to keep progressing next year. Hope everyone had a great year as well, and I can&#8217;t wait to continue the journey with you all! Thanks for reading!</p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/et1337.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/et1337.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/et1337.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/et1337.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/et1337.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/et1337.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/et1337.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/et1337.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/et1337.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/et1337.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/et1337.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/et1337.wordpress.com/377/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/et1337.wordpress.com/377/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/et1337.wordpress.com/377/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=et1337.wordpress.com&amp;blog=8972165&amp;post=377&amp;subd=et1337&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://et1337.wordpress.com/2011/12/30/digital-art-facebook-3d-graph-explorer-and-more-project-lemma/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<georss:point>0.000000 0.000000</georss:point>
		<geo:lat>0.000000</geo:lat>
		<geo:long>0.000000</geo:long>
		<media:content url="http://1.gravatar.com/avatar/f1385752761906e7f9b0008c0c3d699f?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">et1337</media:title>
		</media:content>

		<media:content url="http://i.imgur.com/i8VCJ.jpg" medium="image" />

		<media:content url="http://public.gamedev.net//public/style_emoticons/default/wink.png" medium="image" />

		<media:content url="http://i.imgur.com/KhwZkl.jpg" medium="image" />

		<media:content url="http://i.imgur.com/0m8Cpl.jpg" medium="image" />

		<media:content url="http://i.imgur.com/xB1cwl.jpg" medium="image" />

		<media:content url="http://public.gamedev.net//public/style_emoticons/default/smile.png" medium="image" />

		<media:content url="http://i.imgur.com/dzR0Al.jpg" medium="image" />

		<media:content url="http://i.imgur.com/bJsDal.jpg" medium="image" />

		<media:content url="http://i.imgur.com/K602d.jpg" medium="image" />

		<media:content url="http://i.imgur.com/FjrWdl.jpg" medium="image" />
	</item>
		<item>
		<title>C# for scripting &#8211; runtime compilation</title>
		<link>http://et1337.wordpress.com/2011/12/10/c-for-scripting-runtime-compilation/</link>
		<comments>http://et1337.wordpress.com/2011/12/10/c-for-scripting-runtime-compilation/#comments</comments>
		<pubDate>Sat, 10 Dec 2011 18:23:57 +0000</pubDate>
		<dc:creator>et1337</dc:creator>
				<category><![CDATA[Coding]]></category>

		<guid isPermaLink="false">http://et1337.wordpress.com/?p=368</guid>
		<description><![CDATA[I set out to add scripting support to Project Lemma the other day. End result: I can recompile C# scripts on the fly and cache the bytecode in DLLs. The best part: there&#8217;s no special binding code, and no performance hit. There are a lot of .NET scripting solutions out there. Here&#8217;s a few I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=et1337.wordpress.com&amp;blog=8972165&amp;post=368&amp;subd=et1337&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I set out to add scripting support to Project Lemma the other day. End result: I can recompile C# scripts on the fly and cache the bytecode in DLLs. The best part: there&#8217;s no special binding code, and no performance hit.</p>
<p>There are a lot of .NET scripting solutions out there. Here&#8217;s a few I found in my research:<span style="font-size:x-small;"><span style="font-size:x-small;"><span style="font-size:x-small;"><span style="font-size:x-small;"><span style="font-size:x-small;"><br />
</span></span></span></span></span></p>
<ul>
<li><a title="External link" href="http://www.voidspace.org.uk/ironpython/hosting_api.shtml" rel="nofollow external">IronPython</a>. Fully dynamic, kinda slow. Requires marshalling of some kind between the script world and .NET.</li>
<li><a title="External link" href="http://www.csscript.net/" rel="nofollow external">CSScript</a>. Very well supported, includes Visual Studio extensions and shell extensions. Compiles C# to bytecode at runtime, with caching. Scripts cannot be changed once loaded.</li>
<li><a title="External link" href="http://www.lua.org/" rel="nofollow external">Lua</a>. The industry standard in scripting. From what I understand, a little challenging to get working with .NET.</li>
</ul>
<p>I decided to try out C# runtime compilation. Really, C# is the best scripting language I could ask for. If I succeeded, I could keep writing the same code I&#8217;ve been writing, but I could recompile it and see it in action with a keystroke instead of restarting the game!</p>
<h2>Setup</h2>
<p>I started by writing a ScriptBase class that every script would inherit from.</p>
<p><pre class="brush: csharp;">
public class ScriptBase
{
    public static Main main;

    protected static Entity get(string id)
    {
        return ScriptBase.main.GetByID(id);
    }
}</pre></p>
<p>&#8220;Main&#8221; is my main game class. The &#8220;get&#8221; function is a utility function I wanted to provide for the scripting environment. Using the ScriptBase class, I can add utility functions that can speed up the scripting process.</p>
<p>Next, I wrote a prefix and postfix for the script files. This will help the scripts actually look like scripts, i.e. not object oriented, pretty much just a list of statements to execute in order.</p>
<p><pre class="brush: csharp;">
private const string scriptPrefix =
@&quot;
using System;
using Microsoft.Xna.Framework;
// ...

namespace Lemma.Scripts
{
    public class Script : ScriptBase
    {
        public static void Run()
        {
&quot;;

private const string scriptPostfix =
@&quot;
        }
    }
}
&quot;;</pre></p>
<p>The idea is: compile the assembly, reflect it and get the Script type, then call the static Run function on it. Like so:</p>
<p><pre class="brush: csharp;">
Type t = assembly.GetType(&quot;Lemma.Scripts.Script&quot;);
t.GetField(&quot;main&quot;, BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy)
    .SetValue(null, this.main);

this.scriptMethod = t.GetMethod(&quot;Run&quot;, BindingFlags.Static | BindingFlags.Public);
this.scriptMethod.Invoke(null, null);</pre></p>
<h2>Compile some scripts already!</h2>
<p>This code isn&#8217;t particularly interesting, but I&#8217;ll provide it for reference:</p>
<p><pre class="brush: csharp;">
string scriptPath = ...;
string binaryPath = ...;

try
{
    Assembly assembly = null;

    using (Stream stream = TitleContainer.OpenStream(scriptPath))
    using (TextReader reader = new StreamReader(stream))
    {
        CodeDomProvider provider = CodeDomProvider.CreateProvider(&quot;CSharp&quot;);

        CompilerParameters cp = new CompilerParameters
        {
            GenerateExecutable = false,
            GenerateInMemory = false,
            TreatWarningsAsErrors = false,
            OutputAssembly = binaryPath
        };

        // Add references to all the assemblies we might need.
        Assembly executingAssembly = Assembly.GetExecutingAssembly();
        cp.ReferencedAssemblies.Add(executingAssembly.Location);
        foreach (AssemblyName assemblyName in executingAssembly.GetReferencedAssemblies())
            cp.ReferencedAssemblies.Add(Assembly.Load(assemblyName).Location);

        // Invoke compilation of the source file.
        CompilerResults cr = provider.CompileAssemblyFromSource(cp, Script.scriptPrefix + reader.ReadToEnd() + Script.scriptPostfix);

        if (cr.Errors.Count &gt; 0)
        {
            // Display compilation errors.
            StringBuilder builder = new StringBuilder();
            foreach (CompilerError ce in cr.Errors)
            {
                builder.Append(ce.ToString());
                builder.Append(&quot;\n&quot;);
            }
            this.Errors.Value = builder.ToString();
        }
        else
            assembly = cr.CompiledAssembly;
        }
}
catch (Exception e)
{
    this.Errors.Value = e.ToString();
}</pre></p>
<p>The goal here is to compile the script to a DLL so the next time the game runs, I could check if it already exists and just load the DLL instead of recompiling. You can do this with the CompilerParameters object, by setting GenerateInMemory to false and OutputAssembly to the path of the DLL you want to save.</p>
<h2>Recompiling scripts on the fly</h2>
<p>Now the problem is, once we load the DLL, the .NET runtime locks the file until the program exits. There&#8217;s no way to unload the library and unlock the file, unless we put it in a different AppDomain, which means we have to marshal data back and forth between the script and game, which defeats the purpose.</p>
<p>Since one of our requirements is being able to recompile the script without restarting the game, we need to find a way to load the DLL without locking the file. Enter <a title="External link" href="http://msdn.microsoft.com/en-us/library/ms404279.aspx" rel="nofollow external">shadow copying</a>. You can tell the .NET runtime to make a copy of every assembly it loads, and load the &#8220;shadow copy&#8221; instead of the real file. That leaves the original DLL free for us to rewrite. Great, so let&#8217;s just enable shadow copying and we&#8217;re done.</p>
<p>Unfortunately, life is never that easy. You can&#8217;t enable shadow copying for an AppDomain once the domain has been created. You have to create a new AppDomain with the settings you want. Solution: create a tiny launcher executable that creates an AppDomain with shadow copying enabled, and then executes our game in that AppDomain. Here&#8217;s the code:</p>
<p><pre class="brush: csharp;">
public static void Main(string[] args)
{
    string baseDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

    AppDomainSetup setup = new AppDomainSetup();
    setup.ShadowCopyFiles = &quot;true&quot;;
    setup.ApplicationBase = baseDirectory;
    setup.PrivateBinPath = baseDirectory;

    AppDomain domain = AppDomain.CreateDomain(&quot;&quot;, AppDomain.CurrentDomain.Evidence, setup);
    domain.ExecuteAssembly(Path.Combine(baseDirectory, &quot;Lemma.exe&quot;), args);
}</pre></p>
<p>Note: the AppDomainSetup.ShadowCopyDirectories property lets you provide a list of directories to limit the use of shadow copying. I tried to use it to specify that only the script DLLs be shadow copied, but it didn&#8217;t work. YMMV.</p>
<p>Okay, so I fired up my game, compiled the script, went to delete the compiled DLL, annnnnd&#8230; still locked! What&#8217;s going on?</p>
<p>I did some reflecting and found out the C# runtime compiler is kinda janky. It isn&#8217;t, like I assumed, a .NET wrapper around some kind of compiler library. Instead, it actually invokes the C# compiler executable, then loads the resulting DLL. If you specify GenerateInMemory = true, it invokes the compiler with a temporary DLL file path and loads the temp file into memory.</p>
<p>Furthermore, it doesn&#8217;t shadow copy the DLL when it loads it, even if the AppDomain is configured to do so. I&#8217;m guessing this is because it uses a different Assembly.Load function&#8230; don&#8217;t quote me but I believe Assembly.LoadFile <strong>does not</strong> shadow copy files, while Assembly.LoadFrom <strong>does</strong>.</p>
<p>Anyway, to solve this, we can take advantage of the compiler&#8217;s quirky nature here by <strong>not</strong> specifying an output assembly path. That will cause the compiler to generate a temporary file path for the output assembly. So it will still lock the DLL, but we don&#8217;t care, because it&#8217;s a temp file. Luckily, we can still read the DLL even though it&#8217;s locked, so we can copy it to the path we originally wanted for later use.</p>
<p>Here&#8217;s the modifications to our original compilation code:</p>
<p><pre class="brush: csharp;">
CompilerParameters cp = new CompilerParameters
{
    GenerateExecutable = false,
    GenerateInMemory = false,
    TreatWarningsAsErrors = false,
};

// ...

assembly = cr.CompiledAssembly;
File.Copy(cp.OutputAssembly, binaryPath, true);
</pre></p>
<p>The next time we load the script, we&#8217;ll see the DLL at binaryPath and load it. But it will be automatically shadow copied. Mission accomplished!</p>
<h2>Conclusion</h2>
<p>One disadvantage to this approach is that when you recompile a script, the old assembly remains in memory, and the temp DLL file will remain locked until the game exits. Like I said, there&#8217;s no way to unload an assembly from a running AppDomain, and we don&#8217;t want to put the scripts in another AppDomain. Luckily most script assemblies should be pretty small, and we&#8217;ll only be recompiling scripts in the editor, not the final game. I can live with that.</p>
<p>I&#8217;m still in the middle of all this, but I thought I&#8217;d share what I&#8217;ve learned about .NET in the meantime. Might be useful if you&#8217;re thinking about doing something similar. Here&#8217;s two StackOverflow threads that helped me through this process:</p>
<ul>
<li><a title="External link" href="http://stackoverflow.com/questions/1353456/recompile-c-sharp-while-running-without-appdomains" rel="nofollow external">Recompiling code without AppDomains</a></li>
<li><a title="External link" href="http://stackoverflow.com/questions/1067784/c-net-scripting-library" rel="nofollow external">Discussion about different .NET scripting solutions &#8211; lots of links</a></li>
</ul>
<p>Thanks for reading!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/et1337.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/et1337.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/et1337.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/et1337.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/et1337.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/et1337.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/et1337.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/et1337.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/et1337.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/et1337.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/et1337.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/et1337.wordpress.com/368/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/et1337.wordpress.com/368/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/et1337.wordpress.com/368/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=et1337.wordpress.com&amp;blog=8972165&amp;post=368&amp;subd=et1337&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://et1337.wordpress.com/2011/12/10/c-for-scripting-runtime-compilation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point>0.000000 0.000000</georss:point>
		<geo:lat>0.000000</geo:lat>
		<geo:long>0.000000</geo:long>
		<media:content url="http://1.gravatar.com/avatar/f1385752761906e7f9b0008c0c3d699f?s=96&#38;d=identicon&#38;r=PG" medium="image">
			<media:title type="html">et1337</media:title>
		</media:content>
	</item>
	</channel>
</rss>
