<?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: Backwards Is Forward: Making Better Games with Test-Driven Development</title>
	<atom:link href="http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development/feed" rel="self" type="application/rss+xml" />
	<link>http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development</link>
	<description>Living the indie life</description>
	<lastBuildDate>Tue, 15 May 2012 19:19:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: SINOWISH 发现之旅</title>
		<link>http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development/comment-page-1#comment-349</link>
		<dc:creator>SINOWISH 发现之旅</dc:creator>
		<pubDate>Wed, 17 May 2006 16:48:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=342#comment-349</guid>
		<description>&lt;strong&gt;Games from Within: Backwards Is Forward: Making Better Games with Test-Driven Development&lt;/strong&gt;







One thing that should be clear and is important to stress is that TDD is not just writing unit tests. TDD is a development methodology, not a testing one. That&#8217;s why TDD&#8217;s benefits deal with better code design and structure, ease of refacto...</description>
		<content:encoded><![CDATA[<p><strong>Games from Within: Backwards Is Forward: Making Better Games with Test-Driven Development</strong></p>
<p>One thing that should be clear and is important to stress is that TDD is not just writing unit tests. TDD is a development methodology, not a testing one. That&#8217;s why TDD&#8217;s benefits deal with better code design and structure, ease of refacto&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anonymous</title>
		<link>http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development/comment-page-1#comment-348</link>
		<dc:creator>Anonymous</dc:creator>
		<pubDate>Mon, 17 Apr 2006 00:22:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=342#comment-348</guid>
		<description>&lt;strong&gt;Good Article&lt;/strong&gt;</description>
		<content:encoded><![CDATA[<p><strong>Good Article</strong></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: EntBlog</title>
		<link>http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development/comment-page-1#comment-347</link>
		<dc:creator>EntBlog</dc:creator>
		<pubDate>Tue, 11 Apr 2006 01:11:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=342#comment-347</guid>
		<description>&lt;strong&gt;GDC2006 Presentations Links&lt;/strong&gt;









Game Developers Conference 2006 closed its doors last week. Soon or later most of the presentations will be published in the official site. While that comes, I will be posting here links to papers and presentations (only about programming) made public...</description>
		<content:encoded><![CDATA[<p><strong>GDC2006 Presentations Links</strong></p>
<p>Game Developers Conference 2006 closed its doors last week. Soon or later most of the presentations will be published in the official site. While that comes, I will be posting here links to papers and presentations (only about programming) made public&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: adruab.net</title>
		<link>http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development/comment-page-1#comment-346</link>
		<dc:creator>adruab.net</dc:creator>
		<pubDate>Thu, 06 Apr 2006 14:50:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=342#comment-346</guid>
		<description>&lt;strong&gt;GDC -&gt; Fun + Motivation&lt;/strong&gt;







So after another trip to San Jose, I must say that the sessions were hit and miss.</description>
		<content:encoded><![CDATA[<p><strong>GDC -> Fun + Motivation</strong></p>
<p>So after another trip to San Jose, I must say that the sessions were hit and miss.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sean</title>
		<link>http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development/comment-page-1#comment-339</link>
		<dc:creator>Sean</dc:creator>
		<pubDate>Tue, 28 Mar 2006 20:01:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=342#comment-339</guid>
		<description>Maceij,



Noel and I differ a bit on mocks.  I use them quite a bit in the project I&#039;m working on.  I think part of the reason is that mocks are much easier to create in UnrealScript than in C++.  Extracting an interface, renaming everything and worrying about virtual function overhead can put a damper on the whole process.  Also, as Noel mentions, if you design your code to be horizontal you need them less.



The do make many tests much simpler and orthagonal :)</description>
		<content:encoded><![CDATA[<p>Maceij,</p>
<p>Noel and I differ a bit on mocks.  I use them quite a bit in the project I&#8217;m working on.  I think part of the reason is that mocks are much easier to create in UnrealScript than in C++.  Extracting an interface, renaming everything and worrying about virtual function overhead can put a damper on the whole process.  Also, as Noel mentions, if you design your code to be horizontal you need them less.</p>
<p>The do make many tests much simpler and orthagonal <img src='http://gamesfromwithin.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Asher Sterkin</title>
		<link>http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development/comment-page-1#comment-338</link>
		<dc:creator>Asher Sterkin</dc:creator>
		<pubDate>Mon, 27 Mar 2006 14:00:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=342#comment-338</guid>
		<description>Noel,



the bmock library is not published yet. In fact it was initially developed for internal use only, but then I realised it might be useful for a wider audience. I will try to put it somewhere at sourceforge when I come back from my recent business trip (in two weeks). If you want to take a look at its documentation gmail me a line using my first name, dot, last name as an address (a naive anti-spam measure).

Now with regard to your comment about mocks and flat object structure I think I see where does the argument lay. In OO we indeed have a best practices recommendation to avoid deep inheritance hierarchy since it typically leads to a very fragile and overcomplicated structure. I&#039;m not sure it&#039;s the same with regrad to an object composition structue, which could be quite deep. The very concept of cohesion and delegation assumes that every object concentrates on its own responsibilities and delegates the rest to other objects. So inter-object communication and thus a need for mocks is supposed to be a norm rather than an exception. Not useing mocks would lead to more complex tests and fixtures.



Asher</description>
		<content:encoded><![CDATA[<p>Noel,</p>
<p>the bmock library is not published yet. In fact it was initially developed for internal use only, but then I realised it might be useful for a wider audience. I will try to put it somewhere at sourceforge when I come back from my recent business trip (in two weeks). If you want to take a look at its documentation gmail me a line using my first name, dot, last name as an address (a naive anti-spam measure).</p>
<p>Now with regard to your comment about mocks and flat object structure I think I see where does the argument lay. In OO we indeed have a best practices recommendation to avoid deep inheritance hierarchy since it typically leads to a very fragile and overcomplicated structure. I&#8217;m not sure it&#8217;s the same with regrad to an object composition structue, which could be quite deep. The very concept of cohesion and delegation assumes that every object concentrates on its own responsibilities and delegates the rest to other objects. So inter-object communication and thus a need for mocks is supposed to be a norm rather than an exception. Not useing mocks would lead to more complex tests and fixtures.</p>
<p>Asher</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Maciej</title>
		<link>http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development/comment-page-1#comment-337</link>
		<dc:creator>Maciej</dc:creator>
		<pubDate>Mon, 27 Mar 2006 13:22:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=342#comment-337</guid>
		<description>Very nice article. What I&#039;m lacking in texts about TDD are multiplayer (server-client) games, tho. I dont have any good ideas about how to implement TDD for them.</description>
		<content:encoded><![CDATA[<p>Very nice article. What I&#8217;m lacking in texts about TDD are multiplayer (server-client) games, tho. I dont have any good ideas about how to implement TDD for them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Mendoza</title>
		<link>http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development/comment-page-1#comment-345</link>
		<dc:creator>Paul Mendoza</dc:creator>
		<pubDate>Mon, 27 Mar 2006 03:06:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=342#comment-345</guid>
		<description>&lt;strong&gt;Agile game development&lt;/strong&gt;







I&#039;ve been looking at various software development methodologies lately and I&#039;ve found some pretty interesting blogs on one type that is very exciting.</description>
		<content:encoded><![CDATA[<p><strong>Agile game development</strong></p>
<p>I&#8217;ve been looking at various software development methodologies lately and I&#8217;ve found some pretty interesting blogs on one type that is very exciting.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Agile Testing</title>
		<link>http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development/comment-page-1#comment-344</link>
		<dc:creator>Agile Testing</dc:creator>
		<pubDate>Sun, 26 Mar 2006 02:04:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=342#comment-344</guid>
		<description>&lt;strong&gt;Bunch O&#039;Links on agile/testing topics&lt;/strong&gt;







Titus suggested I post some of the links I keep sending him, so here they are</description>
		<content:encoded><![CDATA[<p><strong>Bunch O&#8217;Links on agile/testing topics</strong></p>
<p>Titus suggested I post some of the links I keep sending him, so here they are</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Obie Fernandez</title>
		<link>http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development/comment-page-1#comment-343</link>
		<dc:creator>Obie Fernandez</dc:creator>
		<pubDate>Sun, 26 Mar 2006 01:55:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=342#comment-343</guid>
		<description>&lt;strong&gt;Further Proof Agile is Turning the Corner&lt;/strong&gt;







I love to find information that backs up my belief that agile development practices are gaining wider acceptance, such as this article describing how to do TDD game programming in C++.</description>
		<content:encoded><![CDATA[<p><strong>Further Proof Agile is Turning the Corner</strong></p>
<p>I love to find information that backs up my belief that agile development practices are gaining wider acceptance, such as this article describing how to do TDD game programming in C++.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Johns Rambles</title>
		<link>http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development/comment-page-1#comment-342</link>
		<dc:creator>Johns Rambles</dc:creator>
		<pubDate>Sat, 25 Mar 2006 20:55:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=342#comment-342</guid>
		<description>&lt;strong&gt;Test-Driven Development&lt;/strong&gt;







This Test-Driven Development (TDD) paper was presented yesterday at GDC (the Game Developers Conference).  Not that I was present to see it</description>
		<content:encoded><![CDATA[<p><strong>Test-Driven Development</strong></p>
<p>This Test-Driven Development (TDD) paper was presented yesterday at GDC (the Game Developers Conference).  Not that I was present to see it</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Noel Llopis</title>
		<link>http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development/comment-page-1#comment-336</link>
		<dc:creator>Noel Llopis</dc:creator>
		<pubDate>Sat, 25 Mar 2006 20:52:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=342#comment-336</guid>
		<description>Bheeshmar, Visual Studio definitely looks at the return codes of the executables involved in the build process. I think the only problem is that it doesn&#039;t interpret -1 as a failing code (it probably does a &gt; 0 check somewhere).



That&#039;s actually really important, because it allows us to run $(TargetPath) in the postbuild step and have the executable return the number of failed tests. So whenever any test fails, the whole build fails. Not only does Visual Studio indicate this in the output log, but it will also fail any automated builds in your build server without having to do any extra checks.</description>
		<content:encoded><![CDATA[<p>Bheeshmar, Visual Studio definitely looks at the return codes of the executables involved in the build process. I think the only problem is that it doesn&#8217;t interpret -1 as a failing code (it probably does a > 0 check somewhere).</p>
<p>That&#8217;s actually really important, because it allows us to run $(TargetPath) in the postbuild step and have the executable return the number of failed tests. So whenever any test fails, the whole build fails. Not only does Visual Studio indicate this in the output log, but it will also fail any automated builds in your build server without having to do any extra checks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Noel Llopis</title>
		<link>http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development/comment-page-1#comment-335</link>
		<dc:creator>Noel Llopis</dc:creator>
		<pubDate>Sat, 25 Mar 2006 20:50:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=342#comment-335</guid>
		<description>Asher, Do you have a link to bmock somewhere? I Googled for it, but the only thing that showed up was this page :-) I&#039;d like to check it out if it&#039;s publically available.



I agree that mocks have a place in testing and they&#039;re a good, necessary technique. But I still think that if most tests are using mocks, it&#039;s an indication of code that is not modular enough. One of the great side effects of TDD is that it really encourages you to have a flat architecture, with many leaf nodes. Using mocks all the time would indicate many dependencies and not many leaf nodes.</description>
		<content:encoded><![CDATA[<p>Asher, Do you have a link to bmock somewhere? I Googled for it, but the only thing that showed up was this page <img src='http://gamesfromwithin.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  I&#8217;d like to check it out if it&#8217;s publically available.</p>
<p>I agree that mocks have a place in testing and they&#8217;re a good, necessary technique. But I still think that if most tests are using mocks, it&#8217;s an indication of code that is not modular enough. One of the great side effects of TDD is that it really encourages you to have a flat architecture, with many leaf nodes. Using mocks all the time would indicate many dependencies and not many leaf nodes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bheeshmar</title>
		<link>http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development/comment-page-1#comment-334</link>
		<dc:creator>Bheeshmar</dc:creator>
		<pubDate>Fri, 24 Mar 2006 18:37:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=342#comment-334</guid>
		<description>For the guy asking about Visual Studio return codes:



Yes, Visual Studio ignores error codes.  It flags errors by parsing the output window!  You have to format your message like so:



std::cout &lt;&lt; &quot;\n&quot; &lt;&lt; file &lt;&lt; &quot;(&quot; &lt;&lt; line &lt;&lt;  &quot;) : error: &quot; &lt;&lt; message &lt;&lt; std::endl;



Then it will find it and jump to file and line when you select it.</description>
		<content:encoded><![CDATA[<p>For the guy asking about Visual Studio return codes:</p>
<p>Yes, Visual Studio ignores error codes.  It flags errors by parsing the output window!  You have to format your message like so:</p>
<p>std::cout &lt;&lt; &#8220;\n&#8221; &lt;&lt; file &lt;&lt; &#8220;(&#8221; &lt;&lt; line &lt;&lt;  &#8220;) : error: &#8221; &lt;&lt; message &lt;&lt; std::endl;</p>
<p>Then it will find it and jump to file and line when you select it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Asher Sterkin</title>
		<link>http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development/comment-page-1#comment-333</link>
		<dc:creator>Asher Sterkin</dc:creator>
		<pubDate>Thu, 23 Mar 2006 08:22:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.gamesfromwithin.dreamhosters.com/?p=342#comment-333</guid>
		<description>Noeal, Sean,



a good article, I really enjoyed reading it. There are too many things I fully agree with to be mentioned in this short comment. Let me highlight a point where I hold a different opinion, namely using mocks for TDD.



In &quot;Object interactions&quot; you wrote: &quot;using mocks frequently could be an indication that the code relies too much on heavy objects with complex interactions ...&quot; I do not think it&#039;s true. Even if you have &quot;many, loosely coupled, simpler objects&quot; you need somehow to break dependencies in order to test them in isolation. You may use fakes as Michael Feathers suggests, but manual creation of fakes could very soon turn to be too burdensome. You also need something to deal with system API as you described in &quot;Graphics, middleware, and other AIPs&quot;.



In fact there many system things you would like to have a control over within your test environment: random numbers, clock, file system, communication, even threads. Having a good mocks library would help here drammatically.



I think the problem is that for C++ we do not have one. Mockpp, at least in my opinion, is a too straitforward port from Java and C#, and is not suitable for C/C++ (similar to what happend with CppUnit).



For that reason I developed a small library, called bmock, which is more or less in line with JMock and NMock, but realistically takes into account C/C++ specifics.



With bmock a mock version of a function is just a simple IDL-like annotation: BMOCK_FUNCTION(int,f,1,(IN(int,x))). The rest is done automatically. Setting expectations is also very simple: BMOCK_EXPECT_RETURN(12,f(35));



The bmock library is built on the top of the C++ Boost library and uses its Boost.Test diagnostics (could be easily integrated with any other unit testing framework - I did it for CUnit!).</description>
		<content:encoded><![CDATA[<p>Noeal, Sean,</p>
<p>a good article, I really enjoyed reading it. There are too many things I fully agree with to be mentioned in this short comment. Let me highlight a point where I hold a different opinion, namely using mocks for TDD.</p>
<p>In &#8220;Object interactions&#8221; you wrote: &#8220;using mocks frequently could be an indication that the code relies too much on heavy objects with complex interactions &#8230;&#8221; I do not think it&#8217;s true. Even if you have &#8220;many, loosely coupled, simpler objects&#8221; you need somehow to break dependencies in order to test them in isolation. You may use fakes as Michael Feathers suggests, but manual creation of fakes could very soon turn to be too burdensome. You also need something to deal with system API as you described in &#8220;Graphics, middleware, and other AIPs&#8221;.</p>
<p>In fact there many system things you would like to have a control over within your test environment: random numbers, clock, file system, communication, even threads. Having a good mocks library would help here drammatically.</p>
<p>I think the problem is that for C++ we do not have one. Mockpp, at least in my opinion, is a too straitforward port from Java and C#, and is not suitable for C/C++ (similar to what happend with CppUnit).</p>
<p>For that reason I developed a small library, called bmock, which is more or less in line with JMock and NMock, but realistically takes into account C/C++ specifics.</p>
<p>With bmock a mock version of a function is just a simple IDL-like annotation: BMOCK_FUNCTION(int,f,1,(IN(int,x))). The rest is done automatically. Setting expectations is also very simple: BMOCK_EXPECT_RETURN(12,f(35));</p>
<p>The bmock library is built on the top of the C++ Boost library and uses its Boost.Test diagnostics (could be easily integrated with any other unit testing framework &#8211; I did it for CUnit!).</p>
]]></content:encoded>
	</item>
</channel>
</rss>

