<?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: How to program independent games	</title>
	<atom:link href="https://the-witness.net/news/2011/06/how-to-program-independent-games/feed/" rel="self" type="application/rss+xml" />
	<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/</link>
	<description>Explore an abandoned island.</description>
	<lastBuildDate>Sun, 17 Jun 2018 23:25:30 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.9</generator>
	<item>
		<title>
		By: Lawrence Loyer		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-8779174</link>

		<dc:creator><![CDATA[Lawrence Loyer]]></dc:creator>
		<pubDate>Sun, 17 Jun 2018 23:25:30 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-8779174</guid>

					<description><![CDATA[I&#039;ve been absent for a while, but now I remember why I used to love this blog. Thanks , I will try and check back more frequently. How frequently you update your web site?]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been absent for a while, but now I remember why I used to love this blog. Thanks , I will try and check back more frequently. How frequently you update your web site?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Erik		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3826961</link>

		<dc:creator><![CDATA[Erik]]></dc:creator>
		<pubDate>Fri, 04 Apr 2014 16:39:30 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3826961</guid>

					<description><![CDATA[This was incredible for me; answered a lot of questions that had been very vexing for me!]]></description>
			<content:encoded><![CDATA[<p>This was incredible for me; answered a lot of questions that had been very vexing for me!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Doriangre		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3113528</link>

		<dc:creator><![CDATA[Doriangre]]></dc:creator>
		<pubDate>Tue, 14 Jan 2014 15:01:21 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3113528</guid>

					<description><![CDATA[He kept turning away from the microphone. Made a lot of it impossible to listen to.]]></description>
			<content:encoded><![CDATA[<p>He kept turning away from the microphone. Made a lot of it impossible to listen to.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Darkhog		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-799410</link>

		<dc:creator><![CDATA[Darkhog]]></dc:creator>
		<pubDate>Thu, 13 Jun 2013 09:15:06 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-799410</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3645&quot;&gt;Maklak&lt;/a&gt;.

&#062;&#062; Well written code 
&#062;&#062; written in perl

Implying code written in Perl can be even well-written.

Anyway, I&#039;m much against &quot;self-documenting code&quot; philosophy (your other points are valid tho!). Why? I&#039;ve read many sources that are supposed to be &quot;self documenting&quot;, but it was still hard job requiring trial and error to even get idea of what code is doing. Easier than if variables are called Variable1, variable2, etc. and functions function1, function2, etc., but still.
NOTHING, I say NOTHING can replace properly placed comments. Even quick description in header of function/procedure that explains what it is supposed to do is good.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3645">Maklak</a>.</p>
<p>&gt;&gt; Well written code<br />
&gt;&gt; written in perl</p>
<p>Implying code written in Perl can be even well-written.</p>
<p>Anyway, I&#8217;m much against &#8220;self-documenting code&#8221; philosophy (your other points are valid tho!). Why? I&#8217;ve read many sources that are supposed to be &#8220;self documenting&#8221;, but it was still hard job requiring trial and error to even get idea of what code is doing. Easier than if variables are called Variable1, variable2, etc. and functions function1, function2, etc., but still.<br />
NOTHING, I say NOTHING can replace properly placed comments. Even quick description in header of function/procedure that explains what it is supposed to do is good.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Darkhog		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-797532</link>

		<dc:creator><![CDATA[Darkhog]]></dc:creator>
		<pubDate>Wed, 12 Jun 2013 18:13:20 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-797532</guid>

					<description><![CDATA[Also, deaf people would appreciate transcription of this talk. I&#039;m not deaf, but my friend is and she has troubles with understanding this and I don&#039;t know sign language so I can&#039;t translate it to her in real time (we communicate mainly by using Notepad or old pen&#038;paper in case computer&#039;s not available).]]></description>
			<content:encoded><![CDATA[<p>Also, deaf people would appreciate transcription of this talk. I&#8217;m not deaf, but my friend is and she has troubles with understanding this and I don&#8217;t know sign language so I can&#8217;t translate it to her in real time (we communicate mainly by using Notepad or old pen&amp;paper in case computer&#8217;s not available).</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Darkhog		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-797530</link>

		<dc:creator><![CDATA[Darkhog]]></dc:creator>
		<pubDate>Wed, 12 Jun 2013 18:04:27 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-797530</guid>

					<description><![CDATA[What I&#039;d like to see is series of tutorials about making simple, tile-based map editor from scratch (perhaps with libraries like SDL or Allegro to do rendering).]]></description>
			<content:encoded><![CDATA[<p>What I&#8217;d like to see is series of tutorials about making simple, tile-based map editor from scratch (perhaps with libraries like SDL or Allegro to do rendering).</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Zaphos		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-653459</link>

		<dc:creator><![CDATA[Zaphos]]></dc:creator>
		<pubDate>Mon, 01 Apr 2013 20:40:16 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-653459</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-649864&quot;&gt;Brad&lt;/a&gt;.

You might try a library that mixes C++ and python, like Panda3D.  If you&#039;re not doing anything technically fancy, that will probably let you live in python most of the time.  (Disclaimer: I haven&#039;t really used Panda3D, so can&#039;t say if it&#039;s the best C++/python lib ... it does appear to be used for a number of commercial disney projects, and CMU student projects, though.)]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-649864">Brad</a>.</p>
<p>You might try a library that mixes C++ and python, like Panda3D.  If you&#8217;re not doing anything technically fancy, that will probably let you live in python most of the time.  (Disclaimer: I haven&#8217;t really used Panda3D, so can&#8217;t say if it&#8217;s the best C++/python lib &#8230; it does appear to be used for a number of commercial disney projects, and CMU student projects, though.)</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-649865</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Sun, 31 Mar 2013 00:42:31 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-649865</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-649864&quot;&gt;Brad&lt;/a&gt;.

Python is only okay if you know for sure you will never need to make your game run fast. If it ever turns out that you do, then you suddenly have to rewrite the whole thing.

With something like Eve Online, I wouldn&#039;t be surprised if the gameplay code is in Python, but I can almost guarantee you that the renderer and other heavy-duty, performance-critical parts of the game are not.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-649864">Brad</a>.</p>
<p>Python is only okay if you know for sure you will never need to make your game run fast. If it ever turns out that you do, then you suddenly have to rewrite the whole thing.</p>
<p>With something like Eve Online, I wouldn&#8217;t be surprised if the gameplay code is in Python, but I can almost guarantee you that the renderer and other heavy-duty, performance-critical parts of the game are not.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Brad		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-649864</link>

		<dc:creator><![CDATA[Brad]]></dc:creator>
		<pubDate>Sun, 31 Mar 2013 00:02:28 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-649864</guid>

					<description><![CDATA[There is such a wealth of information generated by brilliant people who have great things to say, but this is the first time I have heard any advice on what I really want to do from someone who does it. I don&#039;t want to write code in a way that works for Blizzard or EA, I want to write games like Braid. Thank you for helping me do that!

I would like to hear your opinion on language choice. You sort of defended your choice of c++ to Giuliano Suminsky, and I&#039;m of course aware of the performance advantages, but would you say you need to write in it so you can optimize later on down the road?

Obviously I agree with you and everyone else that c++ is unpleasant, but mostly I just like writing in Python. I&#039;m not married to it, and if I need to switch to a lower level language, I will, but what do you think? And I know Eve Online is mostly in Stackless Python. I&#039;m really more interested in what you think is best for a project more similar in scope to Braid or Terraria.]]></description>
			<content:encoded><![CDATA[<p>There is such a wealth of information generated by brilliant people who have great things to say, but this is the first time I have heard any advice on what I really want to do from someone who does it. I don&#8217;t want to write code in a way that works for Blizzard or EA, I want to write games like Braid. Thank you for helping me do that!</p>
<p>I would like to hear your opinion on language choice. You sort of defended your choice of c++ to Giuliano Suminsky, and I&#8217;m of course aware of the performance advantages, but would you say you need to write in it so you can optimize later on down the road?</p>
<p>Obviously I agree with you and everyone else that c++ is unpleasant, but mostly I just like writing in Python. I&#8217;m not married to it, and if I need to switch to a lower level language, I will, but what do you think? And I know Eve Online is mostly in Stackless Python. I&#8217;m really more interested in what you think is best for a project more similar in scope to Braid or Terraria.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Pritchard		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-647475</link>

		<dc:creator><![CDATA[Pritchard]]></dc:creator>
		<pubDate>Fri, 29 Mar 2013 18:35:32 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-647475</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-643472&quot;&gt;Secretmapper&lt;/a&gt;.

I would say that architectural decisions are terribly important.  A bunch of tools you&#039;ll never use aren&#039;t.

These things are often best learned through refactoring.  Just make something work.  Then stare at your code.  What patterns can be isolated from the monolithic mess?

Otherwise, even with the right architecture, you&#039;ll probably get it wrong or not make anything at all.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-643472">Secretmapper</a>.</p>
<p>I would say that architectural decisions are terribly important.  A bunch of tools you&#8217;ll never use aren&#8217;t.</p>
<p>These things are often best learned through refactoring.  Just make something work.  Then stare at your code.  What patterns can be isolated from the monolithic mess?</p>
<p>Otherwise, even with the right architecture, you&#8217;ll probably get it wrong or not make anything at all.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Secretmapper		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-643472</link>

		<dc:creator><![CDATA[Secretmapper]]></dc:creator>
		<pubDate>Wed, 27 Mar 2013 03:03:17 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-643472</guid>

					<description><![CDATA[You do not know how much this had helped me Sir Jon! I am a 16 year old self taught programmer &#039;making&#039; games on and off but generally crank more code than concrete games because I get caught up with designing the architecture of my code. 

Then I learned KISS and YAGNI which made me think again on how important architecture is for my games. It made me remember you from Independent Game The Movie and decided to look up &quot;Jonathan Blow Programming&quot; in google and found this invaluable resource! Thank you again.]]></description>
			<content:encoded><![CDATA[<p>You do not know how much this had helped me Sir Jon! I am a 16 year old self taught programmer &#8216;making&#8217; games on and off but generally crank more code than concrete games because I get caught up with designing the architecture of my code. </p>
<p>Then I learned KISS and YAGNI which made me think again on how important architecture is for my games. It made me remember you from Independent Game The Movie and decided to look up &#8220;Jonathan Blow Programming&#8221; in google and found this invaluable resource! Thank you again.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: dave		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-57401</link>

		<dc:creator><![CDATA[dave]]></dc:creator>
		<pubDate>Mon, 22 Oct 2012 18:37:21 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-57401</guid>

					<description><![CDATA[nice talk. ironically (since the talk frames it as something you learn outside of school in the &quot;real world&quot;) in my very first programming class in college 14 years ago (Stanford CS106), one of the earliest slides simply said in big letters:

&quot;premature optimization is the root of all evil&quot;

of course it was somewhat tongue in cheek but the lecturer basically went on to make similar points as the first 20 minutes of the talk. great stuff, and i never forgot it

it&#039;s unfortunate that this isn&#039;t taught more widely though. now back in grad school, i see professors make this mistake all the time when instructing students how they should code :(]]></description>
			<content:encoded><![CDATA[<p>nice talk. ironically (since the talk frames it as something you learn outside of school in the &#8220;real world&#8221;) in my very first programming class in college 14 years ago (Stanford CS106), one of the earliest slides simply said in big letters:</p>
<p>&#8220;premature optimization is the root of all evil&#8221;</p>
<p>of course it was somewhat tongue in cheek but the lecturer basically went on to make similar points as the first 20 minutes of the talk. great stuff, and i never forgot it</p>
<p>it&#8217;s unfortunate that this isn&#8217;t taught more widely though. now back in grad school, i see professors make this mistake all the time when instructing students how they should code :(</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: developej		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-22235</link>

		<dc:creator><![CDATA[developej]]></dc:creator>
		<pubDate>Sat, 04 Aug 2012 16:38:47 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-22235</guid>

					<description><![CDATA[it&#039;s vertices, not vertexes! :)
good talk, enjoyed it]]></description>
			<content:encoded><![CDATA[<p>it&#8217;s vertices, not vertexes! :)<br />
good talk, enjoyed it</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Giuliano Suminsky		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-20129</link>

		<dc:creator><![CDATA[Giuliano Suminsky]]></dc:creator>
		<pubDate>Wed, 11 Jul 2012 21:49:45 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-20129</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-20099&quot;&gt;Jonathan Blow&lt;/a&gt;.

Thanks a lot, I really appreciate your insights! Congrats for Braid too, awsome game.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-20099">Jonathan Blow</a>.</p>
<p>Thanks a lot, I really appreciate your insights! Congrats for Braid too, awsome game.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-20099</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Wed, 11 Jul 2012 15:39:32 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-20099</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-20067&quot;&gt;Giuliano Suminsky&lt;/a&gt;.

It is important not to prematurely optimize, but it is also important to be able to optimize, later on, the things that need to go fast. Slower languages / systems / engines prevent you from being able to do that. If you program in those systems from the start, you are locked in, and you are unable to improve the performance of your game later when you need to.

So please don&#039;t be confused about what I am saying here. I am not anti-performance at all. I am saying that performance has its time and place, but that people are usually too worried about it. It is still important; the key is just to realize that most of the effort people put into worrying about efficiency is wasted, because it has negligible impact on the running code.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-20067">Giuliano Suminsky</a>.</p>
<p>It is important not to prematurely optimize, but it is also important to be able to optimize, later on, the things that need to go fast. Slower languages / systems / engines prevent you from being able to do that. If you program in those systems from the start, you are locked in, and you are unable to improve the performance of your game later when you need to.</p>
<p>So please don&#8217;t be confused about what I am saying here. I am not anti-performance at all. I am saying that performance has its time and place, but that people are usually too worried about it. It is still important; the key is just to realize that most of the effort people put into worrying about efficiency is wasted, because it has negligible impact on the running code.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Giuliano Suminsky		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-20067</link>

		<dc:creator><![CDATA[Giuliano Suminsky]]></dc:creator>
		<pubDate>Wed, 11 Jul 2012 04:06:24 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-20067</guid>

					<description><![CDATA[Hi...
Im trying to understand...you say to not premature optimize, and not care about other &quot;super performatic&quot; stuff,  in order too speed up development, makes a lot of sense...But this goes tottaly contrary to the choice of language for a one man indie project (c++ plus  directX, instead of flash, c#, java or whatever)..
When I heard you did Braid in c++ and directX the first thing I though was &quot;wow, this guy is one of those performance fanatic ones that do all by himselves, awesome!&quot;, I though you really enjoyed reinventing the wheel and stuff...so Im a bit surprised with the speech.

Dont get me wrong, since when I decided learn programming my focus is c++ and directX , Im one of those who ends up reinventing the wheel ( because I cant accept using things that I dont understand how they work, not because I think I can do better) ..
Lately I get introduced to c# and the difference in productivity is just scary, although I love programming in c++ and use d3d, I dont see much reason on using it for an indie project..I mean, getting stuff done is really what matter, and c++ is a big minus on the field.

So basically, why c++ if you not fanatic about performance? Does even the simplest c++ (&quot;performance careless&quot;) beats c# + unity or c# + XNA, at the point that the productivity of the later doesnt compensate? Was it more of a personal choice?(enjoying the language, more experience with it)..

It got longer than I expected, sorry, Im just really curious about your opinion. You see, I decided to learn programming because of games, and decided to focus on c++ and directX because of games, now all the indies coming in java/c#/unity are making me think about the direction I should take. And since you did REALLY great with the tools I most like, you are my main reference.]]></description>
			<content:encoded><![CDATA[<p>Hi&#8230;<br />
Im trying to understand&#8230;you say to not premature optimize, and not care about other &#8220;super performatic&#8221; stuff,  in order too speed up development, makes a lot of sense&#8230;But this goes tottaly contrary to the choice of language for a one man indie project (c++ plus  directX, instead of flash, c#, java or whatever)..<br />
When I heard you did Braid in c++ and directX the first thing I though was &#8220;wow, this guy is one of those performance fanatic ones that do all by himselves, awesome!&#8221;, I though you really enjoyed reinventing the wheel and stuff&#8230;so Im a bit surprised with the speech.</p>
<p>Dont get me wrong, since when I decided learn programming my focus is c++ and directX , Im one of those who ends up reinventing the wheel ( because I cant accept using things that I dont understand how they work, not because I think I can do better) ..<br />
Lately I get introduced to c# and the difference in productivity is just scary, although I love programming in c++ and use d3d, I dont see much reason on using it for an indie project..I mean, getting stuff done is really what matter, and c++ is a big minus on the field.</p>
<p>So basically, why c++ if you not fanatic about performance? Does even the simplest c++ (&#8220;performance careless&#8221;) beats c# + unity or c# + XNA, at the point that the productivity of the later doesnt compensate? Was it more of a personal choice?(enjoying the language, more experience with it)..</p>
<p>It got longer than I expected, sorry, Im just really curious about your opinion. You see, I decided to learn programming because of games, and decided to focus on c++ and directX because of games, now all the indies coming in java/c#/unity are making me think about the direction I should take. And since you did REALLY great with the tools I most like, you are my main reference.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: James McManus		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-7862</link>

		<dc:creator><![CDATA[James McManus]]></dc:creator>
		<pubDate>Thu, 01 Dec 2011 14:30:21 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-7862</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4642&quot;&gt;David Barbour&lt;/a&gt;.

I thought Jonathan&#039;s inline code suggestion was a good one, but for different reasons than he outlined. Basically, I would rather have a somewhat long method with the code organized into &quot;paragraphs&quot; than to extract each of those paragraphs into separate methods for no reason other than to reduce one method down to a nifty series of calls. It&#039;s nearly as easy to read/maintain the longer method, and much easier to read the rest of the code if it isn&#039;t polluted by a bunch of little one-off private methods.

If I find myself writing very similar &quot;paragraphs&quot; two or three times in different places, then it&#039;s time to go back and extract a method or even change the object structure. Of course, that&#039;s in the context of a language and IDE that make such refactoring simple - and I&#039;m not writing public-facing APIs where such changes ripple out to other people. I might have to reconsider the approach in a different scenario. Also, some people like to unit test *everything* including private methods. I&#039;m not one of those people, but I would preemptively break things into small, testable chunks if I were.

Anyway, this situation is uncommon (for me, at least) because other design considerations usually limit the size of methods.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4642">David Barbour</a>.</p>
<p>I thought Jonathan&#8217;s inline code suggestion was a good one, but for different reasons than he outlined. Basically, I would rather have a somewhat long method with the code organized into &#8220;paragraphs&#8221; than to extract each of those paragraphs into separate methods for no reason other than to reduce one method down to a nifty series of calls. It&#8217;s nearly as easy to read/maintain the longer method, and much easier to read the rest of the code if it isn&#8217;t polluted by a bunch of little one-off private methods.</p>
<p>If I find myself writing very similar &#8220;paragraphs&#8221; two or three times in different places, then it&#8217;s time to go back and extract a method or even change the object structure. Of course, that&#8217;s in the context of a language and IDE that make such refactoring simple &#8211; and I&#8217;m not writing public-facing APIs where such changes ripple out to other people. I might have to reconsider the approach in a different scenario. Also, some people like to unit test *everything* including private methods. I&#8217;m not one of those people, but I would preemptively break things into small, testable chunks if I were.</p>
<p>Anyway, this situation is uncommon (for me, at least) because other design considerations usually limit the size of methods.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Truls		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-6551</link>

		<dc:creator><![CDATA[Truls]]></dc:creator>
		<pubDate>Wed, 19 Oct 2011 06:12:32 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-6551</guid>

					<description><![CDATA[Thanks for giving a great talk. It really made me reconsider a few &quot;truths&quot; regarding code improvements. It was also eye-opening in the regard of respecting the opinion of people that are actually getting things done.]]></description>
			<content:encoded><![CDATA[<p>Thanks for giving a great talk. It really made me reconsider a few &#8220;truths&#8221; regarding code improvements. It was also eye-opening in the regard of respecting the opinion of people that are actually getting things done.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: chris walsh		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-5958</link>

		<dc:creator><![CDATA[chris walsh]]></dc:creator>
		<pubDate>Sat, 01 Oct 2011 18:50:34 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-5958</guid>

					<description><![CDATA[...as a follow up.. in all the projects worked on,  not one person in teams of  25+ experienced devs  once considered unit testing as a good idea.

Back in the olden days (ah...), people just gravitated towards the &#039;best way&#039; of doing things by refining the way they worked and the methods they used based on a combination of their own ideas, and ideas of others that they encountered... you ended up with 2 types of people:

innovators - made the new methods or ideas, and showed them through demos
subscribers -everyone else... once something was shown to be better, it was adopted

.. that mechanism evolved because it works... but the current status quo - and this is only my opinion - is that people have been allowed to assume the role of &#039;innovators&#039; purely because they a) wrote a paper with a title that caused a high percentage of people to read it, or (worse) they didn&#039;t write the paper, but agree with it, and b) the content of the paper went unchallenged... usually because it is wrapped in some kind of mathematical proof that no-one is either able (or can be  bothered) to dispute.

result -&#062; bad dev + programming practices adopted by the students... some of those become teachers, and the cycle repeats.. dont do it!!

If an idea or a new way of doing things is better than the old way, people  can generally see the benefits and decide for themselves.. thats how progress is made... but its  bothersome to me to see clearly poor methods being taught as the best way to do things, when they have not been universally accepted &#039;in the field&#039; (or even tried!) , and instead only formed and accepted in academia, when by definition those 2 fields are mutually exclusive!]]></description>
			<content:encoded><![CDATA[<p>&#8230;as a follow up.. in all the projects worked on,  not one person in teams of  25+ experienced devs  once considered unit testing as a good idea.</p>
<p>Back in the olden days (ah&#8230;), people just gravitated towards the &#8216;best way&#8217; of doing things by refining the way they worked and the methods they used based on a combination of their own ideas, and ideas of others that they encountered&#8230; you ended up with 2 types of people:</p>
<p>innovators &#8211; made the new methods or ideas, and showed them through demos<br />
subscribers -everyone else&#8230; once something was shown to be better, it was adopted</p>
<p>.. that mechanism evolved because it works&#8230; but the current status quo &#8211; and this is only my opinion &#8211; is that people have been allowed to assume the role of &#8216;innovators&#8217; purely because they a) wrote a paper with a title that caused a high percentage of people to read it, or (worse) they didn&#8217;t write the paper, but agree with it, and b) the content of the paper went unchallenged&#8230; usually because it is wrapped in some kind of mathematical proof that no-one is either able (or can be  bothered) to dispute.</p>
<p>result -&gt; bad dev + programming practices adopted by the students&#8230; some of those become teachers, and the cycle repeats.. dont do it!!</p>
<p>If an idea or a new way of doing things is better than the old way, people  can generally see the benefits and decide for themselves.. thats how progress is made&#8230; but its  bothersome to me to see clearly poor methods being taught as the best way to do things, when they have not been universally accepted &#8216;in the field&#8217; (or even tried!) , and instead only formed and accepted in academia, when by definition those 2 fields are mutually exclusive!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: chris walsh		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-5957</link>

		<dc:creator><![CDATA[chris walsh]]></dc:creator>
		<pubDate>Sat, 01 Oct 2011 18:18:08 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-5957</guid>

					<description><![CDATA[Totally agree on the unit testing...  been writing games now for 25 years, either alone or as part of a larger team.. never once in all that time thought that unit testing would come in useful! It&#039;s academia coming up with abstract notions with no basis in the physical world and very glad you didn&#039;t recommend it! ditto for all the other half baked constructs that are touted as productivity enhancing... sprints indeed!]]></description>
			<content:encoded><![CDATA[<p>Totally agree on the unit testing&#8230;  been writing games now for 25 years, either alone or as part of a larger team.. never once in all that time thought that unit testing would come in useful! It&#8217;s academia coming up with abstract notions with no basis in the physical world and very glad you didn&#8217;t recommend it! ditto for all the other half baked constructs that are touted as productivity enhancing&#8230; sprints indeed!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Leonard Ritter		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4771</link>

		<dc:creator><![CDATA[Leonard Ritter]]></dc:creator>
		<pubDate>Thu, 18 Aug 2011 12:30:42 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-4771</guid>

					<description><![CDATA[Jonathan, thanks for helping me to realize how right I was all the time, when I was thinking of myself as being kind of ignorant. I had the intuitive feeling how to run things, but had trouble articulating the reasons.

This talk is a real weapon when having to argue with academics, performance nazis and occasionally myself. :D

Also thanks for using the words &quot;acid trip&quot; in your talk. ;)]]></description>
			<content:encoded><![CDATA[<p>Jonathan, thanks for helping me to realize how right I was all the time, when I was thinking of myself as being kind of ignorant. I had the intuitive feeling how to run things, but had trouble articulating the reasons.</p>
<p>This talk is a real weapon when having to argue with academics, performance nazis and occasionally myself. :D</p>
<p>Also thanks for using the words &#8220;acid trip&#8221; in your talk. ;)</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: jeremy		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4764</link>

		<dc:creator><![CDATA[jeremy]]></dc:creator>
		<pubDate>Wed, 17 Aug 2011 12:05:59 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-4764</guid>

					<description><![CDATA[is the synchronized slides/audio video still available?]]></description>
			<content:encoded><![CDATA[<p>is the synchronized slides/audio video still available?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4763</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Wed, 17 Aug 2011 07:51:08 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-4763</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4762&quot;&gt;Anonymous&lt;/a&gt;.

As a one-man team especially, it is just about doing a good job and not breaking stuff.

Inevitably, yes, some things will break, but often when that happens it is a sign that those things need to be revised to become simpler.

Sometimes, though, breakage is just a fact of life, and I just suck it up and deal with it, fixing these breakages whenever they happen.  Yes, it feels bad when things break like this and you don&#039;t notice for a while, but I have never been in a situation where the amount of time spent fixing breakages like this exceeds the amount of time spent writing and running tests.  In fact it doesn&#039;t come anywhere close.

I imagine things would be very different for a bigger team, though.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4762">Anonymous</a>.</p>
<p>As a one-man team especially, it is just about doing a good job and not breaking stuff.</p>
<p>Inevitably, yes, some things will break, but often when that happens it is a sign that those things need to be revised to become simpler.</p>
<p>Sometimes, though, breakage is just a fact of life, and I just suck it up and deal with it, fixing these breakages whenever they happen.  Yes, it feels bad when things break like this and you don&#8217;t notice for a while, but I have never been in a situation where the amount of time spent fixing breakages like this exceeds the amount of time spent writing and running tests.  In fact it doesn&#8217;t come anywhere close.</p>
<p>I imagine things would be very different for a bigger team, though.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Anonymous		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4762</link>

		<dc:creator><![CDATA[Anonymous]]></dc:creator>
		<pubDate>Tue, 16 Aug 2011 18:24:34 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-4762</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4761&quot;&gt;Jonathan Blow&lt;/a&gt;.

Sorry, I should be less specific and ask about any kind of automation of testing. How do you ensure that you learn about previously working things being broken after making code changes? If you&#039;re a one-man team, it would be difficult to regularly manually test every single thing so I guess it&#039;s just about being diligent?]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4761">Jonathan Blow</a>.</p>
<p>Sorry, I should be less specific and ask about any kind of automation of testing. How do you ensure that you learn about previously working things being broken after making code changes? If you&#8217;re a one-man team, it would be difficult to regularly manually test every single thing so I guess it&#8217;s just about being diligent?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4761</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Tue, 16 Aug 2011 17:55:34 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-4761</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4758&quot;&gt;Anonymous&lt;/a&gt;.

I have never done unit testing and I don&#039;t find it a very useful concept...]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4758">Anonymous</a>.</p>
<p>I have never done unit testing and I don&#8217;t find it a very useful concept&#8230;</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Anonymous		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4758</link>

		<dc:creator><![CDATA[Anonymous]]></dc:creator>
		<pubDate>Tue, 16 Aug 2011 11:53:59 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-4758</guid>

					<description><![CDATA[Do you find Unit Testing a useful tool, as an indie?]]></description>
			<content:encoded><![CDATA[<p>Do you find Unit Testing a useful tool, as an indie?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4743</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Sun, 14 Aug 2011 23:53:09 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-4743</guid>

					<description><![CDATA[The answer to this question is usually no.  There are a few good video game schools but most of them seem to be bad.  I don&#039;t know what the possibilities are in France and how good they are, but in the absence of this knowledge my advice is to go for the CS school.  Either way, though, make sure it&#039;s a good school, otherwise you might do better just learning off the internet.]]></description>
			<content:encoded><![CDATA[<p>The answer to this question is usually no.  There are a few good video game schools but most of them seem to be bad.  I don&#8217;t know what the possibilities are in France and how good they are, but in the absence of this knowledge my advice is to go for the CS school.  Either way, though, make sure it&#8217;s a good school, otherwise you might do better just learning off the internet.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Phen0m		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4729</link>

		<dc:creator><![CDATA[Phen0m]]></dc:creator>
		<pubDate>Sat, 13 Aug 2011 07:46:20 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-4729</guid>

					<description><![CDATA[Hi Jonathan!

Thanks for the lecture, was really helpful for me.
I&#039;m currently learning computer programing as I would like to be making indie games in my life. 
I&#039;m coming to a point where I have to choose which University/College I want to study in for the upcoming years (I live in France). So, I am asking you: do you think that a video games-oriented school is a better choice than a Computer Science-oriented one? Even if, indeed, I know that I won&#039;t probably agree to most of the design techniques I&#039;m gonna study... Which one appear to be the &quot;least worst&quot;?

Thanks for all!]]></description>
			<content:encoded><![CDATA[<p>Hi Jonathan!</p>
<p>Thanks for the lecture, was really helpful for me.<br />
I&#8217;m currently learning computer programing as I would like to be making indie games in my life.<br />
I&#8217;m coming to a point where I have to choose which University/College I want to study in for the upcoming years (I live in France). So, I am asking you: do you think that a video games-oriented school is a better choice than a Computer Science-oriented one? Even if, indeed, I know that I won&#8217;t probably agree to most of the design techniques I&#8217;m gonna study&#8230; Which one appear to be the &#8220;least worst&#8221;?</p>
<p>Thanks for all!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Tomas Thor		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4698</link>

		<dc:creator><![CDATA[Tomas Thor]]></dc:creator>
		<pubDate>Wed, 10 Aug 2011 12:17:31 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-4698</guid>

					<description><![CDATA[What engine/editor do you use? In-house handcoded?]]></description>
			<content:encoded><![CDATA[<p>What engine/editor do you use? In-house handcoded?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Vlad Sanchez		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4694</link>

		<dc:creator><![CDATA[Vlad Sanchez]]></dc:creator>
		<pubDate>Wed, 10 Aug 2011 03:39:48 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-4694</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3652&quot;&gt;Paul Du Bois&lt;/a&gt;.

Are you the MySQL book author? I have your books! =D]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3652">Paul Du Bois</a>.</p>
<p>Are you the MySQL book author? I have your books! =D</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4650</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Thu, 04 Aug 2011 14:07:17 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-4650</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4642&quot;&gt;David Barbour&lt;/a&gt;.

Yeah, but even within a namespace or file, you have to build a mental understanding of that call graph, and that carries overhead...]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4642">David Barbour</a>.</p>
<p>Yeah, but even within a namespace or file, you have to build a mental understanding of that call graph, and that carries overhead&#8230;</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: David Barbour		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4642</link>

		<dc:creator><![CDATA[David Barbour]]></dc:creator>
		<pubDate>Thu, 04 Aug 2011 00:49:21 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-4642</guid>

					<description><![CDATA[Regarding straight-line code:  I do not agree with your reasoning for this recommendation. I would suggest use of anonymous namespaces (in C++) or &#039;static&#039; functions (in a .c or .cpp file) to control the scope of something you know is local. 

By extracting these blocks of code and naming them, we achieve a lot of implicit documentation and achieve a higher-level view. An optimizer will not have difficulty inlining the code.]]></description>
			<content:encoded><![CDATA[<p>Regarding straight-line code:  I do not agree with your reasoning for this recommendation. I would suggest use of anonymous namespaces (in C++) or &#8216;static&#8217; functions (in a .c or .cpp file) to control the scope of something you know is local. </p>
<p>By extracting these blocks of code and naming them, we achieve a lot of implicit documentation and achieve a higher-level view. An optimizer will not have difficulty inlining the code.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Phil Willis		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-4570</link>

		<dc:creator><![CDATA[Phil Willis]]></dc:creator>
		<pubDate>Thu, 28 Jul 2011 05:07:11 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-4570</guid>

					<description><![CDATA[Jonathan

Thanks for the incredible lecture.  Very useful.

I&#039;m from a software engineering background, but have recently moved into another incredibly time-consuming field: animation.

The great news is: all your points about premature optimization also apply to being an independant animator.

Especially the &quot;how many years of my life can I spend on this project&quot; optimization problem, the &quot;only protoype an idea until you work out whether it can go further&quot; and the philosophy to &quot;always work on your best idea&quot;.

I&#039;m in two minds about missing out on the video of The Witness.  Maybe I&#039;ll just bite my nails and wait for the official release.

Can&#039;t wait.
--Phil]]></description>
			<content:encoded><![CDATA[<p>Jonathan</p>
<p>Thanks for the incredible lecture.  Very useful.</p>
<p>I&#8217;m from a software engineering background, but have recently moved into another incredibly time-consuming field: animation.</p>
<p>The great news is: all your points about premature optimization also apply to being an independant animator.</p>
<p>Especially the &#8220;how many years of my life can I spend on this project&#8221; optimization problem, the &#8220;only protoype an idea until you work out whether it can go further&#8221; and the philosophy to &#8220;always work on your best idea&#8221;.</p>
<p>I&#8217;m in two minds about missing out on the video of The Witness.  Maybe I&#8217;ll just bite my nails and wait for the official release.</p>
<p>Can&#8217;t wait.<br />
&#8211;Phil</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jon Colverson		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3831</link>

		<dc:creator><![CDATA[Jon Colverson]]></dc:creator>
		<pubDate>Wed, 13 Jul 2011 04:29:52 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3831</guid>

					<description><![CDATA[Hello. I just wanted to say how much I enjoyed this talk. I very much agree with your programming style. I practically punched the air with delight when you got to the &quot;straight-line&quot; code section. I now have somewhere to send the next person who turns their nose up at one of my thousand line functions with half a dozen scope blocks!

The stuff at the beginning about what it takes to finish a game was something I hadn&#039;t thought about before, but that also agrees with my experience. I guess it&#039;s no coincidence that when I started to really focus on simplicity is also when I started to finish the games I started.]]></description>
			<content:encoded><![CDATA[<p>Hello. I just wanted to say how much I enjoyed this talk. I very much agree with your programming style. I practically punched the air with delight when you got to the &#8220;straight-line&#8221; code section. I now have somewhere to send the next person who turns their nose up at one of my thousand line functions with half a dozen scope blocks!</p>
<p>The stuff at the beginning about what it takes to finish a game was something I hadn&#8217;t thought about before, but that also agrees with my experience. I guess it&#8217;s no coincidence that when I started to really focus on simplicity is also when I started to finish the games I started.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3770</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Tue, 05 Jul 2011 08:01:51 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3770</guid>

					<description><![CDATA[The issue isn&#039;t whether to use a hash table or not.  That is one specific example and a decision one way or another does not matter very much.  The issue is about the 57 different data structures you would end up having in a complicated program that does a lot of different things and has a lot of different data access patterns.  And it&#039;s not just typing in those 57 different structures (or using pre-written ones), it&#039;s maintaining a running understanding of all the wrinkles of complexity that get introduced by doing that.

Keep in mind that interface is different from implementation!  If I am using arrays to do stuff, I probably still use a very simple interface where you say, hey, give me the item corresponding to this name, or whatever -- just like you would with a hash table.  So there&#039;s not any readability difference to speak of, there, when it comes to implementation differences.

But again hash tables are sort-of a red herring.  The real issue is, like, I have some struct and I actually want to index it 3 different ways...  then multiply that by lots of different data structures in the game.]]></description>
			<content:encoded><![CDATA[<p>The issue isn&#8217;t whether to use a hash table or not.  That is one specific example and a decision one way or another does not matter very much.  The issue is about the 57 different data structures you would end up having in a complicated program that does a lot of different things and has a lot of different data access patterns.  And it&#8217;s not just typing in those 57 different structures (or using pre-written ones), it&#8217;s maintaining a running understanding of all the wrinkles of complexity that get introduced by doing that.</p>
<p>Keep in mind that interface is different from implementation!  If I am using arrays to do stuff, I probably still use a very simple interface where you say, hey, give me the item corresponding to this name, or whatever &#8212; just like you would with a hash table.  So there&#8217;s not any readability difference to speak of, there, when it comes to implementation differences.</p>
<p>But again hash tables are sort-of a red herring.  The real issue is, like, I have some struct and I actually want to index it 3 different ways&#8230;  then multiply that by lots of different data structures in the game.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Russell Aasland		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3769</link>

		<dc:creator><![CDATA[Russell Aasland]]></dc:creator>
		<pubDate>Mon, 04 Jul 2011 23:07:56 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3769</guid>

					<description><![CDATA[Jonathan, I thought that a lot of what you had to discuss was really good information.  I&#039;d be curious to understand more about data structures as premature optimization.  I totally get the &#039;Doom&#039; example as we do similar things with our file formats where I work.  It just seemed to me though that a lot of your argument came down to was &#039;why write a hash table when an array is easier&#039;.  While I agree with that (and see it as a subset of your later &#039;don&#039;t do complicated things&#039; argument), I don&#039;t see how that exactly translate to &#039;don&#039;t use&#039; in cases where maybe there already exists a hash table data structure to use, say from the STL or possibly a pre-existing company library.

It seems like someone would be able to write arguably simpler and clearer code by using an actual, let&#039;s say, map with a reasonable  interface than it would be to emulate a map with a array just because you wouldn&#039;t have written a map.]]></description>
			<content:encoded><![CDATA[<p>Jonathan, I thought that a lot of what you had to discuss was really good information.  I&#8217;d be curious to understand more about data structures as premature optimization.  I totally get the &#8216;Doom&#8217; example as we do similar things with our file formats where I work.  It just seemed to me though that a lot of your argument came down to was &#8216;why write a hash table when an array is easier&#8217;.  While I agree with that (and see it as a subset of your later &#8216;don&#8217;t do complicated things&#8217; argument), I don&#8217;t see how that exactly translate to &#8216;don&#8217;t use&#8217; in cases where maybe there already exists a hash table data structure to use, say from the STL or possibly a pre-existing company library.</p>
<p>It seems like someone would be able to write arguably simpler and clearer code by using an actual, let&#8217;s say, map with a reasonable  interface than it would be to emulate a map with a array just because you wouldn&#8217;t have written a map.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Nick Harris		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3761</link>

		<dc:creator><![CDATA[Nick Harris]]></dc:creator>
		<pubDate>Sun, 03 Jul 2011 16:59:55 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3761</guid>

					<description><![CDATA[I have spent the last 20 years involved in the research and development of my own tools.

Yes, you read that right...

Yet, I am also optimising the &quot;years of my life per program implementation&quot;.

It&#039;s just that my game is quite a bit bigger than other lone amateurs normally attempt:

&quot;METAVERSE&quot;

Early on I realised that I&#039;d never complete something of its scale without bugs in C++ or by using conventional content creation methods. Consequently, I don&#039;t feel the last couple of decades has been a waste of time (although, there were a lot of paradigms like OO and FP to learn in enough depth in order to comprehend the &quot;subtle negatives chained&quot; to their ideas and what, less flashy, but more robust and integrated approaches had been unfairly overshadowed), as I am confident that my language will boost my productivity. Repeatedly. Also, my faith in procedurally-generated content - particularly, thematically consistent emergent narratives - and lack of financial pressures (it is a hobby project without deadline), free me from the majority of burdens you listed on your 9th Slide.

Actually, that&#039;s inaccurate. Neither the R&#038;D or the game design are a burden.

I am enjoying every minute of it - and to think I only started the project to avoid boredom!

Yay, go me!]]></description>
			<content:encoded><![CDATA[<p>I have spent the last 20 years involved in the research and development of my own tools.</p>
<p>Yes, you read that right&#8230;</p>
<p>Yet, I am also optimising the &#8220;years of my life per program implementation&#8221;.</p>
<p>It&#8217;s just that my game is quite a bit bigger than other lone amateurs normally attempt:</p>
<p>&#8220;METAVERSE&#8221;</p>
<p>Early on I realised that I&#8217;d never complete something of its scale without bugs in C++ or by using conventional content creation methods. Consequently, I don&#8217;t feel the last couple of decades has been a waste of time (although, there were a lot of paradigms like OO and FP to learn in enough depth in order to comprehend the &#8220;subtle negatives chained&#8221; to their ideas and what, less flashy, but more robust and integrated approaches had been unfairly overshadowed), as I am confident that my language will boost my productivity. Repeatedly. Also, my faith in procedurally-generated content &#8211; particularly, thematically consistent emergent narratives &#8211; and lack of financial pressures (it is a hobby project without deadline), free me from the majority of burdens you listed on your 9th Slide.</p>
<p>Actually, that&#8217;s inaccurate. Neither the R&amp;D or the game design are a burden.</p>
<p>I am enjoying every minute of it &#8211; and to think I only started the project to avoid boredom!</p>
<p>Yay, go me!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Luke		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3734</link>

		<dc:creator><![CDATA[Luke]]></dc:creator>
		<pubDate>Thu, 30 Jun 2011 20:12:14 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3734</guid>

					<description><![CDATA[Thanks for posting that - really enjoyed the talk. I came to a lot of the same conclusions with developing web applications, and more recently with games - like how designing things to be too general and abstract up front leads to wasted effort and an additional layer of complexity. And how large, many-line-of-code methods can be easier to deal with than a bunch of &quot;properly modularized&quot; small routines. 

Cool to hear someone articulate these things so well.]]></description>
			<content:encoded><![CDATA[<p>Thanks for posting that &#8211; really enjoyed the talk. I came to a lot of the same conclusions with developing web applications, and more recently with games &#8211; like how designing things to be too general and abstract up front leads to wasted effort and an additional layer of complexity. And how large, many-line-of-code methods can be easier to deal with than a bunch of &#8220;properly modularized&#8221; small routines. </p>
<p>Cool to hear someone articulate these things so well.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Archagon		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3714</link>

		<dc:creator><![CDATA[Archagon]]></dc:creator>
		<pubDate>Wed, 29 Jun 2011 03:50:52 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3714</guid>

					<description><![CDATA[Thank you for the great lecture! This is all stuff I&#039;ve been learning in my first few months at a game company -- we never covered any of this in school.]]></description>
			<content:encoded><![CDATA[<p>Thank you for the great lecture! This is all stuff I&#8217;ve been learning in my first few months at a game company &#8212; we never covered any of this in school.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: paul eres		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3689</link>

		<dc:creator><![CDATA[paul eres]]></dc:creator>
		<pubDate>Mon, 27 Jun 2011 21:00:45 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3689</guid>

					<description><![CDATA[actually a lot of this stuff i learned from chris crawford&#039;s writings; he covers most of these topics in his books and website, some of it dating back to the early 80s where he wrote his art of computer game design book. so these issues are age-old issues (although still relevant) in game programming. it&#039;s good to see it again though (and reaching an audience which wouldn&#039;t otherwise have seen these topics)

as an aside, it&#039;s interesting to see line count, just as a curiosity. braid was a lot larger than the games i&#039;ve made; but i still work in game maker / gml, which is a higher-level language. immortal defense had only 18k lines, but i made it in 6 months, so that&#039;s 3000 lines a month. it&#039;d be interesting to see line counts for other indie games]]></description>
			<content:encoded><![CDATA[<p>actually a lot of this stuff i learned from chris crawford&#8217;s writings; he covers most of these topics in his books and website, some of it dating back to the early 80s where he wrote his art of computer game design book. so these issues are age-old issues (although still relevant) in game programming. it&#8217;s good to see it again though (and reaching an audience which wouldn&#8217;t otherwise have seen these topics)</p>
<p>as an aside, it&#8217;s interesting to see line count, just as a curiosity. braid was a lot larger than the games i&#8217;ve made; but i still work in game maker / gml, which is a higher-level language. immortal defense had only 18k lines, but i made it in 6 months, so that&#8217;s 3000 lines a month. it&#8217;d be interesting to see line counts for other indie games</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Duncan Keller		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3688</link>

		<dc:creator><![CDATA[Duncan Keller]]></dc:creator>
		<pubDate>Mon, 27 Jun 2011 20:25:14 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3688</guid>

					<description><![CDATA[Haha, it kills me to hear The Witness being demoed and not being able to see anything. Still, great talk, very though provoking, especially as a student currently going through a CS program.]]></description>
			<content:encoded><![CDATA[<p>Haha, it kills me to hear The Witness being demoed and not being able to see anything. Still, great talk, very though provoking, especially as a student currently going through a CS program.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Nicholas Featherby		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3679</link>

		<dc:creator><![CDATA[Nicholas Featherby]]></dc:creator>
		<pubDate>Mon, 27 Jun 2011 03:50:09 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3679</guid>

					<description><![CDATA[Totally off topic, but you sound kinda like Sean Maher. Just saying.

But more on topic, awesome presentation.]]></description>
			<content:encoded><![CDATA[<p>Totally off topic, but you sound kinda like Sean Maher. Just saying.</p>
<p>But more on topic, awesome presentation.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Johnson Lin		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3678</link>

		<dc:creator><![CDATA[Johnson Lin]]></dc:creator>
		<pubDate>Mon, 27 Jun 2011 03:13:32 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3678</guid>

					<description><![CDATA[Thanks for your reply, Jon. :)

Actually we did a similar project before, and that was such a super-rushed class project that we dare not look at that code anymore... however, during that period of time we also gained &quot;some&quot; knowledge of various methodologies &quot;to write better programs&quot;, and also we were becoming more comfortable with using some advanced C++ features and programming techniques. So, we ended up devising layers of abstractions and tried to write better quality code (or so we thought) and at some point we felt that the code looked good, really :p

&quot;The second-system effect&quot; just come to my mind. Funny thing is my friend and I both read the Mythical Man-Month even before we did both projects. Well..guess sometimes reading good books is just nowhere near enough when we&#039;re really lack of experience. Maybe we even confused straightforward code with spaghetti code (by thinking that writing everything straightforwardly is bound to be spaghetti in the long run). 

Still much to learn. Thank you again. :)]]></description>
			<content:encoded><![CDATA[<p>Thanks for your reply, Jon. :)</p>
<p>Actually we did a similar project before, and that was such a super-rushed class project that we dare not look at that code anymore&#8230; however, during that period of time we also gained &#8220;some&#8221; knowledge of various methodologies &#8220;to write better programs&#8221;, and also we were becoming more comfortable with using some advanced C++ features and programming techniques. So, we ended up devising layers of abstractions and tried to write better quality code (or so we thought) and at some point we felt that the code looked good, really :p</p>
<p>&#8220;The second-system effect&#8221; just come to my mind. Funny thing is my friend and I both read the Mythical Man-Month even before we did both projects. Well..guess sometimes reading good books is just nowhere near enough when we&#8217;re really lack of experience. Maybe we even confused straightforward code with spaghetti code (by thinking that writing everything straightforwardly is bound to be spaghetti in the long run). </p>
<p>Still much to learn. Thank you again. :)</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3675</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Sun, 26 Jun 2011 19:47:41 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3675</guid>

					<description><![CDATA[It&#039;s really hard to give opinions on concrete questions like this without knowing a lot about the precise situation / project.

And anyway, 15k lines of code is not really a big enough program that you start running into structural issues.  So it probably doesn&#039;t matter that much.

That said, one thing you said stuck out like a sore thumb.  The idea of wrapping two objects in a third object just so that the other two objects &quot;can communicate&quot;, that just seems like the kind of severe overabstraction typical to academia and programming books, that only causes problems in real life (in part for exactly the reason you are talking about -- any changes in procedure definitions / parameters / etc are now twice as much work to do as they were before).  Why don&#039;t you just, you know, let the two objects communicate?]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s really hard to give opinions on concrete questions like this without knowing a lot about the precise situation / project.</p>
<p>And anyway, 15k lines of code is not really a big enough program that you start running into structural issues.  So it probably doesn&#8217;t matter that much.</p>
<p>That said, one thing you said stuck out like a sore thumb.  The idea of wrapping two objects in a third object just so that the other two objects &#8220;can communicate&#8221;, that just seems like the kind of severe overabstraction typical to academia and programming books, that only causes problems in real life (in part for exactly the reason you are talking about &#8212; any changes in procedure definitions / parameters / etc are now twice as much work to do as they were before).  Why don&#8217;t you just, you know, let the two objects communicate?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Johnson Lin		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3667</link>

		<dc:creator><![CDATA[Johnson Lin]]></dc:creator>
		<pubDate>Sun, 26 Jun 2011 06:16:04 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3667</guid>

					<description><![CDATA[Hello Jon, excellent talk!

This talk enlightened me a lot. I&#039;ve recently been looking at the code my friends and I written for our game, and thinking about where it got too complicated than it should be, but I wasn&#039;t very sure ... and this talk really clarified many things for us. 

I&#039;ve got a few question though. You talked about optimizations, data structures, algorithms and generalizations, however what&#039;s your take on &quot;design patterns&quot;? or it&#039;s already covered by &quot;don&#039;t over-generalize things&quot;? It&#039;s like, for instance, should we simply stick to the most basic switch-case for state machines, or should we use a state pattern? (or even use a state machine lib? I guess no.) Or any similar situation like: we know there&#039;s a pattern for this job, and the use of this pattern will make the related code &quot;looks cleaner&quot; and should have more &quot;maintainability&quot;, or have more &quot;semantics&quot; and &quot;more expressive&quot;, and blah blah blah, but it&#039;s bound to be adding a few classes here and there. Thoughts? :)

And there might be a more &quot;architectural&quot; thing. We write our game code in a way that the game model objects never touch any graphic-related code or graphic related object directly, and vice versa, and then we use a composition object to hold the corresponding model and graphic object (so that they can communicate). This certainly made different parts of the code stays pure and don&#039;t look spagetti, but we also find ourselves sometimes have to punch through an additional layer to add a specific functionality. Do you think this is clearly an over-architecture/abstraction? 

To add some context, we used an open source graphic engine and we currently have around 15K LoC (code only) and 2 programmers, and it&#039;s our first project over 10K LoC boundary. We sort of only did this in our spare time though, it was never a full-time project.

Thanks in advance!]]></description>
			<content:encoded><![CDATA[<p>Hello Jon, excellent talk!</p>
<p>This talk enlightened me a lot. I&#8217;ve recently been looking at the code my friends and I written for our game, and thinking about where it got too complicated than it should be, but I wasn&#8217;t very sure &#8230; and this talk really clarified many things for us. </p>
<p>I&#8217;ve got a few question though. You talked about optimizations, data structures, algorithms and generalizations, however what&#8217;s your take on &#8220;design patterns&#8221;? or it&#8217;s already covered by &#8220;don&#8217;t over-generalize things&#8221;? It&#8217;s like, for instance, should we simply stick to the most basic switch-case for state machines, or should we use a state pattern? (or even use a state machine lib? I guess no.) Or any similar situation like: we know there&#8217;s a pattern for this job, and the use of this pattern will make the related code &#8220;looks cleaner&#8221; and should have more &#8220;maintainability&#8221;, or have more &#8220;semantics&#8221; and &#8220;more expressive&#8221;, and blah blah blah, but it&#8217;s bound to be adding a few classes here and there. Thoughts? :)</p>
<p>And there might be a more &#8220;architectural&#8221; thing. We write our game code in a way that the game model objects never touch any graphic-related code or graphic related object directly, and vice versa, and then we use a composition object to hold the corresponding model and graphic object (so that they can communicate). This certainly made different parts of the code stays pure and don&#8217;t look spagetti, but we also find ourselves sometimes have to punch through an additional layer to add a specific functionality. Do you think this is clearly an over-architecture/abstraction? </p>
<p>To add some context, we used an open source graphic engine and we currently have around 15K LoC (code only) and 2 programmers, and it&#8217;s our first project over 10K LoC boundary. We sort of only did this in our spare time though, it was never a full-time project.</p>
<p>Thanks in advance!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Rinesh		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3661</link>

		<dc:creator><![CDATA[Rinesh]]></dc:creator>
		<pubDate>Sat, 25 Jun 2011 15:22:06 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3661</guid>

					<description><![CDATA[Great talk, i really liked the part where you explained how productive you have to be as a indie developer.  I am keen knowing more about the data structures and the array of records thing you talked, because a lot of time in development is spent on thinking about the framework.]]></description>
			<content:encoded><![CDATA[<p>Great talk, i really liked the part where you explained how productive you have to be as a indie developer.  I am keen knowing more about the data structures and the array of records thing you talked, because a lot of time in development is spent on thinking about the framework.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Kevin Daley		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3659</link>

		<dc:creator><![CDATA[Kevin Daley]]></dc:creator>
		<pubDate>Sat, 25 Jun 2011 14:53:01 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3659</guid>

					<description><![CDATA[Hi,

Excellent talk.  Sad to hear the X360 certification process is so arduous; people will go to great lengths for their silly DRM :D.

I&#039;m actually starting a new project on CryEngine 3, with a team I&#039;m a part of, and I absolutely agree with most of the advice about premature optimization and complex algorithms---particularly, I&#039;d add, on difficult-to-debug things like shaders.  We actually had quite a few problems with that before; an indie programmer has to choose between productivity and innovation, and it&#039;s a tough balancing act that should always err somewhat on the side of productivity.

One thing I&#039;d also recommend (again from experience) is that the solo programmer use whatever external code is available to him.  Even if it doesn&#039;t accomplish exactly what he wants, if it&#039;s satisfactory it will save him a lot of time.  

For this project, for example, we have an AI that does some machine learning, and I was very wary of adding new features because this kind of system is not easily debugged.  In the end, I opted to use simple neural TD-learning, straight out of the book, and after some reservations decided to do a minimal OpenCL port to boost performance, maybe even hundredfold.  But now I&#039;m done.  No need to optimize the data structure (just arrays and offsets into arrays for the node connections) since it all fits on a GPU block on the target hardware, and no need to worry about cache efficiency since I&#039;m in the basic habit of writing flat, modular code.  Other than that, I&#039;ll see where the bottlenecks are when I actually run it!

And of course I wouldn&#039;t have done the GPGPU port if I hadn&#039;t already been familiar with that platform for some years now.
Especially worth repeating: if you&#039;re an indie, especially a new indie, DO NOT roll your own engine.  Just don&#039;t.  You think you can do it, but you can&#039;t.  We&#039;re using CryEngine 3 SDK when it comes out in August.  If you don&#039;t need anything that new, there&#039;s open source stuff you can use.]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>Excellent talk.  Sad to hear the X360 certification process is so arduous; people will go to great lengths for their silly DRM :D.</p>
<p>I&#8217;m actually starting a new project on CryEngine 3, with a team I&#8217;m a part of, and I absolutely agree with most of the advice about premature optimization and complex algorithms&#8212;particularly, I&#8217;d add, on difficult-to-debug things like shaders.  We actually had quite a few problems with that before; an indie programmer has to choose between productivity and innovation, and it&#8217;s a tough balancing act that should always err somewhat on the side of productivity.</p>
<p>One thing I&#8217;d also recommend (again from experience) is that the solo programmer use whatever external code is available to him.  Even if it doesn&#8217;t accomplish exactly what he wants, if it&#8217;s satisfactory it will save him a lot of time.  </p>
<p>For this project, for example, we have an AI that does some machine learning, and I was very wary of adding new features because this kind of system is not easily debugged.  In the end, I opted to use simple neural TD-learning, straight out of the book, and after some reservations decided to do a minimal OpenCL port to boost performance, maybe even hundredfold.  But now I&#8217;m done.  No need to optimize the data structure (just arrays and offsets into arrays for the node connections) since it all fits on a GPU block on the target hardware, and no need to worry about cache efficiency since I&#8217;m in the basic habit of writing flat, modular code.  Other than that, I&#8217;ll see where the bottlenecks are when I actually run it!</p>
<p>And of course I wouldn&#8217;t have done the GPGPU port if I hadn&#8217;t already been familiar with that platform for some years now.<br />
Especially worth repeating: if you&#8217;re an indie, especially a new indie, DO NOT roll your own engine.  Just don&#8217;t.  You think you can do it, but you can&#8217;t.  We&#8217;re using CryEngine 3 SDK when it comes out in August.  If you don&#8217;t need anything that new, there&#8217;s open source stuff you can use.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Maklak		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3657</link>

		<dc:creator><![CDATA[Maklak]]></dc:creator>
		<pubDate>Sat, 25 Jun 2011 09:28:33 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3657</guid>

					<description><![CDATA[&#062;  Patai Gergely /  June 24, 2011  
&#062; Jon, your main points might even contradict each other in certain contexts. 
&#062; For instance, there are situations when the general solution is easier to implement 
&#062; than the specific one. Or there is an off-the-shelf well-tested clever data structure 
&#062; that takes less work to incorporate in your code than to create even the simplest 
&#062; viable solution from scratch

One of my lecturers put it that way: &quot;Computer Science is not hard science. It consists of half-truths, that have limited appliability dependent on context. &quot; So yeah, there were some specific examples in the lecture, and a few people found them counter-productive in some cases. Those examples were there to illistrate &quot;Do the simple thing that works good enough. do it fast, and move on. You can refactor later if needed&quot; line of thought rather than presented as absolute truths. Its OK to use stuff like std, boost, and other libraries rather than implement linked lists and trees from scratch. School teaches us rules, so we know when and how to break them. We are taught all the rules just so we will know when and how to break them.

It seems to me, that the biggest obstacle in using simplistic data structures and algorithms as good enough is that optimized, clean and well structured code is, well how should I put it, way easier to mentally masturbate to. For example I really like the alborate data structure I came up for my program to test algorithms form my CS master. 

I&#039;m not into game development, but I can do some graphics when I need it. My advice to Kevin: After learning basics of programming learn to use a widget library next. They all use similar concepts, so once you know one, you&#039;ll have easier time learning another if you need it. Stick to language you know. QT is pretty and widely used for C++, Swing for Java. Something like tic-tac-toe or minesweeper made with buttons on a grid layout seems like a good excercise. It won&#039;t be time wasted, you&#039;ll need to know how buttons, menus, labels, etc. work anyway. Plus you&#039;ll be able to make a gui with input fields and &quot;Compute&quot; button for your projects at school rather than pure console interface. After that I&#039;m not sure, I&#039;m not there yet, but learning some SDL and OpenGL (for C++ programmer) seems like the next step.]]></description>
			<content:encoded><![CDATA[<p>&gt;  Patai Gergely /  June 24, 2011<br />
&gt; Jon, your main points might even contradict each other in certain contexts.<br />
&gt; For instance, there are situations when the general solution is easier to implement<br />
&gt; than the specific one. Or there is an off-the-shelf well-tested clever data structure<br />
&gt; that takes less work to incorporate in your code than to create even the simplest<br />
&gt; viable solution from scratch</p>
<p>One of my lecturers put it that way: &#8220;Computer Science is not hard science. It consists of half-truths, that have limited appliability dependent on context. &#8221; So yeah, there were some specific examples in the lecture, and a few people found them counter-productive in some cases. Those examples were there to illistrate &#8220;Do the simple thing that works good enough. do it fast, and move on. You can refactor later if needed&#8221; line of thought rather than presented as absolute truths. Its OK to use stuff like std, boost, and other libraries rather than implement linked lists and trees from scratch. School teaches us rules, so we know when and how to break them. We are taught all the rules just so we will know when and how to break them.</p>
<p>It seems to me, that the biggest obstacle in using simplistic data structures and algorithms as good enough is that optimized, clean and well structured code is, well how should I put it, way easier to mentally masturbate to. For example I really like the alborate data structure I came up for my program to test algorithms form my CS master. </p>
<p>I&#8217;m not into game development, but I can do some graphics when I need it. My advice to Kevin: After learning basics of programming learn to use a widget library next. They all use similar concepts, so once you know one, you&#8217;ll have easier time learning another if you need it. Stick to language you know. QT is pretty and widely used for C++, Swing for Java. Something like tic-tac-toe or minesweeper made with buttons on a grid layout seems like a good excercise. It won&#8217;t be time wasted, you&#8217;ll need to know how buttons, menus, labels, etc. work anyway. Plus you&#8217;ll be able to make a gui with input fields and &#8220;Compute&#8221; button for your projects at school rather than pure console interface. After that I&#8217;m not sure, I&#8217;m not there yet, but learning some SDL and OpenGL (for C++ programmer) seems like the next step.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: justin		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3656</link>

		<dc:creator><![CDATA[justin]]></dc:creator>
		<pubDate>Sat, 25 Jun 2011 05:10:31 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3656</guid>

					<description><![CDATA[Thank you for answering my question Jonathan! i was going for the &quot;game dev&quot; course but know i&#039;m going straight-up(&#062;^) CS!

All this CS and programming talk reminded me of something... CS rap and sheet!!!11

♪♫♪♫♪♫ Code so clean  you can eat off it.
If we can&#039;t fix it, it isn&#039;t broken.
Never test for a bug you don&#039;t know how to fix.
I think therefore I create bugs.
Debug is human, de-fix divine.
There&#039;s a bug born every minute, and two to replace him.
The Bugs Of Wrath
There are 2 ways to write bug-free code; only the 3rd way works.
Final message received from the Titanic: Fatal crash due to icebug.
Bugs Bunny was an optimist.
One small bug for man, one great program for mankind.
The bug is mightier than the fix.
Man does not live by bug fixes alone.
For every bug fixed, there is a bigger bug not yet discovered.
The bug stops here.
I have just begun to debug.
Bugs bugs everywhere, and not a fix in sight.
A feature is a bug with seniority.
Human knowledge belongs to the world.
Programmers don&#039;t die, they just GOSUB without RETURN.
Debuggers have been made by bug-creators.♪♫♪♫♪♫

Yiah, nigguh! Science FTW! Thanks Jonathan!

Capcha: Spervo Coined ?????]]></description>
			<content:encoded><![CDATA[<p>Thank you for answering my question Jonathan! i was going for the &#8220;game dev&#8221; course but know i&#8217;m going straight-up(&gt;^) CS!</p>
<p>All this CS and programming talk reminded me of something&#8230; CS rap and sheet!!!11</p>
<p>♪♫♪♫♪♫ Code so clean  you can eat off it.<br />
If we can&#8217;t fix it, it isn&#8217;t broken.<br />
Never test for a bug you don&#8217;t know how to fix.<br />
I think therefore I create bugs.<br />
Debug is human, de-fix divine.<br />
There&#8217;s a bug born every minute, and two to replace him.<br />
The Bugs Of Wrath<br />
There are 2 ways to write bug-free code; only the 3rd way works.<br />
Final message received from the Titanic: Fatal crash due to icebug.<br />
Bugs Bunny was an optimist.<br />
One small bug for man, one great program for mankind.<br />
The bug is mightier than the fix.<br />
Man does not live by bug fixes alone.<br />
For every bug fixed, there is a bigger bug not yet discovered.<br />
The bug stops here.<br />
I have just begun to debug.<br />
Bugs bugs everywhere, and not a fix in sight.<br />
A feature is a bug with seniority.<br />
Human knowledge belongs to the world.<br />
Programmers don&#8217;t die, they just GOSUB without RETURN.<br />
Debuggers have been made by bug-creators.♪♫♪♫♪♫</p>
<p>Yiah, nigguh! Science FTW! Thanks Jonathan!</p>
<p>Capcha: Spervo Coined ?????</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3655</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Sat, 25 Jun 2011 05:02:35 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3655</guid>

					<description><![CDATA[I don&#039;t know very much about Unity.  However, it&#039;s clear that one could not build The Witness in Unity without rewriting a lot of Unity (or adding a lot of things that are not there, and declining to use most of what Unity provides).  And we already had a simple graphics engine anyway.  So when building our own systems, we can ensure that they are really what the game needs to be its best.]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t know very much about Unity.  However, it&#8217;s clear that one could not build The Witness in Unity without rewriting a lot of Unity (or adding a lot of things that are not there, and declining to use most of what Unity provides).  And we already had a simple graphics engine anyway.  So when building our own systems, we can ensure that they are really what the game needs to be its best.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: (null)		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3654</link>

		<dc:creator><![CDATA[(null)]]></dc:creator>
		<pubDate>Sat, 25 Jun 2011 04:24:17 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3654</guid>

					<description><![CDATA[Great lecture indeed, and great comment section as well.

I&#039;ll try not to go into my graduation experience (here in Brazil) and my vision about game dev schools in this comment.

The core idea of the lecture coincide with my line of thinking and gut feeling when coding. For me it&#039;s pretty cool, since I&#039;m not that bright, and what I love about programming is being able to create cool stuff (period). 

And it goes without saying  that you have to make a good work with your foundation classes, and have a good plan on how to tackle things (without need to formalized the plan too much, though).

About eight months ago I got involved in my first indie game project (with C#/XNA, meh) -pretty simple turn-based management game. And hell, I just had to crunch and simply do stuff work, in a barely robust way. And it felt great, in contrast with the depressive unproductive routine that I had in my previous job. 

Also on Life Time Spent metric,  Retro City Rampage dev blog have a great entry on building time and productivity, with some practical coding tips. Notch (Minecraft) also made a post on simplicity and not rewriting code unnecessarily , if I remember well. Endorsing  Jonathan PoV.

Q:  As questioned before I would like to hear Jonathan&#039;s opinion on tools like Unity and their impact in the Life Time Spent Metric. And why he prefer to build stuff from scratch. I&#039;m personally fond of work &quot;from scratch&quot; right now, mainly for educational/career reasons. &#039;cause it&#039;s not a bad idea to be able to be a tool/tech/lead programmer in the industry.  

That&#039;s it. 

ps: This blog is getting really, really cool.]]></description>
			<content:encoded><![CDATA[<p>Great lecture indeed, and great comment section as well.</p>
<p>I&#8217;ll try not to go into my graduation experience (here in Brazil) and my vision about game dev schools in this comment.</p>
<p>The core idea of the lecture coincide with my line of thinking and gut feeling when coding. For me it&#8217;s pretty cool, since I&#8217;m not that bright, and what I love about programming is being able to create cool stuff (period). </p>
<p>And it goes without saying  that you have to make a good work with your foundation classes, and have a good plan on how to tackle things (without need to formalized the plan too much, though).</p>
<p>About eight months ago I got involved in my first indie game project (with C#/XNA, meh) -pretty simple turn-based management game. And hell, I just had to crunch and simply do stuff work, in a barely robust way. And it felt great, in contrast with the depressive unproductive routine that I had in my previous job. </p>
<p>Also on Life Time Spent metric,  Retro City Rampage dev blog have a great entry on building time and productivity, with some practical coding tips. Notch (Minecraft) also made a post on simplicity and not rewriting code unnecessarily , if I remember well. Endorsing  Jonathan PoV.</p>
<p>Q:  As questioned before I would like to hear Jonathan&#8217;s opinion on tools like Unity and their impact in the Life Time Spent Metric. And why he prefer to build stuff from scratch. I&#8217;m personally fond of work &#8220;from scratch&#8221; right now, mainly for educational/career reasons. &#8217;cause it&#8217;s not a bad idea to be able to be a tool/tech/lead programmer in the industry.  </p>
<p>That&#8217;s it. </p>
<p>ps: This blog is getting really, really cool.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Paul Du Bois		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3652</link>

		<dc:creator><![CDATA[Paul Du Bois]]></dc:creator>
		<pubDate>Sat, 25 Jun 2011 02:49:45 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3652</guid>

					<description><![CDATA[I think the title of the talk is too specific; I don&#039;t make indie games but have been converging on a similar set of beliefs. On larger teams simplicity is even more valuable; but, I believe, also more elusive. I think my own desire for simplicity stems from both age-based wisdom and senility. The shorter-term my memory gets, the more practice I get reading my own &quot;old&quot; code, and the better I get at writing for my future self.

Coincidentally I just today got the idea to ask questions about simplicity in programming interviews; I don&#039;t know why I didn&#039;t have the idea earlier.]]></description>
			<content:encoded><![CDATA[<p>I think the title of the talk is too specific; I don&#8217;t make indie games but have been converging on a similar set of beliefs. On larger teams simplicity is even more valuable; but, I believe, also more elusive. I think my own desire for simplicity stems from both age-based wisdom and senility. The shorter-term my memory gets, the more practice I get reading my own &#8220;old&#8221; code, and the better I get at writing for my future self.</p>
<p>Coincidentally I just today got the idea to ask questions about simplicity in programming interviews; I don&#8217;t know why I didn&#8217;t have the idea earlier.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3651</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Sat, 25 Jun 2011 02:29:46 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3651</guid>

					<description><![CDATA[Anonymous: I guess my answer is yes and no.  Yes, a lot of technical innovation is necessary to help expand the space of games we can make.  But for any particular game, the answer is no; the space we have access to now is already pretty huge, and it doesn&#039;t require anything extra tech-wise to do something that is new design-wise and valuable to a lot of people.

Kevin: After just 3 programming classes, and if you haven&#039;t been programming on your own, then yeah, I wouldn&#039;t expect you to know how to make a video game.  That is just not how it works!  I would say just keep taking as many classes as you can (if you are able to -- possibly graphics classes!), but also just be sure to do stuff in your spare time, because that is where you *really* learn.  

For teaching yourself, yeah, there are a lot of tutorials on the internet.  Some are better than others, but if you just pick one and start going with it, you&#039;ll rapidly be getting valuable experience.  I don&#039;t have any suggestions of languages to start with, maybe just something you already have exposure to from the classes you have taken.]]></description>
			<content:encoded><![CDATA[<p>Anonymous: I guess my answer is yes and no.  Yes, a lot of technical innovation is necessary to help expand the space of games we can make.  But for any particular game, the answer is no; the space we have access to now is already pretty huge, and it doesn&#8217;t require anything extra tech-wise to do something that is new design-wise and valuable to a lot of people.</p>
<p>Kevin: After just 3 programming classes, and if you haven&#8217;t been programming on your own, then yeah, I wouldn&#8217;t expect you to know how to make a video game.  That is just not how it works!  I would say just keep taking as many classes as you can (if you are able to &#8212; possibly graphics classes!), but also just be sure to do stuff in your spare time, because that is where you *really* learn.  </p>
<p>For teaching yourself, yeah, there are a lot of tutorials on the internet.  Some are better than others, but if you just pick one and start going with it, you&#8217;ll rapidly be getting valuable experience.  I don&#8217;t have any suggestions of languages to start with, maybe just something you already have exposure to from the classes you have taken.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Kevin		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3649</link>

		<dc:creator><![CDATA[Kevin]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 22:59:05 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3649</guid>

					<description><![CDATA[Yeah I guess I wasn&#039;t very specific about my experience in coding and such. Basically I have taken three programming courses, and prior to that I had zero programming experience, so all I know I learned from those three classes and the assignments we did in those classes. One was just an intro to OO and programming (what you would get in a high school AP class),intro to software development (basically advanced OO), and data structures and low level representation. We have courses in just about everything you need: AI, Parallel Computing, Graphics, and many more, but right now I am leaning towards hardware design and am spending most of my effort taking EE classes, and software wise I&#039;ll take classes when I can, so I might not get a chance to take for example AI. I still want to learn how to do it in case down the road I decide to switch gears. I will have coding background, but there will just be some pieces I am missing. 

I want to be able to teach myself some of these things in case I don&#039;t get a chance to take the course. Or if something really inspires me I&#039;ll know that it will be worth my time to take that course. As you said, you don&#039;t need to take a college course to be able to produce good code. When I said I wouldn&#039;t know how to make a game, I didn&#039;t realize when I asked but I thought about it, and graphics is the only thing that would be stopping me from making a very simple game. I really know nothing about graphics.

Thank you for questioning my question to help me be more specific...

Where should I start with teaching myself graphics primarily in the context of video game design? Should I just find some tutorials and just start making simple games and learn by experience? If so any suggestions of programs/languages to start with?]]></description>
			<content:encoded><![CDATA[<p>Yeah I guess I wasn&#8217;t very specific about my experience in coding and such. Basically I have taken three programming courses, and prior to that I had zero programming experience, so all I know I learned from those three classes and the assignments we did in those classes. One was just an intro to OO and programming (what you would get in a high school AP class),intro to software development (basically advanced OO), and data structures and low level representation. We have courses in just about everything you need: AI, Parallel Computing, Graphics, and many more, but right now I am leaning towards hardware design and am spending most of my effort taking EE classes, and software wise I&#8217;ll take classes when I can, so I might not get a chance to take for example AI. I still want to learn how to do it in case down the road I decide to switch gears. I will have coding background, but there will just be some pieces I am missing. </p>
<p>I want to be able to teach myself some of these things in case I don&#8217;t get a chance to take the course. Or if something really inspires me I&#8217;ll know that it will be worth my time to take that course. As you said, you don&#8217;t need to take a college course to be able to produce good code. When I said I wouldn&#8217;t know how to make a game, I didn&#8217;t realize when I asked but I thought about it, and graphics is the only thing that would be stopping me from making a very simple game. I really know nothing about graphics.</p>
<p>Thank you for questioning my question to help me be more specific&#8230;</p>
<p>Where should I start with teaching myself graphics primarily in the context of video game design? Should I just find some tutorials and just start making simple games and learn by experience? If so any suggestions of programs/languages to start with?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: David McGraw		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3647</link>

		<dc:creator><![CDATA[David McGraw]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 22:40:43 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3647</guid>

					<description><![CDATA[Excellent talk Jonathan. Love your point on the internet / university shift. I would love to have grown up with all of the available information in todays world.

Some thoughts.

I spent nearly 4  years at the university and I barely remember any of it. What I remember the most is what I did during my spare time after class, tinkering with code, looking at open source code and finishing small projects. Considering that I had no programming experience I needed that time at the University. It&#039;s a great place that allows you to explore interests in depth without major life factors getting into the way. So find a state school to look decent, hack when you&#039;re not in class and milk financial aid as much as you can (do not put yourself in crazy debt for this thing). You might be surprised what you can whip up by the time you graduate if you explore hard enough. 

The problem is that a lot of folks don&#039;t want to explore that hard. They just want it to be given to them. They&#039;re trying to find the perfect school that will hand them the experience they need. Just get out there and create things, meet people and love what you&#039;re doing. Go create the experience.

Anyway, a few cents worth of thought.]]></description>
			<content:encoded><![CDATA[<p>Excellent talk Jonathan. Love your point on the internet / university shift. I would love to have grown up with all of the available information in todays world.</p>
<p>Some thoughts.</p>
<p>I spent nearly 4  years at the university and I barely remember any of it. What I remember the most is what I did during my spare time after class, tinkering with code, looking at open source code and finishing small projects. Considering that I had no programming experience I needed that time at the University. It&#8217;s a great place that allows you to explore interests in depth without major life factors getting into the way. So find a state school to look decent, hack when you&#8217;re not in class and milk financial aid as much as you can (do not put yourself in crazy debt for this thing). You might be surprised what you can whip up by the time you graduate if you explore hard enough. </p>
<p>The problem is that a lot of folks don&#8217;t want to explore that hard. They just want it to be given to them. They&#8217;re trying to find the perfect school that will hand them the experience they need. Just get out there and create things, meet people and love what you&#8217;re doing. Go create the experience.</p>
<p>Anyway, a few cents worth of thought.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Maklak		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3645</link>

		<dc:creator><![CDATA[Maklak]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 22:11:03 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3645</guid>

					<description><![CDATA[What you talk about bit me hard in my second job. Instead of digging through tutorials till I learned something, and then doing the right thing I was supposed to quickly do the thing that worked. This meant:
*) Implement required functionality.
*) The smaller diff the better.
*) Do the simplest sensible thing that works.
*) Don’t implement elaborate mechanisms unless you don’t know how to do it simpler.
*) Only do what you are told to do. Additional / better functionality is not always better and means more code. +20% functionality and +80% code is not good enough. Don’t get any brilliant ideas, and certainly don’t implemet them before talking to superior.
*) Remove code when possible without breaking anything.
*) Do it fast. Preferably a few patches a day.
*) Don’t use comments. Don&#039;t write documentation. Well written code is self documenting. Reverse-engineer (just read the code, really) when you need to know how parts of the system that you need to touch work. 

It was quite a shock. I argued with my boss about this philosophy, but their system works, and I don’t know how. It is not a game, BTW, but a system for making web pages with tables connected to a database, and written in perl. 

It also aligns somewhat with what I read on extreme programming, tough we used ‘peer review’ of diffs and manual testing rather than unit tests.]]></description>
			<content:encoded><![CDATA[<p>What you talk about bit me hard in my second job. Instead of digging through tutorials till I learned something, and then doing the right thing I was supposed to quickly do the thing that worked. This meant:<br />
*) Implement required functionality.<br />
*) The smaller diff the better.<br />
*) Do the simplest sensible thing that works.<br />
*) Don’t implement elaborate mechanisms unless you don’t know how to do it simpler.<br />
*) Only do what you are told to do. Additional / better functionality is not always better and means more code. +20% functionality and +80% code is not good enough. Don’t get any brilliant ideas, and certainly don’t implemet them before talking to superior.<br />
*) Remove code when possible without breaking anything.<br />
*) Do it fast. Preferably a few patches a day.<br />
*) Don’t use comments. Don&#8217;t write documentation. Well written code is self documenting. Reverse-engineer (just read the code, really) when you need to know how parts of the system that you need to touch work. </p>
<p>It was quite a shock. I argued with my boss about this philosophy, but their system works, and I don’t know how. It is not a game, BTW, but a system for making web pages with tables connected to a database, and written in perl. </p>
<p>It also aligns somewhat with what I read on extreme programming, tough we used ‘peer review’ of diffs and manual testing rather than unit tests.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Anonymous		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3644</link>

		<dc:creator><![CDATA[Anonymous]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 21:47:00 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3644</guid>

					<description><![CDATA[Jonathan, if you don&#039;t mind taking questions:

To what extent do you value programming innovations within your game design aesthetic? More specifically, do you feel that games that aren&#039;t pushing the envelope on the technical side of things are less likely (though not &quot;guaranteed&quot;) to deliver unique or interesting gameplay?

What I&#039;m ultimately aiming at is your take on the integration of technical programming within the medium of video game design. So I&#039;m not asking if you wouldn&#039;t design a tabletop game or a card game, but, rather, if you feel that the video game medium is inherently dependent on programming &#038; technical innovation.]]></description>
			<content:encoded><![CDATA[<p>Jonathan, if you don&#8217;t mind taking questions:</p>
<p>To what extent do you value programming innovations within your game design aesthetic? More specifically, do you feel that games that aren&#8217;t pushing the envelope on the technical side of things are less likely (though not &#8220;guaranteed&#8221;) to deliver unique or interesting gameplay?</p>
<p>What I&#8217;m ultimately aiming at is your take on the integration of technical programming within the medium of video game design. So I&#8217;m not asking if you wouldn&#8217;t design a tabletop game or a card game, but, rather, if you feel that the video game medium is inherently dependent on programming &amp; technical innovation.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: hannardynamite		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-2/#comment-3643</link>

		<dc:creator><![CDATA[hannardynamite]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 21:41:21 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3643</guid>

					<description><![CDATA[Thanks for such an interesting video. As an indie developer myself, I found it to be very insightful and thought-provoking.

If at all possible, I&#039;d love to know more about the design and development process behind Braid, as I am currently developing a game for which Braid serves as the primary inspiration.

Any advice would be highly appreciated.]]></description>
			<content:encoded><![CDATA[<p>Thanks for such an interesting video. As an indie developer myself, I found it to be very insightful and thought-provoking.</p>
<p>If at all possible, I&#8217;d love to know more about the design and development process behind Braid, as I am currently developing a game for which Braid serves as the primary inspiration.</p>
<p>Any advice would be highly appreciated.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Patai Gergely		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3642</link>

		<dc:creator><![CDATA[Patai Gergely]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 20:56:57 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3642</guid>

					<description><![CDATA[Jon, your main points might even contradict each other in certain contexts. For instance, there are situations when the general solution is easier to implement than the specific one. Or there is an off-the-shelf well-tested clever data structure that takes less work to incorporate in your code than to create even the simplest viable solution from scratch. 

What I took away from the talk is that your main advice is to optimise for development effort as long as it doesn’t violate other constraints. However, the specific tips are somewhat tied to your particular situation: developing code largely from the ground up and using a language like C++. I think this could have been emphasised a bit more clearly. But this is just little gripe, and I really enjoyed the presentation on the whole. Thanks for sharing!]]></description>
			<content:encoded><![CDATA[<p>Jon, your main points might even contradict each other in certain contexts. For instance, there are situations when the general solution is easier to implement than the specific one. Or there is an off-the-shelf well-tested clever data structure that takes less work to incorporate in your code than to create even the simplest viable solution from scratch. </p>
<p>What I took away from the talk is that your main advice is to optimise for development effort as long as it doesn’t violate other constraints. However, the specific tips are somewhat tied to your particular situation: developing code largely from the ground up and using a language like C++. I think this could have been emphasised a bit more clearly. But this is just little gripe, and I really enjoyed the presentation on the whole. Thanks for sharing!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: James Wynn		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3641</link>

		<dc:creator><![CDATA[James Wynn]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 20:35:34 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3641</guid>

					<description><![CDATA[Fantastic presentation Jon! I like the no-nonsense approach to datastructures and algorithms. That is definitely something all the green programmers I work with miss.  Have you thought of contributing to #altdevblogaday?  You obviously have some wisdom you could share.]]></description>
			<content:encoded><![CDATA[<p>Fantastic presentation Jon! I like the no-nonsense approach to datastructures and algorithms. That is definitely something all the green programmers I work with miss.  Have you thought of contributing to #altdevblogaday?  You obviously have some wisdom you could share.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Rod Humble		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3640</link>

		<dc:creator><![CDATA[Rod Humble]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 20:20:12 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3640</guid>

					<description><![CDATA[A useful talk. Thanks. I particularly enjoyed the function example and the generalizing versus specific use point.]]></description>
			<content:encoded><![CDATA[<p>A useful talk. Thanks. I particularly enjoyed the function example and the generalizing versus specific use point.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Devin Raposo		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3638</link>

		<dc:creator><![CDATA[Devin Raposo]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 19:15:16 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3638</guid>

					<description><![CDATA[@Hadas Contrary to what Jon says, I use this (http://www.youtube.com/watch?v=cFA2hT0JsPg&#038;NR=1&#038;feature=fvwp) instructional guide which has proved very useful for me and many others (mind the 19th video, that&#039;s just where I am). Obviously it is free, and the instructor is very concise. Hope that helps!]]></description>
			<content:encoded><![CDATA[<p>@Hadas Contrary to what Jon says, I use this (<a href="http://www.youtube.com/watch?v=cFA2hT0JsPg&#038;NR=1&#038;feature=fvwp" rel="nofollow ugc">http://www.youtube.com/watch?v=cFA2hT0JsPg&#038;NR=1&#038;feature=fvwp</a>) instructional guide which has proved very useful for me and many others (mind the 19th video, that&#8217;s just where I am). Obviously it is free, and the instructor is very concise. Hope that helps!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Ninjas		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3637</link>

		<dc:creator><![CDATA[Ninjas]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 19:13:25 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3637</guid>

					<description><![CDATA[Re: Philip Bak on fear of shipping -- I think fear like this is often totally justified. I have been involved in a lot of productions where shipping the game was like stepping off a cliff. Especially, with smaller productions that don&#039;t get extensive testing, you can be blind-sided by weird problems. For example, one game I worked on made some people violently motion sick. 

Unconventional games often give a negative first impression. This usually coincides exactly with your tiny window of hype you may be able to generate at launch. Unless you have a ton of good will from a previous product, or a lot of well positioned friends, this can be a recipe for disaster. 

We are trying out open development for our project, and letting pre-orderers play around with the current, totally incomplete, builds of the game. This allows us to have a lot more feedback, and to get a core user base used to the main conceits of the gameplay.]]></description>
			<content:encoded><![CDATA[<p>Re: Philip Bak on fear of shipping &#8212; I think fear like this is often totally justified. I have been involved in a lot of productions where shipping the game was like stepping off a cliff. Especially, with smaller productions that don&#8217;t get extensive testing, you can be blind-sided by weird problems. For example, one game I worked on made some people violently motion sick. </p>
<p>Unconventional games often give a negative first impression. This usually coincides exactly with your tiny window of hype you may be able to generate at launch. Unless you have a ton of good will from a previous product, or a lot of well positioned friends, this can be a recipe for disaster. </p>
<p>We are trying out open development for our project, and letting pre-orderers play around with the current, totally incomplete, builds of the game. This allows us to have a lot more feedback, and to get a core user base used to the main conceits of the gameplay.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Philip Bak		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3636</link>

		<dc:creator><![CDATA[Philip Bak]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 18:05:34 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3636</guid>

					<description><![CDATA[&quot;I am a little surprised at the 120k lines thing, though maybe that includes blank lines and comments? Or maybe you just keep adding crazy stuff to it? &quot;

Sorry yes, both.

593 files - 85k lines code, 20k lines blank and 15k lines comments.

Lots of systems commented out too.]]></description>
			<content:encoded><![CDATA[<p>&#8220;I am a little surprised at the 120k lines thing, though maybe that includes blank lines and comments? Or maybe you just keep adding crazy stuff to it? &#8221;</p>
<p>Sorry yes, both.</p>
<p>593 files &#8211; 85k lines code, 20k lines blank and 15k lines comments.</p>
<p>Lots of systems commented out too.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3633</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 16:14:20 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3633</guid>

					<description><![CDATA[Matt: A &#039;record&#039; is just when you use a struct in C++ or whatever.  It is just a way of naming information.  An array of records is just when you put those into an array.  

The other previous few questions I don&#039;t have time to answer right now, it&#039;s going to be a busy day, but I will hopefully get to them a bit later!]]></description>
			<content:encoded><![CDATA[<p>Matt: A &#8216;record&#8217; is just when you use a struct in C++ or whatever.  It is just a way of naming information.  An array of records is just when you put those into an array.  </p>
<p>The other previous few questions I don&#8217;t have time to answer right now, it&#8217;s going to be a busy day, but I will hopefully get to them a bit later!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Matt		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3632</link>

		<dc:creator><![CDATA[Matt]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 16:12:29 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3632</guid>

					<description><![CDATA[Can you give an example of what you mean by an &#039;array of records&#039;?]]></description>
			<content:encoded><![CDATA[<p>Can you give an example of what you mean by an &#8216;array of records&#8217;?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Hadas Noam		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3630</link>

		<dc:creator><![CDATA[Hadas Noam]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 14:49:38 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3630</guid>

					<description><![CDATA[Hello!
First of all, thank you Jonathan for posting the talk. It was fresh and enlightening . I myself went to study animation to get into games, and made game all along. I do not have any programming background, aside from a basic ActionScript course... So I studied from tutorials and I do have a basic ability to do anything, but the performance of my games is weak. I have a few questions for you.

First, you wrote all your code from scratch. Why? What do you think of using tools like Unity?

Second, I want to become more proficient at coding, and I have no intention of going to school again. What do you think of this program which is taught online? http://www.gameinstitute.com/courses.php?tab1=foundation

Thanks again!]]></description>
			<content:encoded><![CDATA[<p>Hello!<br />
First of all, thank you Jonathan for posting the talk. It was fresh and enlightening . I myself went to study animation to get into games, and made game all along. I do not have any programming background, aside from a basic ActionScript course&#8230; So I studied from tutorials and I do have a basic ability to do anything, but the performance of my games is weak. I have a few questions for you.</p>
<p>First, you wrote all your code from scratch. Why? What do you think of using tools like Unity?</p>
<p>Second, I want to become more proficient at coding, and I have no intention of going to school again. What do you think of this program which is taught online? <a href="http://www.gameinstitute.com/courses.php?tab1=foundation" rel="nofollow ugc">http://www.gameinstitute.com/courses.php?tab1=foundation</a></p>
<p>Thanks again!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: AlbeyAmakiir		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3626</link>

		<dc:creator><![CDATA[AlbeyAmakiir]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 11:24:26 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3626</guid>

					<description><![CDATA[I&#039;m rather disappointed in what I&#039;ve been taught in Uni in regards to programming. Not so much because of the &quot;optimise and use data structures&quot; slant, but more because of the &quot;do this and it works&quot; slant that came with it and everything else. If they don&#039;t explain *why* we do things certain ways, we can&#039;t learn when *not* to use them. I never learnt the why of things &#039;til I left.

Loved the talk. I&#039;ll probably watch it again to remind myself of some of these things.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m rather disappointed in what I&#8217;ve been taught in Uni in regards to programming. Not so much because of the &#8220;optimise and use data structures&#8221; slant, but more because of the &#8220;do this and it works&#8221; slant that came with it and everything else. If they don&#8217;t explain *why* we do things certain ways, we can&#8217;t learn when *not* to use them. I never learnt the why of things &#8217;til I left.</p>
<p>Loved the talk. I&#8217;ll probably watch it again to remind myself of some of these things.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: simon		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3624</link>

		<dc:creator><![CDATA[simon]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 07:18:26 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3624</guid>

					<description><![CDATA[Videos like thsi make me wanna go and do CS at uni. thanks for posting.]]></description>
			<content:encoded><![CDATA[<p>Videos like thsi make me wanna go and do CS at uni. thanks for posting.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Leif Andersen		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3621</link>

		<dc:creator><![CDATA[Leif Andersen]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 04:56:33 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3621</guid>

					<description><![CDATA[Thank you for this lecture.  I am about half way through an undergrad degree in CS (well, actually computer engineering) at a local university, and I thought it would be a good idea to try my hand at video game creation, although with a focus on making them for cell phones.  I also appreciate your comments on how you got started.  I was a bit worried that not having a specialised degree in game development would put me behind those that do.  It&#039;s good to hear that this isn&#039;t the case.  Again, thank you.]]></description>
			<content:encoded><![CDATA[<p>Thank you for this lecture.  I am about half way through an undergrad degree in CS (well, actually computer engineering) at a local university, and I thought it would be a good idea to try my hand at video game creation, although with a focus on making them for cell phones.  I also appreciate your comments on how you got started.  I was a bit worried that not having a specialised degree in game development would put me behind those that do.  It&#8217;s good to hear that this isn&#8217;t the case.  Again, thank you.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3620</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 03:48:29 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3620</guid>

					<description><![CDATA[Well Kevin, how far through that CS program are you?  If you are close to the end and you still have no idea how to &quot;go make a video game&quot; -- even a simple one -- then I hate to say it, but it is actually not a very good CS program.  [If you are close to the beginning, then, well, it&#039;s not too surprising if you don&#039;t know that much yet.  Then again, I was making little games in the 6th grade, so it&#039;s hard for me to think you need a college education for that...]

(Not that a good CS program would necessarily say anything specific about games, but it should have you building complex-enough stuff that you could easily see how to make a game of equivalent complexity if you wanted to.)

Is graphics your only question, or is it more fundamental than that?

Does your CS program not have any AI classes?  (If not, it is probably not a good CS program!  etc...)

Actually, let me turn the question around... what is it about your school&#039;s CS program that makes you think it is pretty good?]]></description>
			<content:encoded><![CDATA[<p>Well Kevin, how far through that CS program are you?  If you are close to the end and you still have no idea how to &#8220;go make a video game&#8221; &#8212; even a simple one &#8212; then I hate to say it, but it is actually not a very good CS program.  [If you are close to the beginning, then, well, it&#8217;s not too surprising if you don&#8217;t know that much yet.  Then again, I was making little games in the 6th grade, so it&#8217;s hard for me to think you need a college education for that&#8230;]</p>
<p>(Not that a good CS program would necessarily say anything specific about games, but it should have you building complex-enough stuff that you could easily see how to make a game of equivalent complexity if you wanted to.)</p>
<p>Is graphics your only question, or is it more fundamental than that?</p>
<p>Does your CS program not have any AI classes?  (If not, it is probably not a good CS program!  etc&#8230;)</p>
<p>Actually, let me turn the question around&#8230; what is it about your school&#8217;s CS program that makes you think it is pretty good?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Kevin		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3619</link>

		<dc:creator><![CDATA[Kevin]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 03:41:14 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3619</guid>

					<description><![CDATA[Hello Jonathan, 

I am very glad I watched this video, it cleared up a lot of the worries I had from my CS classes at my university.

I have one question that is fairly broad, but I would be very grateful if I could get some insight. 

Using the infinite resources available to me, how do I learn how to make complete software systems?

I go to a school with a pretty good CS program, and have been getting A&#039;s in all of my classes and find myself to be a fairly adept programmer in terms of accomplishing the assignment, but I don&#039;t see how it all fits together. And if I were told to &quot;go make a video game&quot; I would have no idea where in the world to start. I know nothing about objects, all I know is how to make objects and data structures and use standard output to print text out...

How do I use all of the resources around me to learn where to start, how to make graphics, how to tie that into my code, how to make an environment to move around in, how to make AI&#039;s do this and that, etc?

If my question is too vague just let me know and I&#039;ll try to make my question more direct...]]></description>
			<content:encoded><![CDATA[<p>Hello Jonathan, </p>
<p>I am very glad I watched this video, it cleared up a lot of the worries I had from my CS classes at my university.</p>
<p>I have one question that is fairly broad, but I would be very grateful if I could get some insight. </p>
<p>Using the infinite resources available to me, how do I learn how to make complete software systems?</p>
<p>I go to a school with a pretty good CS program, and have been getting A&#8217;s in all of my classes and find myself to be a fairly adept programmer in terms of accomplishing the assignment, but I don&#8217;t see how it all fits together. And if I were told to &#8220;go make a video game&#8221; I would have no idea where in the world to start. I know nothing about objects, all I know is how to make objects and data structures and use standard output to print text out&#8230;</p>
<p>How do I use all of the resources around me to learn where to start, how to make graphics, how to tie that into my code, how to make an environment to move around in, how to make AI&#8217;s do this and that, etc?</p>
<p>If my question is too vague just let me know and I&#8217;ll try to make my question more direct&#8230;</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Dan		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3618</link>

		<dc:creator><![CDATA[Dan]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 02:20:00 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3618</guid>

					<description><![CDATA[For those of you who want a decent, yet affordable Game Design Program, look into the Game Design Bachelors Program at Rochester Institute of Technology. I have been in the program for the last 3 years and I love the atmosphere. All the professors know you by first name, and the class sizes are around 25 (Except for LA, which average 60). I plan on continuing into the Masters in Game Design in the Fall (2011). For those of you who think that you cant get jobs in the &quot;real world&quot; if you major in Game Design, I am currently working for Boeing. Send me an email if you have questions, I would be more than willing to answer them. dlw4736@rit.edu]]></description>
			<content:encoded><![CDATA[<p>For those of you who want a decent, yet affordable Game Design Program, look into the Game Design Bachelors Program at Rochester Institute of Technology. I have been in the program for the last 3 years and I love the atmosphere. All the professors know you by first name, and the class sizes are around 25 (Except for LA, which average 60). I plan on continuing into the Masters in Game Design in the Fall (2011). For those of you who think that you cant get jobs in the &#8220;real world&#8221; if you major in Game Design, I am currently working for Boeing. Send me an email if you have questions, I would be more than willing to answer them. <a href="mailto:dlw4736@rit.edu">dlw4736@rit.edu</a></p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Dave		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3617</link>

		<dc:creator><![CDATA[Dave]]></dc:creator>
		<pubDate>Fri, 24 Jun 2011 01:04:56 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3617</guid>

					<description><![CDATA[Great lecture; I felt a fair bit of vindication by the end of it.

A few years ago when I decided that academia wasn&#039;t going to be my path to game development I turned to the internet to learn how to make games. This started out as just working on mods for the Source engine, and reading what documentation I could find in forums and wikis. Over the years, as I moved from Source to the Torque engine and eventually the Unity engine, I&#039;ve always been able to find the information I&#039;ve needed either to solve specific problems, or to expand upon the theories that I&#039;ve been exposed to.

Now I&#039;m coding complicated strategy AIs in Unity without any formal education. I think you&#039;re very right that it&#039;s in the end more about what a person makes of their circumstances than the circumstances themselves and that the advent of the internet has given self-motivated people (who are usually are the ones succeeding at school and in the industry anyway) to acquire as much and as many kinds of information as they need. My circumstance of not having a proper cs education allowed me to forgo all of the &quot;academic standards&quot; of coding and forced me to think about code in as simple and subtractive a manner as I could, because I didn&#039;t have the internal knowledge-base to construct overly complicated code.

Additionally, I think that the arrival of all of these game engines that are cheap to license (Unity Pro costs $1500 per developer seat, and a free license also exists) adds to the ease of learning and working outside of academia, especially because you can start working without having to spend years learning about and developing proprietary engine technology.

I&#039;m not a good programmer by any traditional standards, but I like to think that I&#039;ve managed to optimize both my life and my development process by approaching code in this way and with these tools. Thanks for sharing your ideas and helping me to be more comfortable with this development lifestyle.]]></description>
			<content:encoded><![CDATA[<p>Great lecture; I felt a fair bit of vindication by the end of it.</p>
<p>A few years ago when I decided that academia wasn&#8217;t going to be my path to game development I turned to the internet to learn how to make games. This started out as just working on mods for the Source engine, and reading what documentation I could find in forums and wikis. Over the years, as I moved from Source to the Torque engine and eventually the Unity engine, I&#8217;ve always been able to find the information I&#8217;ve needed either to solve specific problems, or to expand upon the theories that I&#8217;ve been exposed to.</p>
<p>Now I&#8217;m coding complicated strategy AIs in Unity without any formal education. I think you&#8217;re very right that it&#8217;s in the end more about what a person makes of their circumstances than the circumstances themselves and that the advent of the internet has given self-motivated people (who are usually are the ones succeeding at school and in the industry anyway) to acquire as much and as many kinds of information as they need. My circumstance of not having a proper cs education allowed me to forgo all of the &#8220;academic standards&#8221; of coding and forced me to think about code in as simple and subtractive a manner as I could, because I didn&#8217;t have the internal knowledge-base to construct overly complicated code.</p>
<p>Additionally, I think that the arrival of all of these game engines that are cheap to license (Unity Pro costs $1500 per developer seat, and a free license also exists) adds to the ease of learning and working outside of academia, especially because you can start working without having to spend years learning about and developing proprietary engine technology.</p>
<p>I&#8217;m not a good programmer by any traditional standards, but I like to think that I&#8217;ve managed to optimize both my life and my development process by approaching code in this way and with these tools. Thanks for sharing your ideas and helping me to be more comfortable with this development lifestyle.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Devin Raposo		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3615</link>

		<dc:creator><![CDATA[Devin Raposo]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 23:21:18 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3615</guid>

					<description><![CDATA[@justin If I&#039;ve gathered anything from this, it would be to stay away from most design classes (out of curiosity, I&#039;ve been doing some Internet snooping on Full Sail and apparently it&#039;s not very good, and if a school based around getting into most media entertainment is shit than I wouldn&#039;t put much hope in programs from most &quot;regular&quot; universities directed at game design specifically).]]></description>
			<content:encoded><![CDATA[<p>@justin If I&#8217;ve gathered anything from this, it would be to stay away from most design classes (out of curiosity, I&#8217;ve been doing some Internet snooping on Full Sail and apparently it&#8217;s not very good, and if a school based around getting into most media entertainment is shit than I wouldn&#8217;t put much hope in programs from most &#8220;regular&#8221; universities directed at game design specifically).</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: JonP382		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3614</link>

		<dc:creator><![CDATA[JonP382]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 22:25:11 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3614</guid>

					<description><![CDATA[Great talk and great advice in the comments here. Thanks a ton.]]></description>
			<content:encoded><![CDATA[<p>Great talk and great advice in the comments here. Thanks a ton.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: lithander		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3613</link>

		<dc:creator><![CDATA[lithander]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 22:14:23 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3613</guid>

					<description><![CDATA[Great talk and some very good points. It&#039;s reassuring that a lot of your advice isn&#039;t totally new to me though I agree that those realizations often have come to me with experience and _after_ my formal education.

Regarding the &quot;premature optimization is the root of all evil&quot; advice I found that it&#039;s a good approach to write straight forward (often bruteforce) code and use a profiler every now and then to identify the worst bottle-necks then optimize these specific parts of the code. The difficulty is in maintaining a project where this refactoring is easily possible and where the refactored code is not only faster (thus eliminating the bottleneck) but also in harmony with the rest of the project so that maintainability isn&#039;t hurt. You have to constantly make decisions (e.g. between straight forward &quot;to the point solutions&quot; and a generalized, loose coupled architecture) and just because something seems a good idea now it might still hurt the project in the long run. This might sound unprofessional but I think a good programmer develops some kind of intuition to help him answer these question. It&#039;s really hard to formalize... and probably something you&#039;ll never master completely.

I really liked the idea of optimizing for saving life time. When considering that point two things seem to be important that I used to undervalue: The build-times of the software and the workflow/asset pipeline. If you&#039;ve ever worked on a project with long build times you know how much that can hurt your productivity and it takes care early in the project to avoid build times exploding later. The same is true for getting content into your game. If the tool chain is bad you can waste a lot of time just exporting, packaging, merging, loading and other things that involve waiting for a progress bar to fill up. As a game developer I become increasingly interested in software that aids the creation-process of the game as opposed to actual game code. 

For indie games where we can&#039;t throw a million man-hours at a project but at the same time have to compete with other products that might have had more resources to spend I&#039;d like to suggest another target to optimize for. Wow-factor! :)

Optimizing the level loading code in Doom does not increase the Wow-factor but identifying the one thing that could make your product special might be worth all the optimization you can spend on it. That&#039;s one reason why I found myself to work a lot with Flash in my spare time. Because with Flash there are limitting factors other then my time budget. That&#039;s why the guys in the Demo scene chose to work under artificial constraints (usually size constraints of the executable) because it&#039;s not only *fun* but also educational (right word?) to have to optimize things beyond the naive approach.

My last hobby game project was a retro style flash game. I pixeled the graphics myself (so they are quite bad) did the level design (bad) and story (english is not my first language - bad) and it&#039;s tile based and I used creative commons music and some beep-sounds. Why bother making it? What makes it unique and worth my development time and the time of players? The gameplay idea I wanted to explore involved light and shadow and so I&#039;ve spend about half the coding time on getting dynamic light and shadow into the pixel graphics game. I think it was worth it. That visual combination is something fresh and hard to copy and it got some people pretty excited. It&#039;s what makes the game unique. (Have a quick look: http://runehunt.pixelpracht.net/) One great feature is enough to set you appart from the crowd which doesn&#039;t mean that it makes a great game just not a complete failure.^^]]></description>
			<content:encoded><![CDATA[<p>Great talk and some very good points. It&#8217;s reassuring that a lot of your advice isn&#8217;t totally new to me though I agree that those realizations often have come to me with experience and _after_ my formal education.</p>
<p>Regarding the &#8220;premature optimization is the root of all evil&#8221; advice I found that it&#8217;s a good approach to write straight forward (often bruteforce) code and use a profiler every now and then to identify the worst bottle-necks then optimize these specific parts of the code. The difficulty is in maintaining a project where this refactoring is easily possible and where the refactored code is not only faster (thus eliminating the bottleneck) but also in harmony with the rest of the project so that maintainability isn&#8217;t hurt. You have to constantly make decisions (e.g. between straight forward &#8220;to the point solutions&#8221; and a generalized, loose coupled architecture) and just because something seems a good idea now it might still hurt the project in the long run. This might sound unprofessional but I think a good programmer develops some kind of intuition to help him answer these question. It&#8217;s really hard to formalize&#8230; and probably something you&#8217;ll never master completely.</p>
<p>I really liked the idea of optimizing for saving life time. When considering that point two things seem to be important that I used to undervalue: The build-times of the software and the workflow/asset pipeline. If you&#8217;ve ever worked on a project with long build times you know how much that can hurt your productivity and it takes care early in the project to avoid build times exploding later. The same is true for getting content into your game. If the tool chain is bad you can waste a lot of time just exporting, packaging, merging, loading and other things that involve waiting for a progress bar to fill up. As a game developer I become increasingly interested in software that aids the creation-process of the game as opposed to actual game code. </p>
<p>For indie games where we can&#8217;t throw a million man-hours at a project but at the same time have to compete with other products that might have had more resources to spend I&#8217;d like to suggest another target to optimize for. Wow-factor! :)</p>
<p>Optimizing the level loading code in Doom does not increase the Wow-factor but identifying the one thing that could make your product special might be worth all the optimization you can spend on it. That&#8217;s one reason why I found myself to work a lot with Flash in my spare time. Because with Flash there are limitting factors other then my time budget. That&#8217;s why the guys in the Demo scene chose to work under artificial constraints (usually size constraints of the executable) because it&#8217;s not only *fun* but also educational (right word?) to have to optimize things beyond the naive approach.</p>
<p>My last hobby game project was a retro style flash game. I pixeled the graphics myself (so they are quite bad) did the level design (bad) and story (english is not my first language &#8211; bad) and it&#8217;s tile based and I used creative commons music and some beep-sounds. Why bother making it? What makes it unique and worth my development time and the time of players? The gameplay idea I wanted to explore involved light and shadow and so I&#8217;ve spend about half the coding time on getting dynamic light and shadow into the pixel graphics game. I think it was worth it. That visual combination is something fresh and hard to copy and it got some people pretty excited. It&#8217;s what makes the game unique. (Have a quick look: <a href="http://runehunt.pixelpracht.net/" rel="nofollow ugc">http://runehunt.pixelpracht.net/</a>) One great feature is enough to set you appart from the crowd which doesn&#8217;t mean that it makes a great game just not a complete failure.^^</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3612</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 22:14:01 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3612</guid>

					<description><![CDATA[Thomas: I worked on hobbyist games in college, etc, but I started making &quot;real&quot; games just by having a little money in the bank and then starting a game company with a friend from school.  We just jumped out there and did it (not with 100% success by any means!, but it was the best learning experience of my life.)

Gabe&#039;s talk about educational games is interesting and I agree with him in general (at least from what I can tell from the liveblog-type notes!)


The thing about learning modeling and animation at school is that there isn&#039;t anything deep here.  They are just going to teach you how to operate modeling software, which is fine, but this is also something you can learn yourself by experimenting and going to web sites on the internet.  Most of what makes people good modelers and animators is about their fundamental art skills, which that class probably isn&#039;t going to teach.  Computer science, though, is a very deep subject and there&#039;s a lot of wisdom involved there, which is why it makes sense to learn that in a school (because the internet is actually kind of a garbage source when it comes to CS -- there is just *so* much bad advice out there, vastly outweighing the good advice, and if you are just learning, how are you supposed to be able to tell the difference between what is good and what is bad?)


The recaptcha is just to prevent the huge amount of spam that we tend to get, to cut down on how much maintenance this blog takes (so we can work on the game instead!)  It is a little bit inconvenient for users, probably, but hopefully it won&#039;t ask you more than once after it&#039;s installed?  (It is not asking me...)]]></description>
			<content:encoded><![CDATA[<p>Thomas: I worked on hobbyist games in college, etc, but I started making &#8220;real&#8221; games just by having a little money in the bank and then starting a game company with a friend from school.  We just jumped out there and did it (not with 100% success by any means!, but it was the best learning experience of my life.)</p>
<p>Gabe&#8217;s talk about educational games is interesting and I agree with him in general (at least from what I can tell from the liveblog-type notes!)</p>
<p>The thing about learning modeling and animation at school is that there isn&#8217;t anything deep here.  They are just going to teach you how to operate modeling software, which is fine, but this is also something you can learn yourself by experimenting and going to web sites on the internet.  Most of what makes people good modelers and animators is about their fundamental art skills, which that class probably isn&#8217;t going to teach.  Computer science, though, is a very deep subject and there&#8217;s a lot of wisdom involved there, which is why it makes sense to learn that in a school (because the internet is actually kind of a garbage source when it comes to CS &#8212; there is just *so* much bad advice out there, vastly outweighing the good advice, and if you are just learning, how are you supposed to be able to tell the difference between what is good and what is bad?)</p>
<p>The recaptcha is just to prevent the huge amount of spam that we tend to get, to cut down on how much maintenance this blog takes (so we can work on the game instead!)  It is a little bit inconvenient for users, probably, but hopefully it won&#8217;t ask you more than once after it&#8217;s installed?  (It is not asking me&#8230;)</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3610</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 22:07:41 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3610</guid>

					<description><![CDATA[Damn Philip, having played your game (though the last time was a long time ago -- send me a new version!!  I was just thinking recently about dropping you a line asking how it was going.) I am a little surprised at the 120k lines thing, though maybe that includes blank lines and comments?  Or maybe you just keep adding crazy stuff to it?  

Definitely there are contradictions all over the place; there just isn&#039;t any hard-and-fast rule that one follows 100% of the time.  Sometimes a generalized system really is the right thing, sometimes a handful of specific systems are the right thing.  But the reason I slanted the lecture in the way I did was to directly counter the overzealousness toward certain ideals that tends to be taught in school (always generalize, etc, etc).  

I personally don&#039;t have a fear of shipping because I myself am a harsher critic than just about anyone I know.  So if I think the game is good, well, that is good enough for me.  (Certainly other people can disagree, but then usually it&#039;s because the things they think are interesting / good are very different from the things I think are interesting / good).  And also, lately, especially on this new game, I am sort of moving away from a good/bad spectrum and more toward the idea of just whether this game acts as a lens or as a tribute to a certain part of the universe, in the way I would like it to; and this is quite far removed from the idea of &quot;is this a good or bad entertainment product?&quot;  I find it&#039;s pretty easy for me to see whether a game is acting as a lens in that way, and as long as it is doing that, I am okay with it...]]></description>
			<content:encoded><![CDATA[<p>Damn Philip, having played your game (though the last time was a long time ago &#8212; send me a new version!!  I was just thinking recently about dropping you a line asking how it was going.) I am a little surprised at the 120k lines thing, though maybe that includes blank lines and comments?  Or maybe you just keep adding crazy stuff to it?  </p>
<p>Definitely there are contradictions all over the place; there just isn&#8217;t any hard-and-fast rule that one follows 100% of the time.  Sometimes a generalized system really is the right thing, sometimes a handful of specific systems are the right thing.  But the reason I slanted the lecture in the way I did was to directly counter the overzealousness toward certain ideals that tends to be taught in school (always generalize, etc, etc).  </p>
<p>I personally don&#8217;t have a fear of shipping because I myself am a harsher critic than just about anyone I know.  So if I think the game is good, well, that is good enough for me.  (Certainly other people can disagree, but then usually it&#8217;s because the things they think are interesting / good are very different from the things I think are interesting / good).  And also, lately, especially on this new game, I am sort of moving away from a good/bad spectrum and more toward the idea of just whether this game acts as a lens or as a tribute to a certain part of the universe, in the way I would like it to; and this is quite far removed from the idea of &#8220;is this a good or bad entertainment product?&#8221;  I find it&#8217;s pretty easy for me to see whether a game is acting as a lens in that way, and as long as it is doing that, I am okay with it&#8230;</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: justin		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3608</link>

		<dc:creator><![CDATA[justin]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 21:48:57 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3608</guid>

					<description><![CDATA[Hey that was a very good story about the education system... don&#039;t you have that guy Feynman quoted in in the main page for the site?!

Thank you for sharing the lecture with us, it will come in handy and make my life much easier.

Totilo made a nice live blog thing with Gabe Newell talking about games for education and training, its also a very excellent lecture. 
http://kotaku.com/5814405/liveblogging-whatever-smart-stuff-gabe-newell-has-to-say-today

i just graduate from high school the 2nd of June  nad there are two programs at the community college that i will go to: game development and computer science. I was thinking it was better to go for the CS program but in that program there is no modeling, animating or engine work with real time graphics and i consider that important as well. i don&#039;t know if i will learn other aspects of game development if i just go to CS, I don&#039;t think it has any hands on with modeling and animation... but i would need that right? so what do i do im going to college. just drop the animation and and game developing for straight-up CS only?

...also, did you notice how there is capcha now in the site? idk if its just for me b/c i tend to comment a lot, but there is a ReCapcha thingy under the &quot;leave a reply&quot; section of the article. What&#039;s up with that?

Capcha: Lunch Toperig ???????]]></description>
			<content:encoded><![CDATA[<p>Hey that was a very good story about the education system&#8230; don&#8217;t you have that guy Feynman quoted in in the main page for the site?!</p>
<p>Thank you for sharing the lecture with us, it will come in handy and make my life much easier.</p>
<p>Totilo made a nice live blog thing with Gabe Newell talking about games for education and training, its also a very excellent lecture.<br />
<a href="http://kotaku.com/5814405/liveblogging-whatever-smart-stuff-gabe-newell-has-to-say-today" rel="nofollow ugc">http://kotaku.com/5814405/liveblogging-whatever-smart-stuff-gabe-newell-has-to-say-today</a></p>
<p>i just graduate from high school the 2nd of June  nad there are two programs at the community college that i will go to: game development and computer science. I was thinking it was better to go for the CS program but in that program there is no modeling, animating or engine work with real time graphics and i consider that important as well. i don&#8217;t know if i will learn other aspects of game development if i just go to CS, I don&#8217;t think it has any hands on with modeling and animation&#8230; but i would need that right? so what do i do im going to college. just drop the animation and and game developing for straight-up CS only?</p>
<p>&#8230;also, did you notice how there is capcha now in the site? idk if its just for me b/c i tend to comment a lot, but there is a ReCapcha thingy under the &#8220;leave a reply&#8221; section of the article. What&#8217;s up with that?</p>
<p>Capcha: Lunch Toperig ???????</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Thomas Figg		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3607</link>

		<dc:creator><![CDATA[Thomas Figg]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 21:17:31 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3607</guid>

					<description><![CDATA[Hi Jon, I found your video/ presentation really interesting and thought provoking, so firstly thanks for putting it up here for us to digest!
I&#039;ve been a graduate Computer Scientist for a whole year now, and my goal is to become a self-sufficient independant games developer, pure and simple. However, this dream is clearly relient on me first producing a game which actually makes money! I&#039;ve already learnt a bucket load in this last year about myself, my programming style and some ways to optimise my &#039;time spent working on a project&#039;.

Anyway, moving onto the question; I&#039;m working currently on my second personal game project, but I&#039;m frustrated at the limited amount of time I get to actually progress with it, what with having a full-time job as a web developer. 

For my own interest, I was wondering what your early game dev days were like. Were you working a &quot;proper&quot; job during the day to pay the rent, while chipping away at your games in the spare time? Or did you go all out on games from day one and manage to get enough back to finance the next one?]]></description>
			<content:encoded><![CDATA[<p>Hi Jon, I found your video/ presentation really interesting and thought provoking, so firstly thanks for putting it up here for us to digest!<br />
I&#8217;ve been a graduate Computer Scientist for a whole year now, and my goal is to become a self-sufficient independant games developer, pure and simple. However, this dream is clearly relient on me first producing a game which actually makes money! I&#8217;ve already learnt a bucket load in this last year about myself, my programming style and some ways to optimise my &#8216;time spent working on a project&#8217;.</p>
<p>Anyway, moving onto the question; I&#8217;m working currently on my second personal game project, but I&#8217;m frustrated at the limited amount of time I get to actually progress with it, what with having a full-time job as a web developer. </p>
<p>For my own interest, I was wondering what your early game dev days were like. Were you working a &#8220;proper&#8221; job during the day to pay the rent, while chipping away at your games in the spare time? Or did you go all out on games from day one and manage to get enough back to finance the next one?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Philip Bak		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3606</link>

		<dc:creator><![CDATA[Philip Bak]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 21:00:57 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3606</guid>

					<description><![CDATA[Two quick questions...

Firstly, I agree with you on deleting code and preferring hard coded (to over abstract) systems, but do you see the contradiction that can occur between the two? I sometimes find myself in the position where I could get rid of 2-3 systems by creating 1 generalised one. My preferred option is not to delete here. Wonderfully abstracted systems have got into trouble many times over the years.

Secondly, have you ever suffered from the fear of shipping? I&#039;m now over 3 years in to my game (121,619 lines) and whilst I have that burning desire to get it into the hands of as many players as possible I&#039;m often paralysed by the fear of what people will think. Is it just me that suffers from this resistance and how can it be fought?

Anyway, great talk.]]></description>
			<content:encoded><![CDATA[<p>Two quick questions&#8230;</p>
<p>Firstly, I agree with you on deleting code and preferring hard coded (to over abstract) systems, but do you see the contradiction that can occur between the two? I sometimes find myself in the position where I could get rid of 2-3 systems by creating 1 generalised one. My preferred option is not to delete here. Wonderfully abstracted systems have got into trouble many times over the years.</p>
<p>Secondly, have you ever suffered from the fear of shipping? I&#8217;m now over 3 years in to my game (121,619 lines) and whilst I have that burning desire to get it into the hands of as many players as possible I&#8217;m often paralysed by the fear of what people will think. Is it just me that suffers from this resistance and how can it be fought?</p>
<p>Anyway, great talk.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jake Brownson		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3605</link>

		<dc:creator><![CDATA[Jake Brownson]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 20:59:17 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3605</guid>

					<description><![CDATA[Thanks for posting this talk. I wish I had heard it 4-5 years ago. I&#039;m starting to learn some of these lessons myself and it&#039;s nice to hear them expressed succinctly.

(I&#039;m also depressed that the Witness preview was audio only :p, but it&#039;s probably best not to follow it too closely so I can really enjoy it when it is released)]]></description>
			<content:encoded><![CDATA[<p>Thanks for posting this talk. I wish I had heard it 4-5 years ago. I&#8217;m starting to learn some of these lessons myself and it&#8217;s nice to hear them expressed succinctly.</p>
<p>(I&#8217;m also depressed that the Witness preview was audio only :p, but it&#8217;s probably best not to follow it too closely so I can really enjoy it when it is released)</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Alberto Fonseca		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3603</link>

		<dc:creator><![CDATA[Alberto Fonseca]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 20:32:16 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3603</guid>

					<description><![CDATA[Great talk and tips for approaching programming in general. Time of your life spent is a great metric to prioritize when thinking optimization, you probably just saved us all a couple of years if we can apply this principle regularly. :)]]></description>
			<content:encoded><![CDATA[<p>Great talk and tips for approaching programming in general. Time of your life spent is a great metric to prioritize when thinking optimization, you probably just saved us all a couple of years if we can apply this principle regularly. :)</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Art Siriwatt		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3602</link>

		<dc:creator><![CDATA[Art Siriwatt]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 20:20:08 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3602</guid>

					<description><![CDATA[As a student entering college next year at UC Berkeley as a CS major, this was really awesome. That being said though, my plans are to go into game development. 
A quick question though, how do you feel about the current way colleges are pushing game development degrees? Are dedicated &quot;games studies&quot; programs more useful than building upon CS programs?]]></description>
			<content:encoded><![CDATA[<p>As a student entering college next year at UC Berkeley as a CS major, this was really awesome. That being said though, my plans are to go into game development.<br />
A quick question though, how do you feel about the current way colleges are pushing game development degrees? Are dedicated &#8220;games studies&#8221; programs more useful than building upon CS programs?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3600</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 19:23:35 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3600</guid>

					<description><![CDATA[If you want an example of how bad a bad school can be, read this story by Richard Feynman about science education in Brazil:

http://v.cx/2010/04/feynman-brazil-education

Of course that is an extreme case, but a lot of stuff that happens at bad American schools reminds me of this (though in different ways that are subtle and that I find difficult to describe fully...)]]></description>
			<content:encoded><![CDATA[<p>If you want an example of how bad a bad school can be, read this story by Richard Feynman about science education in Brazil:</p>
<p><a href="http://v.cx/2010/04/feynman-brazil-education" rel="nofollow ugc">http://v.cx/2010/04/feynman-brazil-education</a></p>
<p>Of course that is an extreme case, but a lot of stuff that happens at bad American schools reminds me of this (though in different ways that are subtle and that I find difficult to describe fully&#8230;)</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3599</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 19:17:09 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3599</guid>

					<description><![CDATA[Devin: That CS degree listing looks *way* better than the game design one.

However, I have no idea how good of a computer science school UCF is.  If it&#039;s a good school, cool.  If it&#039;s a bad school, do you really want to go there for 4 years?

Part of what I was trying to get at with my earlier posting is... back when universities were invented, the world was fundamentally different.  If you didn&#039;t know something, there was usually no way to actually find out about it unless you went somewhere and studied with people who knew it.  Now due to the internet that is different, so the role of universities will have to change.  Going to a mediocre school back even as recently as the 1980s-1990s could still be a good idea, because it was the best way to find out about things.  Now that is no longer the case.  So I think as we go into the future, the utility of mediocre schools will go down (but good schools will probably still have high utility)... especially once outfits like the Khan Academy become more-pervasive.

I am not saying UCF is mediocre; I don&#039;t know anything about it, it might be great.  But I am just saying that, this being a big influence on the future course of your life, it deserves more consideration than &quot;I am going to a 4-year university because that is what I am supposed to do in life at this point, and I am restricted to Florida for state financial aid reasons&quot; or whatever.]]></description>
			<content:encoded><![CDATA[<p>Devin: That CS degree listing looks *way* better than the game design one.</p>
<p>However, I have no idea how good of a computer science school UCF is.  If it&#8217;s a good school, cool.  If it&#8217;s a bad school, do you really want to go there for 4 years?</p>
<p>Part of what I was trying to get at with my earlier posting is&#8230; back when universities were invented, the world was fundamentally different.  If you didn&#8217;t know something, there was usually no way to actually find out about it unless you went somewhere and studied with people who knew it.  Now due to the internet that is different, so the role of universities will have to change.  Going to a mediocre school back even as recently as the 1980s-1990s could still be a good idea, because it was the best way to find out about things.  Now that is no longer the case.  So I think as we go into the future, the utility of mediocre schools will go down (but good schools will probably still have high utility)&#8230; especially once outfits like the Khan Academy become more-pervasive.</p>
<p>I am not saying UCF is mediocre; I don&#8217;t know anything about it, it might be great.  But I am just saying that, this being a big influence on the future course of your life, it deserves more consideration than &#8220;I am going to a 4-year university because that is what I am supposed to do in life at this point, and I am restricted to Florida for state financial aid reasons&#8221; or whatever.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3598</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 19:12:26 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3598</guid>

					<description><![CDATA[Someone was saying in an earlier thread that they were told the video was lost (which is why I finally got around to putting this up.)]]></description>
			<content:encoded><![CDATA[<p>Someone was saying in an earlier thread that they were told the video was lost (which is why I finally got around to putting this up.)</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Doug Orleans		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3597</link>

		<dc:creator><![CDATA[Doug Orleans]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 17:30:19 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3597</guid>

					<description><![CDATA[Jon was not only a member of the CSUA, he was the president!

Still no word on the video, eh?]]></description>
			<content:encoded><![CDATA[<p>Jon was not only a member of the CSUA, he was the president!</p>
<p>Still no word on the video, eh?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Devin Raposo		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3596</link>

		<dc:creator><![CDATA[Devin Raposo]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 17:23:56 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3596</guid>

					<description><![CDATA[Thank you for your time. So, Computer Science would be my best bet as a major? (http://www.catalog.sdes.ucf.edu/academic_programs/pdf/Computer_Science_BS.pdf , I am basically restricted to Florida due to financial reasons)]]></description>
			<content:encoded><![CDATA[<p>Thank you for your time. So, Computer Science would be my best bet as a major? (<a href="http://www.catalog.sdes.ucf.edu/academic_programs/pdf/Computer_Science_BS.pdf" rel="nofollow ugc">http://www.catalog.sdes.ucf.edu/academic_programs/pdf/Computer_Science_BS.pdf</a> , I am basically restricted to Florida due to financial reasons)</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Joel		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3595</link>

		<dc:creator><![CDATA[Joel]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 17:13:11 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3595</guid>

					<description><![CDATA[Braid is a pretty big inspiration for me to be an independent video game developer, so hearing this talk was really cool.
This made me feel more confident that I&#039;m going about my current hobby work in the right way even though I know there&#039;s still a lot I need to learn.
Thank you.]]></description>
			<content:encoded><![CDATA[<p>Braid is a pretty big inspiration for me to be an independent video game developer, so hearing this talk was really cool.<br />
This made me feel more confident that I&#8217;m going about my current hobby work in the right way even though I know there&#8217;s still a lot I need to learn.<br />
Thank you.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Erin Gunn		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3594</link>

		<dc:creator><![CDATA[Erin Gunn]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 16:46:50 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3594</guid>

					<description><![CDATA[Thank you for the talk and the response to the question of school.  I can&#039;t even describe how valuable they both were as they would decrease my coding productivity too much.]]></description>
			<content:encoded><![CDATA[<p>Thank you for the talk and the response to the question of school.  I can&#8217;t even describe how valuable they both were as they would decrease my coding productivity too much.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3593</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 16:35:49 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3593</guid>

					<description><![CDATA[Alex: It&#039;s a good question.  I suspect that they  drop that requirement for XNA games.  It&#039;s actually a &quot;softer&quot; requirement in that you can get it waived if they like you enough.  

Keep in mind though that there are very few XNA games released on the 360 under this cert process (almost all are XBLIG games, which do not go through certification).  I know that The Dishwasher games on XBLA are XNA, and there may be a few others, but really almost all games use the native API.

As for what to learn, I don&#039;t know... if you are able to make pretty good games in a higher-level language, but are having problems getting the performance you need, then maybe.  If you are not at that point then maybe there is no good reason?]]></description>
			<content:encoded><![CDATA[<p>Alex: It&#8217;s a good question.  I suspect that they  drop that requirement for XNA games.  It&#8217;s actually a &#8220;softer&#8221; requirement in that you can get it waived if they like you enough.  </p>
<p>Keep in mind though that there are very few XNA games released on the 360 under this cert process (almost all are XBLIG games, which do not go through certification).  I know that The Dishwasher games on XBLA are XNA, and there may be a few others, but really almost all games use the native API.</p>
<p>As for what to learn, I don&#8217;t know&#8230; if you are able to make pretty good games in a higher-level language, but are having problems getting the performance you need, then maybe.  If you are not at that point then maybe there is no good reason?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Alex		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3592</link>

		<dc:creator><![CDATA[Alex]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 16:29:52 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3592</guid>

					<description><![CDATA[I&#039;ve been set on learning C# so i could use XNA and publish on PC and Xbox, but i&#039;m wondering, now that i&#039;ve listened to your talk, why does Microsoft uses it as it&#039;s default language for XNA since anytime the garbage collector could jump in and lower the fps at any moment, thus failing their own quality standards?

Would you recommend i should simply learn C++ once and for all (which i have been avoiding for years, judging it too low-level for my tastes...) ?]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been set on learning C# so i could use XNA and publish on PC and Xbox, but i&#8217;m wondering, now that i&#8217;ve listened to your talk, why does Microsoft uses it as it&#8217;s default language for XNA since anytime the garbage collector could jump in and lower the fps at any moment, thus failing their own quality standards?</p>
<p>Would you recommend i should simply learn C++ once and for all (which i have been avoiding for years, judging it too low-level for my tastes&#8230;) ?</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Jonathan Blow		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3591</link>

		<dc:creator><![CDATA[Jonathan Blow]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 16:04:38 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3591</guid>

					<description><![CDATA[Yeah, that UCF course listing does not look good.  I would not recommend going to that school.  

It looks like one of these newly-thrown-together programs made by a committee that doesn&#039;t understand anything about what the real goals are.

Keep in mind what&#039;s going on academically: now that some schools have established good game design programs, they have seen admissions to those programs skyrocket because a lot of people want to learn how to make video games.  So now there is a wave of &quot;me too&quot; schools who want to boost admissions / keep relevancy of certain departments that seemed to be in decline.  How do they do this?  By saying they have a game design program, just like some other school. 

You don&#039;t want to go to a &quot;me too&quot; school, you want to go to a place where there are people who actually know some things.  I don&#039;t follow video game schools very closely, but I have a positive impression of the NYU Game Center and of the stuff that USC does.  Valve also says they tend to be pretty happy with people they have hired from Digipen (though keep in mind they are saying this about hiring a select minority of people from there).

I myself went to UC Berkeley for computer science (there was no such thing as a video game major or minor at that time, and a serious school would never have been able to establish such a silly thing)... and then I dropped out before getting a degree.  It was very good for me to go there and learn the things I learned, but I also spent too long there.  Anyway, after that, I was able to leave school and go make video games just fine (at the hardest possible time to go try and do this in the entire history of video games).  So yeah, if you just go to a good school for computer science, that is still maybe the best option.

If you are not familiar with the &quot;education bubble&quot; argument, be aware that some prominent people are thinking that the cost of education is now high enough, and opportunities to learn outside of school now rich enough, that going to college is a net lose (financially and in terms of life skills) and that you may well be better off just finding really smart people to learn from in the real world and going and doing those things.  Peter Thiel went so far as to offer a bunch of $100,000 fellowships for people to go do creative things instead of amassing debt in school: http://huff.to/mFKEvx

Keep in mind that even if you go to a potentially good school, it is only really what you make it: it can be a good school or a bad school based on what you do there.  For the minority of people who come out of Digipen or wherever and are really good and creative game programmers, perhaps many of them would have become just as good if working on their own just trying to make things, using the Internet as a reference.  It&#039;s hard to say!]]></description>
			<content:encoded><![CDATA[<p>Yeah, that UCF course listing does not look good.  I would not recommend going to that school.  </p>
<p>It looks like one of these newly-thrown-together programs made by a committee that doesn&#8217;t understand anything about what the real goals are.</p>
<p>Keep in mind what&#8217;s going on academically: now that some schools have established good game design programs, they have seen admissions to those programs skyrocket because a lot of people want to learn how to make video games.  So now there is a wave of &#8220;me too&#8221; schools who want to boost admissions / keep relevancy of certain departments that seemed to be in decline.  How do they do this?  By saying they have a game design program, just like some other school. </p>
<p>You don&#8217;t want to go to a &#8220;me too&#8221; school, you want to go to a place where there are people who actually know some things.  I don&#8217;t follow video game schools very closely, but I have a positive impression of the NYU Game Center and of the stuff that USC does.  Valve also says they tend to be pretty happy with people they have hired from Digipen (though keep in mind they are saying this about hiring a select minority of people from there).</p>
<p>I myself went to UC Berkeley for computer science (there was no such thing as a video game major or minor at that time, and a serious school would never have been able to establish such a silly thing)&#8230; and then I dropped out before getting a degree.  It was very good for me to go there and learn the things I learned, but I also spent too long there.  Anyway, after that, I was able to leave school and go make video games just fine (at the hardest possible time to go try and do this in the entire history of video games).  So yeah, if you just go to a good school for computer science, that is still maybe the best option.</p>
<p>If you are not familiar with the &#8220;education bubble&#8221; argument, be aware that some prominent people are thinking that the cost of education is now high enough, and opportunities to learn outside of school now rich enough, that going to college is a net lose (financially and in terms of life skills) and that you may well be better off just finding really smart people to learn from in the real world and going and doing those things.  Peter Thiel went so far as to offer a bunch of $100,000 fellowships for people to go do creative things instead of amassing debt in school: <a href="http://huff.to/mFKEvx" rel="nofollow ugc">http://huff.to/mFKEvx</a></p>
<p>Keep in mind that even if you go to a potentially good school, it is only really what you make it: it can be a good school or a bad school based on what you do there.  For the minority of people who come out of Digipen or wherever and are really good and creative game programmers, perhaps many of them would have become just as good if working on their own just trying to make things, using the Internet as a reference.  It&#8217;s hard to say!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Daniel		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3590</link>

		<dc:creator><![CDATA[Daniel]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 16:03:39 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3590</guid>

					<description><![CDATA[What you said makes a lot of sense, and gave me a fresh perspective on coding. Very interesting stuff, thanks for sharing!]]></description>
			<content:encoded><![CDATA[<p>What you said makes a lot of sense, and gave me a fresh perspective on coding. Very interesting stuff, thanks for sharing!</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Du Song		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3589</link>

		<dc:creator><![CDATA[Du Song]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 14:35:52 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3589</guid>

					<description><![CDATA[Really angry when I can only listen to the game preview! :B]]></description>
			<content:encoded><![CDATA[<p>Really angry when I can only listen to the game preview! :B</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Glenn		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3588</link>

		<dc:creator><![CDATA[Glenn]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 14:29:35 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3588</guid>

					<description><![CDATA[Devin, I recently graduated from the ITT Technical Institute&#039;s &quot;Digital Entertainment and Game Design&quot; BS degree.  The program was very very terrible, with exception: the person who taught most of the classes was a 30-year veteran of the industry and knew what he was talking about.  I blame the corporate-generated curriculum and lack of progressive computer-use policy for making it a bad degree program.  If I could do it over, I&#039;d go get a CS degree from a community college and learn game programming on my own.

ITT&#039;s program focused on game design theory (which is important) and project management, and lacked programming classes or game-art classes, also there were about 4 classes that were redundant.  It wasn&#039;t worth it.

Frankly, I only see 2 programming classes in that BA.  Unless you&#039;re going to teach yourself programming, you won&#039;t come out of that degree knowing how to make games.]]></description>
			<content:encoded><![CDATA[<p>Devin, I recently graduated from the ITT Technical Institute&#8217;s &#8220;Digital Entertainment and Game Design&#8221; BS degree.  The program was very very terrible, with exception: the person who taught most of the classes was a 30-year veteran of the industry and knew what he was talking about.  I blame the corporate-generated curriculum and lack of progressive computer-use policy for making it a bad degree program.  If I could do it over, I&#8217;d go get a CS degree from a community college and learn game programming on my own.</p>
<p>ITT&#8217;s program focused on game design theory (which is important) and project management, and lacked programming classes or game-art classes, also there were about 4 classes that were redundant.  It wasn&#8217;t worth it.</p>
<p>Frankly, I only see 2 programming classes in that BA.  Unless you&#8217;re going to teach yourself programming, you won&#8217;t come out of that degree knowing how to make games.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Gabriel Verdon		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3587</link>

		<dc:creator><![CDATA[Gabriel Verdon]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 13:13:35 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3587</guid>

					<description><![CDATA[Any course that says it teaches game design is probably a good one to avoid - I learned this from experience.]]></description>
			<content:encoded><![CDATA[<p>Any course that says it teaches game design is probably a good one to avoid &#8211; I learned this from experience.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: rascus		</title>
		<link>https://the-witness.net/news/2011/06/how-to-program-independent-games/comment-page-1/#comment-3585</link>

		<dc:creator><![CDATA[rascus]]></dc:creator>
		<pubDate>Thu, 23 Jun 2011 10:36:31 +0000</pubDate>
		<guid isPermaLink="false">https://the-witness.net/news/?p=1004#comment-3585</guid>

					<description><![CDATA[Great talk, nice to hear practical advice from someone working in the field.
I have the same question as Devin. I&#039;m aiming at game design and have found a degree that covers a broad range in that field (http://informatics.iupui.edu/media/undergraduate/specialty-areas.html) I have a friend who is going to the same college,  but he is going with a CS major because it is more marketable if one is looking for a job than just game design.
What are your thoughts on that?]]></description>
			<content:encoded><![CDATA[<p>Great talk, nice to hear practical advice from someone working in the field.<br />
I have the same question as Devin. I&#8217;m aiming at game design and have found a degree that covers a broad range in that field (<a href="http://informatics.iupui.edu/media/undergraduate/specialty-areas.html" rel="nofollow ugc">http://informatics.iupui.edu/media/undergraduate/specialty-areas.html</a>) I have a friend who is going to the same college,  but he is going with a CS major because it is more marketable if one is looking for a job than just game design.<br />
What are your thoughts on that?</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
