<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Goliath Designs</title>
	<atom:link href="http://www.goliathdesigns.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.goliathdesigns.com</link>
	<description>I have not failed. I&#039;ve just found 10,000 ways that won&#039;t work.</description>
	<lastBuildDate>Wed, 16 May 2012 18:28:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Real-Time Software Renderer, all from scratch</title>
		<link>http://www.goliathdesigns.com/2012/03/software-renderer/</link>
		<comments>http://www.goliathdesigns.com/2012/03/software-renderer/#comments</comments>
		<pubDate>Tue, 06 Mar 2012 09:13:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.goliathdesigns.com/?p=916</guid>
		<description><![CDATA[C++, GDI BitBlt, and nothing else! &#8211; under current development Strong graphics knowledge must be built from a strong foundation, and I could think of no better way to learn the entire graphics pipeline than to implement everything from scratch. My real time software renderer uses no graphics library, no math library, and only the [...]]]></description>
			<content:encoded><![CDATA[<style>
<!--
p.info{
	padding: 0px 18px 5px 65px;
}
div#content div#ct-info div.gallery a img {
	margin: 0px;
	padding: 10px;
}
div#content div#ct-info div.gallery a img.shadow_img{
	padding: 0px;
}
div.alignnone{
	float: left;
	/*padding: 5px;*/
	padding-right: 10px;
}
h2.margin{
	/*margin-bottom: 10px;*/
}
a, a:hover, a:active {
	cursor: pointer;
	text-decoration: none;
}
.border{
	border: 3px solid;
}
.small_border{
	border: 2px solid;
}
-->
</style>
<p><script>
<!--
jQuery("document").ready(function() {
	var width = ( typeof( window.innerWidth ) == 'number' ) ? window.innerWidth : document.documentElement.clientWidth;
	var height = ( typeof( window.innerHeight ) == 'number' ) ? window.innerHeight : document.documentElement.clientHeight;
	jQuery("a.popup").fancybox({
	frameWidth: width  * 0.9,
	frameHeight: height  * 0.9 });
	jQuery("a.group").fancybox({ });
});
-->
</script></p>
<p><!-- Info Division --></p>
<div class="alignnone" style="height: 35px;">
<h3 class="margin">C++, GDI BitBlt, and nothing else! &#8211; under current development</h3>
</div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 185px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4"><p style="margin: 0px; padding: 18px;">Strong graphics knowledge must be built from a strong foundation, and I could think of no better way to learn the entire graphics pipeline than to implement everything from scratch.  My real time software renderer uses <b>no graphics library, no math library,</b> and only the lowest level of the win32 API to blit device independent bitmaps to the screen.<br />
<br/>The current build of the software renderer supports OBJ model loading with flat, gouraud, and phong shading.  N number of directional lights are supported as well as a prerender depth buffer pass.<br />
<br/>Currently the rendering pipeline is being restructured to become a true multithreaded lockless deferred software renderer.</p>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

<p></p>
<p><!-- End Info Division --></p>
<p><!-- Dragon Division --></p>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Stanford Dragon</h2>
<p><em style="margin-left: 20px"> in the wild</em>
</div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone"><a title="7K Poly Model, Gouraud shading" class="group" href="/wp-content/uploads/images/renderer/Dragon_Shade_31_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Dragon_Shade_31_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a title="7K Poly Model, Flat shading" class="group" href="/wp-content/uploads/images/renderer/Dragon_Shade_37_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Dragon_Shade_37_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a title="100K Poly Model, Flat shading" class="group" href="/wp-content/uploads/images/renderer/Dragon_Shade_39_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Dragon_Shade_39_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;" class="gallery"><a title="100K Poly Model, Pong shading" class="group" href="/wp-content/uploads/images/renderer/Dragon_Shade_36_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Dragon_Shade_36_Medium.jpg" width="650" height="406" class="shadow_curl br-rd4 border"  style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="shadow_img" style="margin:0 !important;height:15px;width:100%;"></div></a></div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone"><a title="7K Poly Model, Wireframe" class="group" href="/wp-content/uploads/images/renderer/Dragon_Wire_40_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Dragon_Wire_40_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a title="20K Poly Model, Wireframe" class="group" href="/wp-content/uploads/images/renderer/Dragon_Wire_41_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Dragon_Wire_41_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a title="100K Poly Model, Wireframe" class="group" href="/wp-content/uploads/images/renderer/Dragon_Wire_42_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Dragon_Wire_42_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;" class="gallery"><a title="100K Poly Model, Depth Buffer" class="group" href="/wp-content/uploads/images/renderer/Dragon_Depth_46_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Dragon_Depth_46_Medium.jpg" width="650" height="406" class="shadow_curl br-rd4 border"  style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="shadow_img" style="margin:0 !important;height:15px;width:100%;"></div></a></div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone"><a title="7K Poly Model, Depth Buffer Wireframe" class="group" href="/wp-content/uploads/images/renderer/Dragon_Wire_47_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Dragon_Wire_47_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a title="20K Poly Model, Depth Buffer Wireframe" class="group" href="/wp-content/uploads/images/renderer/Dragon_Wire_48_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Dragon_Wire_48_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a title="100K Poly Model, Depth Buffer Wireframe" class="group" href="/wp-content/uploads/images/renderer/Dragon_Wire_49_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Dragon_Wire_49_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<p><!-- End of Dragon Division --></p>
<p><!-- Bunny Division --></p>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Stanford Bunny</h2>
</div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone"><a class="group" href="/wp-content/uploads/images/renderer/Rabbit_Shade_22_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Rabbit_Shade_22_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/renderer/Rabbit_Shade_23_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Rabbit_Shade_23_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/renderer/Rabbit_Shade_24_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Rabbit_Shade_24_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;" class="gallery"><a class="group" href="/wp-content/uploads/images/renderer/Rabbit_Depth_28_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Rabbit_Depth_28_Medium.jpg" width="650" height="406" class="shadow_curl br-rd4 border"  style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="shadow_img" style="margin:0 !important;height:15px;width:100%;"></div></a></div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone"><a class="group" href="/wp-content/uploads/images/renderer/Rabbit_Wire_26_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Rabbit_Wire_26_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/renderer/Rabbit_Wire_27_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Rabbit_Wire_27_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/renderer/Rabbit_Wire_25_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/renderer/Rabbit_Wire_25_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<p><!-- End of Rabbit Division --></p>
<p><!-- Download Division --></p>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Current Build</h2>
</div>
<div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 80px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4"><h3 class="margin">Download</h3>
<h4><a href="/wp-content/uploads/files/renderer/David_Young_Software_Renderer_03_06_11.zip" target="_blank">David_Young_Software_Renderer_03_06_11.zip</a></h4>
</p>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

</div>
<p><!-- End of Download Division --></p>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Glorious Code &#8211; snippet</h2>
</div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 820px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4">
<h3 class="margin">Just a taste</h3>
<div style="font-size:12px">
<pre class="brush: cpp; title: ; notranslate">
void pixel3d::Display::drawBitmap(
    const HDC&amp; hdc, const HBITMAP&amp; bitmap,
    const unsigned int* const frame_buffer ) const
{
    HDC const new_hdc = CreateCompatibleDC(hdc);
    HBITMAP const old_bitmap = (HBITMAP)SelectObject(new_hdc, bitmap);

    SetDIBits(new_hdc, bitmap, 0, height_, frame_buffer, bitmap_info_, DIB_RGB_COLORS);

    if (show_text_){
        if (show_fps_)
            drawFPS(new_hdc);

        for(unsigned int i = 0; i &lt; display_text_.size(); i++){
            text_info info = display_text_[i];
            drawText(new_hdc, info.x, info.y, info.text);
        }
    }

    BitBlt(hdc, 0, 0, width_, height_, new_hdc, 0, 0, SRCCOPY);

    SelectObject(new_hdc, old_bitmap);
    DeleteDC(new_hdc);
}

const int pixel3d::Display::newDIB(
    HDC hdc, HBITMAP* dib_bitmap, BITMAPINFO** bitmap_info,
    const int width, const int height )
{
    void* pvBits;

    //BITMAPINFO bitmap_info;
    (*bitmap_info) = new BITMAPINFO();
    ZeroMemory(&amp;(*bitmap_info)-&gt;bmiHeader, sizeof(BITMAPINFOHEADER));
    (*bitmap_info)-&gt;bmiHeader.biWidth = width;
    (*bitmap_info)-&gt;bmiHeader.biHeight = -height;
    (*bitmap_info)-&gt;bmiHeader.biPlanes = 1;
    (*bitmap_info)-&gt;bmiHeader.biBitCount = 32;
    (*bitmap_info)-&gt;bmiHeader.biCompression = BI_RGB;
    (*bitmap_info)-&gt;bmiHeader.biSize = sizeof(BITMAPINFOHEADER);

    (*dib_bitmap) = CreateDIBSection(hdc, (*bitmap_info),
        DIB_RGB_COLORS, &amp;pvBits, NULL, 0);

    return 0;
}

const int pixel3d::Display::freeDIB( HBITMAP* bitmap )
{
    if (!(*bitmap))
        return -1;

    DeleteObject(*bitmap);
    (*bitmap) = NULL;

    return 0;
}
</pre>
</div>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

]]></content:encoded>
			<wfw:commentRss>http://www.goliathdesigns.com/2012/03/software-renderer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Massively Multithreaded Crowd Simulation &#8211; Paradise</title>
		<link>http://www.goliathdesigns.com/2012/03/crowd-simulation-paradise/</link>
		<comments>http://www.goliathdesigns.com/2012/03/crowd-simulation-paradise/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 10:28:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.goliathdesigns.com/?p=870</guid>
		<description><![CDATA[Crowd Flow, Island Paradise, Multithreading, and more The Paradise tech demo is a massive crowd simulation of a 1000 individual AI&#8217;s all walking toward shared goal locations. Each AI utilizing one of many shared flow maps for navigation, and its own individual steering for avoidance. Once an individual AI actually reaches their goal they will [...]]]></description>
			<content:encoded><![CDATA[<style>
<!--
p.info{
	padding: 0px 18px 5px 65px;
}
div#content div#ct-info div.gallery a img {
	margin: 0px;
	padding: 10px;
}
div#content div#ct-info div.gallery a img.shadow_img{
	padding: 0px;
}
div.alignnone{
	float: left;
	/*padding: 5px;*/
	padding-right: 10px;
}
h2.margin{
	/*margin-bottom: 10px;*/
}
a, a:hover, a:active {
	cursor: pointer;
	text-decoration: none;
}
.border{
	border: 3px solid;
}
.small_border{
	border: 2px solid;
}
-->
</style>
<p><script>
<!--
jQuery("document").ready(function() {
	var width = ( typeof( window.innerWidth ) == 'number' ) ? window.innerWidth : document.documentElement.clientWidth;
	var height = ( typeof( window.innerHeight ) == 'number' ) ? window.innerHeight : document.documentElement.clientHeight;
	jQuery("a.popup").fancybox({
	frameWidth: width  * 0.9,
	frameHeight: height  * 0.9 });
	jQuery("a.group").fancybox({ });
});
-->
</script></p>
<p><!-- Info Division --></p>
<div class="alignnone" style="height: 35px;">
<h3 class="margin">Crowd Flow, Island Paradise, Multithreading, and more</h3>
</div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 185px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4"><p style="margin: 0px; padding: 18px;">The Paradise tech demo is a massive crowd simulation of a 1000 individual AI&#8217;s all walking toward shared goal locations.  Each AI utilizing one of many shared flow maps for navigation, and its own individual steering for avoidance.  Once an individual AI actually reaches their goal they will randomly swap to another goal location and begin walking toward this new location.<br />
<br/>The idea behind Paradise was born from <b>AMD&#8217;s Froblins</b> paper and demo.  The key difference between AMD&#8217;s implementation and Paradise is where multithreading takes place.  In Froblins all threading was offloaded to the GPU while in Paradise all threading was run on the CPU, implemented with Intel&#8217;s Thread Building Blocks.<br />
<br/><b>Shown at the Spring 2011 USC Demo Day</b></p>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

<p></p>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Island</h2>
<p><em style="margin-left: 20px"> in the wild</em>
</div>
<p><!-- End Info Division --></p>
<p><!-- Island Division --></p>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone"><a class="group" href="/wp-content/uploads/images/paradise/04-58-06-82_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/04-58-06-82_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/paradise/04-56-27-82_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/04-56-27-82_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/paradise/04-57-39-83_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/04-57-39-83_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;" class="gallery"><a class="group" href="/wp-content/uploads/images/paradise/04-56-00-85_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/04-56-00-85_Medium.jpg" width="650" height="406" class="shadow_curl br-rd4 border"  style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="shadow_img" style="margin:0 !important;height:15px;width:100%;"></div></a></div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone"><a class="group" href="/wp-content/uploads/images/paradise/05-02-27-82_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/05-02-27-82_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/paradise/05-02-15-81_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/05-02-15-81_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/paradise/05-02-21-87_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/05-02-21-87_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<p><!-- End of Island Division --></p>
<p><!-- Crowd + Video Division --></p>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Masses</h2>
</div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone">
<a class="group" href="/wp-content/uploads/images/paradise/04-55-51-81_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/04-55-51-81_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/paradise/05-01-39-82_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/05-01-39-82_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/paradise/05-02-12-89_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/05-02-12-89_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;" class="gallery"><iframe src="http://player.vimeo.com/video/23152873?title=0&amp;byline=0&amp;portrait=0" width="650" height="366" frameborder="0" class="shadow_curl br-rd4 border"></iframe></div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone">
<a class="group" href="/wp-content/uploads/images/paradise/05-02-06-90_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/05-02-06-90_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/paradise/05-02-09-89_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/05-02-09-89_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/paradise/05-00-24-84_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/05-00-24-84_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;" class="gallery"><a class="group" href="/wp-content/uploads/images/paradise/04-56-09-85_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/04-56-09-85_Medium.jpg" width="650" height="406" class="shadow_curl br-rd4 border"  style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="shadow_img" style="margin:0 !important;height:15px;width:100%;"></div></a></div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone">
<a class="group" href="/wp-content/uploads/images/paradise/04-57-51-83_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/04-57-51-83_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/paradise/05-01-15-87_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/05-01-15-87_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/paradise/05-01-42-89_Large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/paradise/05-01-42-89_Small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<p><!-- End of Crowd + Video Division --></p>
<p><!-- Tech Division --></p>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Tech</h2>
</div>
<div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 700px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4">
<h3 class="margin">Libraries</h3>
<h4> &raquo; Intel Thread Building Blocks</h4>
<p class="info">TBB was used for their general purpose task based threading model.  Each AI was executed in an individual general purpose thread.</p>
<h4> &raquo; Ogre Render</h4>
<p class="info">Ogre was the 3d renderer used to display the simulation.  Post effects like Bloom as well as the Ocean were modified shaders provided by Ogre.</p>
<h4> &raquo; Ogre Animation</h4>
<p class="info">Animating the many characters were performed through Ogre&#8217;s built in animation support.</p>
<h4> &raquo; Havok Physics</h4>
<p class="info">The entire simulation was driven with Intel&#8217;s multithreaded physics engine.  Each AI was supported by a rigid body capsule simulating against a mesh terrain.</p>
<h4> &raquo; OpenSteer</h4>
<p class="info">Local steering for each AI was provided through the OpenSteer library.  Additional wandering, seeking, and local avoidance where used per AI.</p>
<h3 class="margin">Utilities</h3>
<h4> &raquo; World Machine</h4>
<p class="info">An arbitrary terrain generation program that was used to create the Island driving the entire simulation.</p>
<h3 class="margin">Assets</h3>
<h4> &raquo; Loopix-Project</h4>
<p class="info">Provided free tropical trees, shrubs, and palms that litter the large island.</p>
<h4> &raquo; 3DRT</h4>
<p class="info">Purchased the main character model from www.3drt.com</p>
<h4> &raquo; ATB</h4>
<p class="info">Used the song, No Fate, as the background song for the Paradise video.</p>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

</div>
<p><!-- End of Tech Division --></p>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Glorious Code &#8211; snippet</h2>
</div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 740px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4">
<h3 class="margin">Just a taste</h3>
<div style="font-size:12px">
<pre class="brush: cpp; title: ; notranslate">
std::vector&lt;CrowdCharacter*&gt; CrowdSceneCreator::createAIs(
    const unsigned int number,
    const unsigned int lower,
    const unsigned int upper,
    const std::vector&lt;std::vector&lt;Ogre::Vector2&gt; &gt;&amp; excludes){

    unsigned int remaining = number;
    unsigned int x,y;
    float height;
    std::vector&lt;CrowdCharacter*&gt; crowd;

    int x1, x2, y1, y2, y_max, x_max, y_min, x_min;

    while(remaining){
        x = rand() % x_width;
        y = rand() % y_width;

        bool exclude = false;

        for (unsigned int i = 0; i &lt; excludes.size(); i++){
            if (excludes[i].size() != 2)
                continue;
            x1 = excludes[i][0].x;
            y1 = excludes[i][0].y;

            x2 = excludes[i][1].x;
            y2 = excludes[i][1].y;

            y_max = (y1 &gt; y2) ? y1 : y2;
            x_max = (x1 &gt; x2) ? x1 : x2;
            y_min = (y1 &lt; y2) ? y1 : y2;
            x_min = (x1 &lt; x2) ? x1 : x2;

            if (x &lt; x_max &amp;&amp; x &gt; x_min &amp;&amp; y &lt; y_max &amp;&amp; y &gt; y_min){
                exclude = true;
                break;
            }
        }

        if (!exclude){
            height = getHeight(x,y);

            if (height &gt;= lower &amp;&amp; height &lt;= upper){
                crowd.push_back(createAI((float)x,(float)y,CrowdCharacter::TAN_RED));
                remaining--;
            }
        }
    }
    return crowd;
}
</pre>
</div>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

]]></content:encoded>
			<wfw:commentRss>http://www.goliathdesigns.com/2012/03/crowd-simulation-paradise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>USC GamePipe Game Engine AI</title>
		<link>http://www.goliathdesigns.com/2011/02/usc-gamepipe-ai/</link>
		<comments>http://www.goliathdesigns.com/2011/02/usc-gamepipe-ai/#comments</comments>
		<pubDate>Sun, 27 Feb 2011 13:37:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.goliathdesigns.com/?p=612</guid>
		<description><![CDATA[The USC GamePipe Game Engine is a generic game engine created from the past work of many dedicated USC graduates.  Numerous student groups build games, demos, and prototypes from the GGE.  Modules such as UI, to Physics, to Rendering have been integrated into making a robust engine.  One component though has always been severely lacking from the GGE, Artificial Intelligence, <strong>until now</strong>.]]></description>
			<content:encoded><![CDATA[<style>
<!--
div#content div#ct-info div.gallery a img {
	margin: 0px;
	padding: 10px;
}
div#content div#ct-info div.gallery a img.shadow_img{
	padding: 0px;
}
div.alignnone{
	float: left;
	/*padding: 5px;*/
	padding-right: 10px;
}
h2.margin{
	/*margin-bottom: 10px;*/
}
a, a:hover, a:active {
	cursor: pointer;
	text-decoration: none;
}
.border{
	border: 3px solid;
}
.small_border{
	border: 2px solid;
}
-->
</style>
<p><script>
<!--
jQuery("document").ready(function() {
	var width = ( typeof( window.innerWidth ) == 'number' ) ? window.innerWidth : document.documentElement.clientWidth;
	var height = ( typeof( window.innerHeight ) == 'number' ) ? window.innerHeight : document.documentElement.clientHeight;
	jQuery("a.popup").fancybox({
	frameWidth: width  * 0.9,
	frameHeight: height  * 0.9 });
	jQuery("a.group").fancybox({ });
});
-->
</script></p>
<div class="alignnone" style="height: 35px;">
<h3 class="margin">Scripting, Physics, Animation, and more</h3>
</div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 220px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4"><p style="margin: 0px; padding: 18px;">The USC GamePipe Game Engine, GGE, is a generic game engine created from the past work of many dedicated USC graduates.  Numerous student groups build games, demos, and prototypes from the GGE.  Modules such as UI, to Physics, to Rendering have been integrated into making a robust engine.  One component though has always been severely lacking from the GGE, Artificial Intelligence.<br/><br />
In the past, two different teams have attempted to create a robust generalized AI system in the GamePipe Game Engine, which have only lead to multiple failures.<br/><br />
My implementation of the GGE AI was successful not just through long nights of coding, but through working very closely with each and every group responsible for the different systems within the GGE.<br/><br />
Platforms such as Havok, Ogre, OpenSteer, and Lua were all leveraged to allow for a flexible and robust AI system.
</p>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

<p></p>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Creation</h2>
<p><em style="margin-left: 20px"> in the wild</em>
</div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone">
<a class="group" href="/wp-content/uploads/images/gamepipe/seek_large.JPG" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/seek_small.JPG" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/gamepipe/seek_large3.JPG" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/seek_small3.JPG" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/gamepipe/seek_large2.JPG" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/seek_small2.JPG" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;" class="gallery"><a class="group" href="/wp-content/uploads/images/gamepipe/seek_flee_large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/seek_flee_medium.jpg" width="650" height="406" class="shadow_curl br-rd4 border"  style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="shadow_img" style="margin:0 !important;height:15px;width:100%;"></div></a></div>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">running</h2>
</div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone">
<a class="group" href="/wp-content/uploads/images/gamepipe/grid_path_large6.JPG" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/grid_path_small6.JPG" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/gamepipe/grid_path_large9.JPG" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/grid_path_small9.JPG" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/gamepipe/grid_path_large12.JPG" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/grid_path_small12.JPG" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;" class="gallery"><iframe src="http://player.vimeo.com/video/17649193?title=0&amp;byline=0&amp;portrait=0" width="650" height="366" frameborder="0" class="shadow_curl br-rd4 border"></iframe></div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone">
<a class="group" href="/wp-content/uploads/images/gamepipe/waypoint_large.JPG" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/waypoint_small.JPG" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/gamepipe/waypoint_large5.JPG" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/waypoint_small5.JPG" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/gamepipe/waypoint_large2.JPG" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/waypoint_small2.JPG" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;" class="gallery"><a class="group" href="/wp-content/uploads/images/gamepipe/waypoint_large4.JPG" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/waypoint_medium4.jpg" width="650" height="406" class="shadow_curl br-rd4 border"  style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="shadow_img" style="margin:0 !important;height:15px;width:100%;"></div></a></div>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">crowding</h2>
</div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone">
<a class="group" href="/wp-content/uploads/images/gamepipe/crowd_large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/crowd_small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/gamepipe/crowd_large4.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/crowd_small4.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/gamepipe/crowd_large3.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/crowd_small3.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;" class="gallery"><a class="group" href="/wp-content/uploads/images/gamepipe/crowd_large2.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/crowd_medium2.jpg" width="650" height="406" class="shadow_curl br-rd4 border"  style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="shadow_img" style="margin:0 !important;height:15px;width:100%;"></div></a></div>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">deserting</h2>
</div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone">
<a class="group" href="/wp-content/uploads/images/gamepipe/desert_large.JPG" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/desert_small.JPG" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/gamepipe/desert_large3.JPG" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/desert_small3.JPG" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/gamepipe/desert_large5.JPG" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/desert_small5.JPG" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;" class="gallery"><a class="group" href="/wp-content/uploads/images/gamepipe/desert_large2.JPG" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/desert_medium2.jpg" width="650" height="406" class="shadow_curl br-rd4 border"  style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="shadow_img" style="margin:0 !important;height:15px;width:100%;"></div></a></div>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">visual Debugging with Havok</h2>
</div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone">
<a class="group" href="/wp-content/uploads/images/gamepipe/havok_large2.jpg" rel="visual"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/havok_small2.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/gamepipe/havok_large5.jpg" rel="visual"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/havok_small5.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/gamepipe/havok_large.jpg" rel="visual"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/havok_small.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;" class="gallery"><a class="group" href="/wp-content/uploads/images/gamepipe/havok_large8.jpg" rel="visual"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/havok_medium8.jpg" width="650" height="406" class="shadow_curl br-rd4 border"  style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="shadow_img" style="margin:0 !important;height:15px;width:100%;"></div></a></div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone">
<a class="group" href="/wp-content/uploads/images/gamepipe/havok_large3.jpg" rel="visual"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/havok_small3.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/gamepipe/havok_large4.jpg" rel="visual"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/havok_small4.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/gamepipe/havok_large7.jpg" rel="visual"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/havok_small7.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;" class="gallery"><a class="group" href="/wp-content/uploads/images/gamepipe/havok_large9.jpg" rel="visual"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/havok_medium9.jpg" width="650" height="406" class="shadow_curl br-rd4 border"  style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="shadow_img" style="margin:0 !important;height:15px;width:100%;"></div></a></div>
<div style="text-align: center; margin-left: 7%; width: 90%;" class="gallery alignnone">
<a class="group" href="/wp-content/uploads/images/gamepipe/havok_large6.jpg" rel="visual"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/havok_small6.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/gamepipe/havok_large11.jpg" rel="visual"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/havok_small11.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/gamepipe/havok_large10.jpg" rel="visual"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/gamepipe/havok_small10.jpg" class="shadow_flat br-rd4 small_border"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Documentation</h2>
</div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 70px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4">
<h3 class="margin">Because documentation comes first!</h3>
<h4><a class="popup iframe" href="/wp-content/uploads/files/gamepipe_ai/html/annotated.html">Online C++ Doxygen</a></h4>
<p>
</p></blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Tech</h2>
</div>
<div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 250px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4">
<h3 class="margin">Libraries</h3>
<h4> &raquo; Ogre Render</h4>
<h4> &raquo; Ogre Animation</h4>
<h4> &raquo; Havok Physics</h4>
<h4> &raquo; Havok Animation</h4>
<h4> &raquo; OpenSteer</h4>
<h4> &raquo; Lua</h4>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

</div>
]]></content:encoded>
			<wfw:commentRss>http://www.goliathdesigns.com/2011/02/usc-gamepipe-ai/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>StarCraft NeuroEvolution Unit AI</title>
		<link>http://www.goliathdesigns.com/2011/02/starcraft-neuroevolution/</link>
		<comments>http://www.goliathdesigns.com/2011/02/starcraft-neuroevolution/#comments</comments>
		<pubDate>Sun, 27 Feb 2011 13:36:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.goliathdesigns.com/?p=609</guid>
		<description><![CDATA[rtNEAT uses generic algorithms and selective breeding to both train and shape neural networks into their optimal configuration.  My experiment in rtNEAT ported the C++ centered algorithm into a Java implementation and implemented both C++ and Java algorithms into StarCraft for performance and feasibility testing.]]></description>
			<content:encoded><![CDATA[<style>
<!--
p.info{
	padding: 0px 18px 5px 65px;
}
div#content div#ct-info div.gallery a img {
	margin: 0px;
	padding: 10px;
}
div#content div#ct-info div.gallery a img.shadow_img{
	padding: 0px;
}
div.alignnone{
	float: left;
	/*padding: 5px;*/
	padding-right: 10px;
}
h2.margin{
	/*margin-bottom: 10px;*/
}
a, a:hover, a:active {
	cursor: pointer;
	text-decoration: none;
}
.border{
	border: 3px solid;
}
.small_border{
	border: 2px solid;
}
-->
</style>
<p><script>
<!--
jQuery("document").ready(function() {
	var width = ( typeof( window.innerWidth ) == 'number' ) ? window.innerWidth : document.documentElement.clientWidth;
	var height = ( typeof( window.innerHeight ) == 'number' ) ? window.innerHeight : document.documentElement.clientHeight;
	jQuery("a.popup").fancybox({
	frameWidth: width  * 0.9,
	frameHeight: height  * 0.9 });
	jQuery("a.group").fancybox({ });
});
-->
</script></p>
<div class="alignnone" style="height: 35px;">
<h3 class="margin">evolving the past, one generation at a time</h3>
</div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 140px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4"><p style="margin: 0px; padding: 18px;">NeuroEvolution, or better yet Real Time NeuroEvolution of Augmenting Topologies(rtNEAT) uses generic algorithms and selective breeding to both train and shape neural networks into their optimal configuration.  The original C++ rtNEAT algorithm was developed at the University of Texas, at Austin by Dr. Kenneth Stanley.<br/><br/>My experiment in rtNEAT ported the C++ centered algorithm into a Java implementation and implemented both C++ and Java algorithms into StarCraft for performance and feasibility testing.</p>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

<p></p>
<div class="alignnone" style="width: 100%; margin-bottom: 5px;">
<h2 class="margin" style="height: 25px;"><a href="http://eis.ucsc.edu/StarCraftAICompetition">AIIDE 2010 Tournament maps</a></h2>
<p><em style="margin-left: 20px;">the battlegrounds</em>
</div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 90px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4"><p style="margin: 0px; padding: 18px;">The 2010 AI and Interactive Digital Entertainment Conference hosted an AI StarCraft competition which pitted various StarCraft bots against one another in numerous setups.  I used the Tier 1 tournament maps against the built in StarCraft computer to both train and test rtNEAT.</p>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

<p></p>
<div style="text-align: center; margin: 0 auto; width: 70%;" class="gallery">
<a class="group" href="/wp-content/uploads/images/starcraft/zealot_map_large.jpg" rel="prototype"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:234px;" class="alignnone"><img src="/wp-content/uploads/images/starcraft/zealot_map_small.jpg" class="shadow_flat br-rd4 small_border"  width="234" height="118" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/starcraft/dragoon_map_large.jpg" rel="prototype"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:234px;" class="alignnone"><img src="/wp-content/uploads/images/starcraft/dragoon_map_small.jpg" class="shadow_flat br-rd4 small_border"  width="234" height="118" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 93%;">
<a class="group" href="/wp-content/uploads/images/starcraft/flying_map_large.jpg" rel="prototype"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/starcraft/flying_map_medium.jpg" width="650" height="323" class="shadow_curl br-rd4 border" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="shadow_img" style="margin:0 !important;height:15px;width:100%;"></div></a></div>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Design</h2>
<p><em style="margin-left: 20px"> in the beginning</em>
</div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 730px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4"><p style="margin: 0px; padding: 18px;">The design was simple, just like the goals, to build ever evolving, ever improving, autonomous agents.  The approach I choose was a frugal approach based around the needs of the tier 1 AIIDE maps.<br/><br/>Two state managers were used: <br/></p>
<ul style="list-style-type:disc; margin-left: 40px;">
<li style="padding-right:18px;">the MapStateManager &#8211; kept the current state of the map geometry and was used for querying distance calculations between units and geometry</li>
<li style="padding-right:18px;">the UnitStateManager &#8211; kept knowledge about all current ally and known enemy units.  Used for querying both ally and enemy distance, locations, and health.</li>
</ul>
<p style="margin: 0px; padding: 0 18px 18px 18px;">Each ally was represented by a RtNeatUnit which contained StarCraft specific unit logic as well as a rtJavaNeat organism which determined the unit&#8217;s actions.
<p style="margin: 0px; padding: 0px 18px; text-align: center;"><img src="/wp-content/uploads/images/starcraft/RTNeatStarCraftBot_Small.png" width="582" height="469"></p>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

<p></p>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Library</h2>
<p><em style="margin-left: 20px"> after the beginning</em>
</div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 975px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4"><p style="margin: 0px; padding: 18px;">The library powering the neuroevolution algorithm was very closely modeled after the original rtNEAT implementation by Dr. Kenneth Stanley.</p>
<p style="margin: 0px; padding: 0px 18px 18px 18px;">My implementation of the library though took a handful of shortcuts in order to speed up and short circuit implementation of recursion.  The overall architecture of the neural networks, mutation, and evolution remained unchanged.</p>
<p>
<p style="margin: 0px; padding: 0px; text-align: center;"><img src="/wp-content/uploads/images/starcraft/TopDownRTJNEAT_ALL_SM.png" width="668" height="851"></p>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

<p></p>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Creation</h2>
<p><em style="margin-left: 20px"> in the wild</em>
</div>
<div style="text-align: center; margin-left: 16%; width: 90%;" class="gallery alignnone">
<a class="group" href="/wp-content/uploads/images/starcraft/zealot_battle_large2.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:234px;" class="alignnone"><img src="/wp-content/uploads/images/starcraft/zealot_battle_small2.jpg" class="shadow_flat br-rd4 small_border"  width="234" height="146" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/starcraft/zealot_battle_large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:234px;" class="alignnone"><img src="/wp-content/uploads/images/starcraft/zealot_battle_small.jpg" class="shadow_flat br-rd4 small_border"  width="234" height="146" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;" class="gallery"><iframe src="http://player.vimeo.com/video/20509456?title=0&amp;byline=0&amp;portrait=0&amp;" width="650" height="406" frameborder="0" class="shadow_curl br-rd4 border"></iframe></div>
<div style="text-align: center; margin-left: 16%; width: 90%;" class="gallery alignnone">
<a class="group" href="/wp-content/uploads/images/starcraft/dragoon_battle_large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:234px;" class="alignnone"><img src="/wp-content/uploads/images/starcraft/dragoon_battle_small.jpg" class="shadow_flat br-rd4 small_border"  width="234" height="146" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/starcraft/mutalisk_battle_large2.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:234px;" class="alignnone"><img src="/wp-content/uploads/images/starcraft/mutalisk_battle_small2.jpg" class="shadow_flat br-rd4 small_border"  width="234" height="146" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;" class="gallery"><a class="group" href="/wp-content/uploads/images/starcraft/mutalisk_battle_large.jpg" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/starcraft/mutalisk_battle_medium.jpg" width="650" height="406" class="shadow_curl br-rd4 border"  style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="shadow_img" style="margin:0 !important;height:15px;width:100%;"></div></a></div>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Documentation</h2>
</div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 70px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4">
<h3 class="margin">Because documentation always comes first!</h3>
<h4><a class="popup iframe" href="/wp-content/uploads/files/rtJNeatProxyBot/doc/index.html">Online JavaDocs</a></h4>
<p>
</p></blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Tech</h2>
</div>
<div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 700px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4">
<h3 class="margin">Libraries</h3>
<h4> &raquo; <a href="http://code.google.com/p/bwapi/">BWAPI &#8211; Brood War Application Programing Interface</a></h4>
<p class="info">The Brood War Application Programming Interface (BWAPI) is a free and open source C++ framework for creating AI modules for Starcraft: Broodwar. Using BWAPI, programmers can retrieve information on players and individual units in Starcraft as well as issue a wide variety of commands to units, opening the doors for custom AIs with new micro and macro algorithms.</p>
<h4> &raquo; <a href="http://code.google.com/p/bwta/">BWTA &#8211; Brood War Terrain Analyzer</a></h4>
<p class="info">Broodwar Terrain Analyzer (BWTA) is a add-on for BWAPI which analyzes the current starcraft map and returns the set of expansion locations, regions, and choke points.</p>
<h4> &raquo; <a href="http://code.google.com/p/bwapi-proxy/">BWAPI-Proxy &#8211; BWAPI Java Socket Proxy</a></h4>
<p class="info">BWAPI Java Socket Proxy exposes the BWAPI through socket communication to a running Java process to receive and send information.</p>
<h4> &raquo; <a href="http://nn.cs.utexas.edu/?rtNEAT">C++ rtNEAT &#8211; Real Time NeuroEvolution of Augmenting Topologies</a></h4>
<p class="info">Library implemenation of the Real-time NeuroEvolution of Augmenting Topologies method. In addition, it includes code for adaptive neurons.</p>
<h4> &raquo; Java rtNEAT &#8211; Java Real Time NeuroEvolution of Augmenting Topologies</h4>
<p class="info">Java rtNEAT is a complete reimplementation of the rtNEAT algorithm into Java.</p>
<h3 class="margin">Utilities</h3>
<h4> &raquo; <a href="http://www.teamliquid.net/forum/viewmessage.php?topic_id=65196">ChaosLauncher by MasterofChaos</a></h4>
<p class="info">Chaoslauncher is a program which serves as a GUI for a number of Starcraft plugins. It supports plugins using the BWL4 format which fully integrate with the launcher, and DLLs which are directly injected into Starcraft.</p>
<h4> &raquo; <a href="http://code.google.com/p/bwapi/">BWAPI Injector</a></h4>
<p class="info">Chaoslauncher BWAPI dll injection plugin.</p>
<h4> &raquo; Resolution Hack Loader by hellinsect</h4>
<p class="info">Resultion Hack to expand the StarCraft UI and viewing distance.</p>
<h4> &raquo; W-MODE</h4>
<p class="info">Chaoslauncher plugin to allow StarCraft to run in window mode.</p>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Glorious Code &#8211; snippet</h2>
</div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 980px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4">
<h3 class="margin">Just a taste</h3>
<div style="font-size:12px">
<pre class="brush: java; title: ; notranslate">
		final StarCraftBot bot = new rtNeatStarCraftBot();
		Game gameRef = null;

		try {
			// 1. get the initial game information
		    BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
	    	String playerData = reader.readLine();

	    	// 2. respond with bot options
	    	String botOptions = (allowUserControl ? &quot;1&quot; : &quot;0&quot;)
	    					  + (completeInformation ? &quot;1&quot; : &quot;0&quot;)
	    					  + (logCommands ? &quot;1&quot; : &quot;0&quot;)
      					      + (terrainAnalysis ? &quot;1&quot; : &quot;0&quot;);

	    	socket.getOutputStream().write(botOptions.getBytes());

	    	// 3. get the starting locations and map information
	    	String locationData = reader.readLine();
	    	String mapData = reader.readLine();

	    	// TA
	    	String regionsData = &quot;Regions:&quot;;
	    	String chokesData = &quot;Chokes:&quot;;
	    	String basesData = &quot;Bases:&quot;;

	    	if (terrainAnalysis) {
	    		regionsData = reader.readLine();
	    		chokesData = reader.readLine();
	    		basesData = reader.readLine();
	    	}

	    	final Game game = new Game(playerData, locationData, mapData, chokesData, basesData, regionsData);
	    	gameRef = game;
	    	boolean firstFrame = true;

	    	if (speedUp) {
	    		game.getCommandQueue().setGameSpeed(0);
	    	}
	    	// 4. game updates
	    	while (true) {

	    		String update = reader.readLine();
	    		if (update.startsWith(&quot;ended&quot;)) {
	    			break;
	    		}
	    		else if (update == null) {
	    			break;
	    		}
	    		else {
	    			// update the game
	    			game.update(update);	    			

	    			if (firstFrame) {
	    				firstFrame = false;

	    				// start the agent
	    				new Thread() {
	    					public void run() {
	    	    				bot.start(game);
	    					}
	    				}.start();
	    			}

	    			// 5. send commands
	    	    	socket.getOutputStream().write(game.getCommandQueue().getCommands().getBytes());
	    		}
	    	}
		}
</pre>
</div>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

</div>
]]></content:encoded>
			<wfw:commentRss>http://www.goliathdesigns.com/2011/02/starcraft-neuroevolution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenSource! System Information Monitor</title>
		<link>http://www.goliathdesigns.com/2009/12/sys_info/</link>
		<comments>http://www.goliathdesigns.com/2009/12/sys_info/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 21:41:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://portfolio.goliathdesigns.com/?p=39</guid>
		<description><![CDATA[<p>System Information Monitor is a Web Based Java program that monitors various system information, it supports many platform including Windows, Linux and Unix. The underlying API utilizes Hyperic SIGAR API, JFreeChart and the Swing Application Framework.</p><div style="float: right; padding: 20px 30px 10px 10px;"><a href="/wp-content/uploads/jnlp/SystemInformationMonitor/launch.jnlp"><img src="/wp-content/uploads/images/jnlp/Launch.png" width="88" height="23" /></a></div>]]></description>
			<content:encoded><![CDATA[<style>
<!--
div#content div#ct-info div.gallery a img {
	margin: 0px;
	padding: 10px;
}
div#content div#ct-info div.gallery a img.shadow_img{
	padding: 0px;
}
div.alignnone{
	float: left;
	/*padding: 5px;*/
	padding-right: 10px;
}
h2.margin{
	/*margin-bottom: 10px;*/
}
a, a:hover, a:active {
	cursor: pointer;
	text-decoration: none;
}</p>
<p>-->
</style>
<p><script>
<!--
jQuery("document").ready(function() {
	var width = ( typeof( window.innerWidth ) == 'number' ) ? window.innerWidth : document.documentElement.clientWidth;
	var height = ( typeof( window.innerHeight ) == 'number' ) ? window.innerHeight : document.documentElement.clientHeight;
	jQuery("a.popup").fancybox({
	frameWidth: width  * 0.9,
	frameHeight: height  * 0.9 });
	jQuery("a.group").fancybox({ });
});
-->
</script></p>
<div class="alignnone" style="height: 35px;">
<h3 class="margin">embrace Change</h3>
</div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 70px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4"><p style="margin: 0px; padding: 18px;">System Information Monitor was born with the idea of breaking free from platforms and installers.  4 weeks and a lot of sleepless nights, we have success.</p>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

<p></p>
<div class="alignnone">
<h2 class="margin" style="height: 35px;">the Prototype</h2>
<p> <em style="margin-left: 20px">click to launch the prototype</em>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;">
<a class="popup iframe" href="/wp-content/uploads/jnlp/System_Information_Monitor/TestPage.html"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/SystemMonitor/SketchFlow_Map.png" width="650" height="342" class="shadow_curl" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="shadow_img" style="margin:0 !important;height:15px;width:100%;"></div></a></div>
<div style="text-align: center; margin: 0 auto; width: 79%;" class="gallery">
<a class="group" href="/wp-content/uploads/images/SystemMonitor/SketchFlow_NetworkAdapter.png" rel="prototype"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:276px;" class="alignnone"><img src="/wp-content/uploads/images/SystemMonitor/SketchFlow_NetworkAdapter_Small.png" class="shadow_flat"  width="276" height="152" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/SystemMonitor/SketchFlow_IO.png" rel="prototype"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:276px;" class="alignnone"><img src="/wp-content/uploads/images/SystemMonitor/SketchFlow_IO_Small.png" class="shadow_flat"  width="276" height="152" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Product <a style="margin-right: 10px;" href="/wp-content/uploads/jnlp/SystemInformationMonitor/launch.jnlp"><img src="/wp-content/uploads/images/jnlp/Launch.png" width="88" height="23" /></a></h2>
</div>
<div style="text-align: center; margin-left: 7%; width: 85%;" class="gallery alignnone">
<a class="group" href="/wp-content/uploads/images/SystemMonitor/Light_Process.png" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/SystemMonitor/Light_Process_Small.png" class="shadow_flat"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/SystemMonitor/Light_NetworkAdapters.png" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/SystemMonitor/Light_NetworkAdapters_Small.png" class="shadow_flat"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/SystemMonitor/Light_Cpu.png" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/SystemMonitor/Light_Cpu_Small.png" class="shadow_flat"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div style="text-align: center; margin: 0 auto; width: 91%;" class="gallery"><a class="group" href="/wp-content/uploads/images/SystemMonitor/Dark_Quad.png" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/SystemMonitor/Dark_Quad_Small.png" width="650" height="387" class="shadow_curl"  style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="shadow_img" style="margin:0 !important;height:15px;width:100%;"></div></a></div>
<div style="text-align: center; margin: 0 auto; width: 85%;" class="gallery">
<a class="group" href="/wp-content/uploads/images/SystemMonitor/Light_System.png" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/SystemMonitor/Light_System_Small.png" class="shadow_flat"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/SystemMonitor/Light_IO.png" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/SystemMonitor/Light_IO_Small.png" class="shadow_flat"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a><a class="group" href="/wp-content/uploads/images/SystemMonitor/Light_NetworkConnections.png" rel="group"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:195px;" class="alignnone"><img src="/wp-content/uploads/images/SystemMonitor/Light_NetworkConnections_Small.png" class="shadow_flat"  width="195" height="122" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a>
</div>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Tech</h2>
</div>
<div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 500px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4">
<h3 class="margin">Features</h3>
<h4> &raquo; Monitors System Information</h4>
<h4> &raquo; Supports Windows, Linux, Unix, Solaris</h4>
<h4> &raquo; No Install, Launch from the browser</h4>
<h4> &raquo; 26 Different Skins</h4>
<h4> &raquo; Open Source</h4>
<h3 class="margin">APIs Utilized</h3>
<h4> &raquo; Hyperic Sigar</h4>
<h4> &raquo; JFreeChart</h4>
<h4> &raquo; Swing Application Framework</h4>
<h4> &raquo; Substance</h4>
<h4> &raquo; Swing</h4>
<h3 class="margin">The heart of the system</h3>
<p style="margin: 0px; padding: 5px 18px 18px 18px;">The guts of System Monitor lay in concurrency.  At any point in time System Monitor is utilizing a thread pool in order to poll information from the operating system.  Each of these sources respond at very diferrent rates so the thread pool keeps things flowing in at a near constant rate.</p>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

</div>
<div class="alignnone">
<h2 class = "margin" style="height: 35px;">sharing is Caring</h2>
</div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height:150px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4">
<h3 class="margin">Sourceforge</h3>
<h4><a href="http://sysinfomonitor.sourceforge.net" target="_blank">http://sysinfomonitor.sourceforge.net</a></h4>
<h3 class="margin">Subversion</h3>
<h4  style="text-align:left"><a href="https://sysinfomonitor.svn.sourceforge.net/svnroot/sysinfomonitor" target="_blank">svn co https://sysinfomonitor.svn.sourceforge.net/svnroot/sysinfomonitor sysinfomonitor</a></h4>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

<div class="alignnone">
<h2 class = "margin" style="height: 35px;">the Glorious Code</h2>
</div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 1500px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4">
<h3 class="margin">Because documentation comes first!</h3>
<h4><a class="popup iframe" href="/wp-content/uploads/jnlp/SystemInformationMonitor/javadoc/index.html">Online JavaDocs</a></h4>
<p></p>
<h3 class="margin">Download</h3>
<h4><a href="/dist/System_Information_Monitor.rar">System Information Monitor</a></h4>
<p></p>
<h3 class="margin">Just a taste</h3>
<div style="font-size:12px">
<pre class="brush: java; title: ; notranslate">
// only a snippet to protect the eyes

    @Override
    public void update() {
        final int currentCpu = this.cpu;

        Runnable updateData = new Runnable() {

            public void run() {
                chart.setNotify(false);

                LinkedList&lt;LinkedList&lt;Double&gt;&gt; cpuHistory = cpuProcess.getCpuHistory();
                LinkedList&lt;Double&gt; cpu;

                counter = counter.add(BigInteger.ONE);

                if (dataset.getColumnCount() &gt; 0) {
                    dataset.removeColumn(0);
                }

                if (currentCpu == -1) {
                    // Number of CPUs
                    for (int i = 0; i &lt; cpuHistory.size(); i++) {
                        cpu = cpuHistory.get(i);
                        dataset.addValue((Number) cpu.getFirst(), i, counter);
                    }
                } else {
                    if (currentCpu &lt; cpuHistory.size()) {
                        cpu = cpuHistory.get(currentCpu);
                        dataset.addValue((Number) cpu.getFirst(), currentCpu, counter);
                    }
                }

                chart.setNotify(true);
                chart.fireChartChanged();
            }
        };
        SwingUtilities.invokeLater(updateData);
    }

    /**
     * Moves all the data from the CpuProcess to the dataset.  This operation
     * will do a complete replace on the dataset information.
     */
    private void moveData() {
        final int currentCpu = this.cpu;

        Runnable updateData = new Runnable() {

            public void run() {
                chart.setNotify(false);
                dataset.clear();

                LinkedList&lt;LinkedList&lt;Double&gt;&gt; cpuHistory = cpuProcess.getCpuHistory();
                LinkedList&lt;Double&gt; cpu;

                if (currentCpu == -1) {
                    // Number of CPUs
                    for (int i = 0; i &lt; cpuHistory.size(); i++) {
                        cpu = cpuHistory.get(i);

                        BigInteger beforeCount = counter;

                        // Number of datapoints
                        for (int j = 0; j &lt; cpu.size(); counter = counter.add(BigInteger.ONE), j++) {
                            dataset.addValue((Number) cpu.get(j), i, counter);
                        }

                        counter = beforeCount;
                    }
                } else {
                    cpu = cpuHistory.get(currentCpu);

                    BigInteger beforeCount = counter;

                    // Number of datapoints
                    for (int j = 0; j &lt; cpu.size(); counter = counter.add(BigInteger.ONE), j++) {
                        dataset.addValue((Number) cpu.get(j), currentCpu, counter);
                    }

                    counter = beforeCount;
                }

                counter = counter.add(BigInteger.valueOf(cpuHistory.get(0).size()));

                chart.setNotify(true);
                chart.fireChartChanged();
            }
        };
        SwingUtilities.invokeLater(updateData);
    }
}</pre>
</div>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

]]></content:encoded>
			<wfw:commentRss>http://www.goliathdesigns.com/2009/12/sys_info/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TDD driven AES Encryption, from scratch</title>
		<link>http://www.goliathdesigns.com/2009/12/aes/</link>
		<comments>http://www.goliathdesigns.com/2009/12/aes/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 21:35:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://portfolio.goliathdesigns.com/?p=33</guid>
		<description><![CDATA[TDD (Test Driven Development) is creating unit tests before ever coding.  Implementing AES encryption was both a test of my bitwise operator skills, as well as putting agile methods to the test.  
<br />
There is no way I could have succeeded without TDD.]]></description>
			<content:encoded><![CDATA[<p><script>
jQuery(document).ready(function () {
	var width = ( typeof( window.innerWidth ) == 'number' ) ? window.innerWidth : document.documentElement.clientWidth;
	var height = ( typeof( window.innerHeight ) == 'number' ) ? window.innerHeight : document.documentElement.clientHeight;
	jQuery("a.popup").fancybox({
		frameWidth: width  * 0.9,
		frameHeight: height  * 0.9
	});
	jQuery("a.aes_java").fancybox({
		frameWidth: width  * 0.9,
		frameHeight: height  * 0.9,
		padding: 0
	});
});
</script></p>
<style>
h2.margin{
	font-size: 20px;
	height: 25px;
	padding-top: 5px;
}
.border{
	border: 3px solid;
}
.small_border{
	border: 2px solid;
}
</style>
<div class="alignnone" style="height: 35px;">
<h3 class="margin">Because documentation and testing come first</h3>
</div>
<div>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 80px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4">
<h3 class="margin">The Standard</h3>
<h4><a href="/wp-content/uploads/files/aes/fips-197.pdf" target="_blank"> &raquo; No cow-boy coding here! FIPS-197</a></h4>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

<h2 class="margin">Measuring test coverage, 93% test coverage</h2>
<div style="text-align: center; margin: 0 auto; width: 90%;">
<a class="popup iframe" href="/wp-content/uploads/files/aes/coverage/coverage.html"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/aes/unittests.png" width="650" height="203" class="shadow_flat" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a></div>
<h2 class="margin">Documentation matters!</h2>
<div style="text-align: center; margin: 0 auto; width: 90%;">
<a class="popup iframe" href="/wp-content/uploads/files/aes/doc/index.html"><div style="overflow:hidden;display:table;line-height:0;text-align:center;width:650px;" class="alignnone"><img src="/wp-content/uploads/images/aes/javadoc.png" width="650" height="203" class="shadow_flat" style="padding:0 !important; margin:0 !important; max-width:100% !important;"><br/><img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_flat.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a></div>
<h2 class="margin">All the details</h2>
<div style="overflow:hidden;width: 100%; " class="alignnone">
<blockquote style="background-color:#ffffff; border: 1px solid; font-style: normal; ; height: 800px;; margin:0 !important; max-width:100% !important;" class="shadow_curl br-rd4">
<h3 class="margin">AES_java</h3>
<div style="display: none;">
 <a class="aes_java iframe" href="/aes_java"></a>
</div>
<div style="cursor: pointer; font-size: 12px;" onclick='jQuery("a.aes_java").trigger("click");'>
<pre class="brush: java; title: ; toolbar: false; notranslate">
// click here for the full uncensored code

  /**
   * Applies S-Box substitution to each byte of a state matrix.
   *
   * @param s
   *          A state matrix having Nb columns and 4 rows.
   * @return s, after S-box substitution is applied to each byte.
   */
  protected int[][] subBytes(int[][] s) {
    for (int i = 0; i &lt; 4; i++) {
      for (int j = 0; j &lt; Nb; j++) {
        s[i][j] = subWord(s[i][j]) &amp; 0xFF;
      }
    }
    return s;
  }

  /**
   * Applies S-box substitution to each byte of a 4-byte word.
   *
   * @param w
   *          A 4-byte word.
   * @return w, after S-box substitution is applied to each byte.
   */
  protected static int subWord(int w) {
    int subWord = 0;
    for (int i = 24; i &gt;= 0; i -= 8) {
      int in = w &lt;&lt; i &gt;&gt;&gt; 24;
      subWord |= sBox[in] &lt;&lt; (24 - i);
    }
    return subWord;
  }

  /**
   * Multiplies x times a polynomial b(x) in GF(2^8) modulo the irreducible
   * polynomial m(x) = x^8+x^4+x^3+x+1. (i.e. m(x) = 0x11b).
   *
   * @param b
   *          A polynomial b(x) = b7x^7+b6x^6+b5x^5+b4x^4+b3x^3+b2x^2+b1x+b0 in
   *          GF(2^8).
   * @return xb(x) mod x8+x4+x3+x+1.
   */
  protected static int xtime(int b) {
    if ((b &amp; 0x80) == 0)
      return b &lt;&lt; 1;
    return (b &lt;&lt; 1) ^ 0x11b;
  }
}</pre>
</div>
</blockquote>
<img src="http://www.goliathdesigns.com/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:15px;width:100%;"></div>

</div>
]]></content:encoded>
			<wfw:commentRss>http://www.goliathdesigns.com/2009/12/aes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

