<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Evolve Your Hierarchy</title>
	<atom:link href="http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/feed/" rel="self" type="application/rss+xml" />
	<link>http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/</link>
	<description>Game Development and General Hacking by the Old West</description>
	<lastBuildDate>Tue, 20 Jul 2010 15:03:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Nightshade Engine</title>
		<link>http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/comment-page-2/#comment-168287</link>
		<dc:creator>Nightshade Engine</dc:creator>
		<pubDate>Sat, 19 Jun 2010 15:44:25 +0000</pubDate>
		<guid isPermaLink="false">http://cowboyprogramming.com/?p=30#comment-168287</guid>
		<description>[...] would have pretty much all part types except AI. My system is similar to the one mentioned in this article. Components should be highly reusable. For example, I might write an AI part, let&#8217;s say for [...]</description>
		<content:encoded><![CDATA[<p>[...] would have pretty much all part types except AI. My system is similar to the one mentioned in this article. Components should be highly reusable. For example, I might write an AI part, let&#8217;s say for [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nightshade Engine</title>
		<link>http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/comment-page-2/#comment-165379</link>
		<dc:creator>Nightshade Engine</dc:creator>
		<pubDate>Tue, 11 May 2010 14:49:24 +0000</pubDate>
		<guid isPermaLink="false">http://cowboyprogramming.com/?p=30#comment-165379</guid>
		<description>[...] the ground will have a render part and a physics part. My system is similar to the one mentioned in this article. Components should be highly reusable. For example, I might write an AI part, let&#8217;s say for [...]</description>
		<content:encoded><![CDATA[<p>[...] the ground will have a render part and a physics part. My system is similar to the one mentioned in this article. Components should be highly reusable. For example, I might write an AI part, let&#8217;s say for [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Game Engine Design / iPhone Game Engine Resources &#124; Kleinsch</title>
		<link>http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/comment-page-2/#comment-146073</link>
		<dc:creator>Game Engine Design / iPhone Game Engine Resources &#124; Kleinsch</dc:creator>
		<pubDate>Tue, 19 Jan 2010 00:55:51 +0000</pubDate>
		<guid isPermaLink="false">http://cowboyprogramming.com/?p=30#comment-146073</guid>
		<description>[...] Engine: Case Study: The Age Of Mythology Doug Church &#8211; Object Systems Mick West &#8211; Refactoring Game Entities with Components Kyle Wilson has a blog with a bunch of strong posts about engine design. Be sure to check out the [...]</description>
		<content:encoded><![CDATA[<p>[...] Engine: Case Study: The Age Of Mythology Doug Church &#8211; Object Systems Mick West &#8211; Refactoring Game Entities with Components Kyle Wilson has a blog with a bunch of strong posts about engine design. Be sure to check out the [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Un Nouveau Moteur &#124; Kromatyk</title>
		<link>http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/comment-page-2/#comment-145745</link>
		<dc:creator>Un Nouveau Moteur &#124; Kromatyk</dc:creator>
		<pubDate>Sat, 16 Jan 2010 19:01:16 +0000</pubDate>
		<guid isPermaLink="false">http://cowboyprogramming.com/?p=30#comment-145745</guid>
		<description>[...] http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/ [...]</description>
		<content:encoded><![CDATA[<p>[...] <a href="http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/" rel="nofollow">http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/</a> [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Jones</title>
		<link>http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/comment-page-2/#comment-145702</link>
		<dc:creator>John Jones</dc:creator>
		<pubDate>Sat, 16 Jan 2010 12:24:52 +0000</pubDate>
		<guid isPermaLink="false">http://cowboyprogramming.com/?p=30#comment-145702</guid>
		<description>Incredible! Do you have an example running? because i have several problems trying it.
thanks 
jhon</description>
		<content:encoded><![CDATA[<p>Incredible! Do you have an example running? because i have several problems trying it.<br />
thanks<br />
jhon</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Drilian&#8217;s House of Game Development &#187; Blog Archive &#187; Update For The Past N Months</title>
		<link>http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/comment-page-2/#comment-144020</link>
		<dc:creator>Drilian&#8217;s House of Game Development &#187; Blog Archive &#187; Update For The Past N Months</dc:creator>
		<pubDate>Wed, 06 Jan 2010 03:15:32 +0000</pubDate>
		<guid isPermaLink="false">http://cowboyprogramming.com/?p=30#comment-144020</guid>
		<description>[...] more capable of handling new things.  For instance, enemies are now based on components as per an article on Cowboy Programming, making it super easy to create new enemy behaviors (and combinations of existing behaviors).  It [...]</description>
		<content:encoded><![CDATA[<p>[...] more capable of handling new things.  For instance, enemies are now based on components as per an article on Cowboy Programming, making it super easy to create new enemy behaviors (and combinations of existing behaviors).  It [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Zach</title>
		<link>http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/comment-page-2/#comment-137338</link>
		<dc:creator>Zach</dc:creator>
		<pubDate>Fri, 13 Nov 2009 03:04:04 +0000</pubDate>
		<guid isPermaLink="false">http://cowboyprogramming.com/?p=30#comment-137338</guid>
		<description>Truly fascinating!!!</description>
		<content:encoded><![CDATA[<p>Truly fascinating!!!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marc</title>
		<link>http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/comment-page-2/#comment-133173</link>
		<dc:creator>Marc</dc:creator>
		<pubDate>Mon, 05 Oct 2009 18:09:04 +0000</pubDate>
		<guid isPermaLink="false">http://cowboyprogramming.com/?p=30#comment-133173</guid>
		<description>I&#039;m a fan of this appraoch. I despise it when I look at someone elses code and I have to work my way up six or seven inheirtance levels just to find the meat and potatoes of some procedure. There&#039;s nothing more confusing about joining a project than learning what class in the heirarchy does exactly what, especially when they&#039;re horribly mislabelled classes which are doing things the name suggests they shouldn&#039;t be doing and no one&#039;s bothered to update it.

I&#039;ve tried my hand at this design before and the real difficulty I&#039;ve always run into is enforcing a particular order that components should be in the container class. The method I&#039;ve employed before is to have each component maintain it&#039;s own list of dependencies which are checked when the component is added to an object or component collection. The problem inherent with this is that it&#039;s very easy to create cyclic dependencies, especially later on in the project when you have potentially thousands of components. 

There&#039;s no easy solution, but the traditional approach simply doesn&#039;t cut the mustard these days in my opinion, and something new like the composite design is definitely an improvement.</description>
		<content:encoded><![CDATA[<p>I&#8217;m a fan of this appraoch. I despise it when I look at someone elses code and I have to work my way up six or seven inheirtance levels just to find the meat and potatoes of some procedure. There&#8217;s nothing more confusing about joining a project than learning what class in the heirarchy does exactly what, especially when they&#8217;re horribly mislabelled classes which are doing things the name suggests they shouldn&#8217;t be doing and no one&#8217;s bothered to update it.</p>
<p>I&#8217;ve tried my hand at this design before and the real difficulty I&#8217;ve always run into is enforcing a particular order that components should be in the container class. The method I&#8217;ve employed before is to have each component maintain it&#8217;s own list of dependencies which are checked when the component is added to an object or component collection. The problem inherent with this is that it&#8217;s very easy to create cyclic dependencies, especially later on in the project when you have potentially thousands of components. </p>
<p>There&#8217;s no easy solution, but the traditional approach simply doesn&#8217;t cut the mustard these days in my opinion, and something new like the composite design is definitely an improvement.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mick West</title>
		<link>http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/comment-page-2/#comment-132402</link>
		<dc:creator>Mick West</dc:creator>
		<pubDate>Mon, 28 Sep 2009 23:25:54 +0000</pubDate>
		<guid isPermaLink="false">http://cowboyprogramming.com/?p=30#comment-132402</guid>
		<description>Ash, that sounds about right. A fairly simple thing such as a camera could be a single component, but would likely be at least a CameraComponent that specifies the view vector and FOV, and some ScriptComponent or AttachComponent that governs how it moves.

When creating components, or functionality for an existing component, consider if it can be split into sub components that might be useful in another composite object.   All the things you mention could be components.</description>
		<content:encoded><![CDATA[<p>Ash, that sounds about right. A fairly simple thing such as a camera could be a single component, but would likely be at least a CameraComponent that specifies the view vector and FOV, and some ScriptComponent or AttachComponent that governs how it moves.</p>
<p>When creating components, or functionality for an existing component, consider if it can be split into sub components that might be useful in another composite object.   All the things you mention could be components.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ash</title>
		<link>http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/comment-page-2/#comment-132401</link>
		<dc:creator>Ash</dc:creator>
		<pubDate>Mon, 28 Sep 2009 23:15:57 +0000</pubDate>
		<guid isPermaLink="false">http://cowboyprogramming.com/?p=30#comment-132401</guid>
		<description>Great article Mick.

While reading your article though, a question kept popping up in my head which I don&#039;t seem to be able to shake off.

Take a light or a camera for instance. Beyond the very essence of their nature, i.e. as objects that illuminate or capture the scene, either of them may have or have not a Position, Render, Physics or Script component and so on, so they clearly must have their place in such a system, either as entities or as components, so my question is how do you go about incorporating these objects into such a system? Are lights and cameras components too? So a scriptable camera consists of two components, the CameraComponent and the ScriptComponent? What about a particle emitter? Or a physical joint?

Generally speaking, what&#039;s the rule of thumb for recognizing components?

Thanks in advance.</description>
		<content:encoded><![CDATA[<p>Great article Mick.</p>
<p>While reading your article though, a question kept popping up in my head which I don&#8217;t seem to be able to shake off.</p>
<p>Take a light or a camera for instance. Beyond the very essence of their nature, i.e. as objects that illuminate or capture the scene, either of them may have or have not a Position, Render, Physics or Script component and so on, so they clearly must have their place in such a system, either as entities or as components, so my question is how do you go about incorporating these objects into such a system? Are lights and cameras components too? So a scriptable camera consists of two components, the CameraComponent and the ScriptComponent? What about a particle emitter? Or a physical joint?</p>
<p>Generally speaking, what&#8217;s the rule of thumb for recognizing components?</p>
<p>Thanks in advance.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.486 seconds -->
