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

<channel>
	<title>Ludum Dare &#187; sf17k</title>
	<atom:link href="http://www.ludumdare.com/compo/author/sf17k/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ludumdare.com/compo</link>
	<description>A tri-annual 48 hour solo game development competition.</description>
	<lastBuildDate>Wed, 08 Feb 2012 14:14:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Nuclear Test Postmortem</title>
		<link>http://www.ludumdare.com/compo/2010/05/01/nuclear-test-postmortem/</link>
		<comments>http://www.ludumdare.com/compo/2010/05/01/nuclear-test-postmortem/#comments</comments>
		<pubDate>Sat, 01 May 2010 13:32:20 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[LD #17 - Islands - 2010]]></category>
		<category><![CDATA[postmortem]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=20270</guid>
		<description><![CDATA[I was feeling like crap so I figured I&#8217;d do a Ludum Dare game to cheer me up. The theme turned out to be crap so I decided to just make a stupid game instead of a good one. I hated working on it and just wanted it to end the whole time, and was [...]]]></description>
			<content:encoded><![CDATA[<p>I was feeling like crap so I figured I&#8217;d do a Ludum Dare game to cheer me up. The theme turned out to be crap so I decided to just make a stupid game instead of a good one. I hated working on it and just wanted it to end the whole time, and was totally ignoring it for part of the day. That seems to have helped me avoid getting too focused and prioritize my TODO list so ironically the game turned out okay.</p>
<p>I did get something out of it. I learned how to prioritize features and that it&#8217;s really better to do something you want to do as soon as possible instead of waiting for the right time, even if it&#8217;s shoddy, because the longer you&#8217;re exposed to it the more improvements you can make. But that doesn&#8217;t really help because I still felt like crap working on the game, and I still feel like crap whenever I do anything positive, and the ego trip from reading the comments on it doesn&#8217;t make up for it in the end.</p>
<p>P.S. On a lighter note, the game was inspired by a <a href="http://blogs.wnyc.org/radiolab/2009/04/20/where-am-i-rebroadcast/">Radiolab episode</a> that discussed how fighter pilots performing high G-force maneuvers sometimes lose consciousness and have dreams and out of body experiences. I read that hallucinations can also happen due to sensory deprivation in high altitude flight. Of course, my game isn&#8217;t even close to the actual experience, but I thought it was an interesting idea.</p>
<p><a href="http://www.ludumdare.com/compo/ludum-dare-17/?action=preview&amp;uid=757">Play Nuclear Test</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2010/05/01/nuclear-test-postmortem/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Know Your Islands</title>
		<link>http://www.ludumdare.com/compo/2010/04/25/know-your-islands/</link>
		<comments>http://www.ludumdare.com/compo/2010/04/25/know-your-islands/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 02:15:40 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[LD #17 - Islands - 2010]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=19420</guid>
		<description><![CDATA[Island Abduction Island Airline Island Assault Island Balance Island Conflict Island Construction Malfunction Island Defence Island Defence Island Defender Island Defender Island Defense Island Escape Island Guns Island Hermit Hop! Island Hopping Island Jumper Island of Bounty Island Planet! Island Repair Man Island Rescue Island Robotica Island Shoving Island Skate Delivery Boy Island Survivor Island [...]]]></description>
			<content:encoded><![CDATA[<p>Island Abduction<br />
Island Airline<br />
Island Assault<br />
Island Balance<br />
Island Conflict<br />
Island Construction Malfunction<br />
Island Defence<br />
Island Defence<br />
Island Defender<br />
Island Defender<br />
Island Defense<br />
Island Escape<br />
Island Guns<br />
Island Hermit Hop!<br />
Island Hopping<br />
Island Jumper<br />
Island of Bounty<br />
Island Planet!<br />
Island Repair Man<br />
Island Rescue<br />
Island Robotica<br />
Island Shoving<br />
Island Skate Delivery Boy<br />
Island Survivor<br />
Island Tour Racing<br />
Island Towers<br />
Island Warriors<br />
Island World<br />
islands<br />
Islands At War<br />
Islands Far Away<br />
Islands in the Sky<br />
Islands of the Stone God<br />
Islands Survival<br />
Islands!?! Curses!?!<br />
Islands: Through the Sweep of Stars<br />
IslandsMUD</p>
<p>Let&#8217;s pick a theme with <a href="http://www.ludumdare.com/compo/2010/04/21/the-right-theme/">more variety</a> next time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2010/04/25/know-your-islands/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Worth it</title>
		<link>http://www.ludumdare.com/compo/2010/04/25/worth-it/</link>
		<comments>http://www.ludumdare.com/compo/2010/04/25/worth-it/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 09:10:17 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[LD #17 - Islands - 2010]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=18485</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2010/04/3.png"><img class="aligncenter size-large wp-image-18487" src="http://www.ludumdare.com/compo/wp-content/uploads/2010/04/3-550x412.png" alt="3" width="550" height="412" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2010/04/25/worth-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I like colors</title>
		<link>http://www.ludumdare.com/compo/2010/04/24/i-like-colors/</link>
		<comments>http://www.ludumdare.com/compo/2010/04/24/i-like-colors/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 05:45:59 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[LD #17 - Islands - 2010]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=18354</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2010/04/22.png"><img class="aligncenter size-large wp-image-18356" src="http://www.ludumdare.com/compo/wp-content/uploads/2010/04/22-550x412.png" alt="2" width="550" height="412" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2010/04/24/i-like-colors/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Airplane</title>
		<link>http://www.ludumdare.com/compo/2010/04/24/airplane/</link>
		<comments>http://www.ludumdare.com/compo/2010/04/24/airplane/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 00:31:43 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[LD #17 - Islands - 2010]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=18173</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2010/04/14.png"><img class="aligncenter size-large wp-image-18172" src="http://www.ludumdare.com/compo/wp-content/uploads/2010/04/14-550x412.png" alt="1" width="550" height="412" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2010/04/24/airplane/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Right Theme</title>
		<link>http://www.ludumdare.com/compo/2010/04/21/the-right-theme/</link>
		<comments>http://www.ludumdare.com/compo/2010/04/21/the-right-theme/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 01:29:09 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[LD #17 - Islands - 2010]]></category>
		<category><![CDATA[LD - Misc]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[voting]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=15736</guid>
		<description><![CDATA[The final round of theme voting is approaching, and I&#8217;ve been thinking. Considering how big Ludum Dare is getting, and how influential the theme is to the quality of the compo, I want to make sure we pick the right one. We don&#8217;t want to repeat LD#11&#8242;s mistake of choosing Minimalist and losing entrants just [...]]]></description>
			<content:encoded><![CDATA[<p>The final round of theme voting is approaching, and I&#8217;ve been thinking. Considering how big Ludum Dare is getting, and how influential the theme is to the quality of the compo, I want to make sure we pick the right one. We don&#8217;t want to repeat LD#11&#8242;s mistake of choosing Minimalist and losing entrants just because they couldn&#8217;t come up with anything, or get a boring theme and be left with over 100 identical games. Plus, this time around we had so many theme suggestions (over 400) that they had to be trimmed down based on informal criteria, some themes that people would&#8217;ve liked to see were left out. I want to discuss what actually makes a good theme, so that we can get everyone on the same page and come up with a better way to select and vote for themes.</p>
<h3>Criteria</h3>
<p>To know what makes a good theme, first we need to know who it&#8217;s supposed to be good for. What kind of people participate in LD? Why do they participate? Here&#8217;s the reasons I came up with:</p>
<ul>
<li>It&#8217;s a fun, low-barrier-to-entry test of one&#8217;s abilities.</li>
<li>It&#8217;s an excuse to work on something and get a feeling of accomplishment.</li>
<li>It&#8217;s a social community event.</li>
<li>It&#8217;s a chance to achieve fame and fortune, if you make a good game.</li>
<li>Competing to win is a test of one&#8217;s mastery of design, coding, and art  skills.</li>
</ul>
<p>Now, participants are very varied people. We have different development styles, different skill levels of designing/coding/art, and different preferences with regards to game genre and style. A good theme should be able to accomodate as many of these as possible, while unifying the entries with a common inspiration. With the goals of LD participants in mind, here are my proposed criteria for a good theme:</p>
<ol>
<li>Can be interpreted in a number of ways such that it is a key part of the game.</li>
<li>Sufficiently restricts freedom of choice, to stimulate creativity.</li>
<li>Can be implemented in different game genres, using different mechanics.</li>
</ol>
<p><span id="more-15736"></span></p>
<h3>Reasoning</h3>
<p>Note: these criteria are somewhat subjective, and I will list examples below that may have interpretations I didn&#8217;t think of, or that you disagree with. These are merely my own subjective opinion, and most of them would normally be voted on by everyone, to give them a fair chance.</p>
<p><strong>1. Can be interpreted in a number of ways such that it is a key part of the  game.</strong></p>
<p>By &#8220;key part&#8221; I mean that if the theme was replaced, the game would be fundamentally different. In a game about collecting peppers, peppers are not a key part of the game unless the mechanics involve something specific to peppers (perhaps the goal of the game is to make the ultimate vegan pizza, for which they are a critical ingredient). If it can be easily replaced with apples or coins without changing the essence of the game, then it&#8217;s not a <em>key part of the game</em>.</p>
<p>This means that a theme like Kittens would have to be able to be intrepreted in ways involving the essential nature of the animal. For example, games about chasing mice, balancing on fences, ripping furniture. An interpretation involving merely collecting kittens does not qualify, even though it is a valid way to do an entry. Examples for a theme like Isolation could be: searching for civilization after finding yourself alone in the wild, trying to keep a crowd of people out of your house, performing chemistry experiments to isolate a certain molecule. Notice that there is much more variety in the kinds of games you could make with Isolation as a central theme. The Tower might be a theme that does not meet this criteria well.</p>
<p>This criteria also suggests a definition for the entry voting category called Theme: &#8220;On a scale of 1 to 5, how important is [theme] to the nature of the game?&#8221;</p>
<p><strong>2. Sufficiently restricts freedom of choice, to stimulate creativity.</strong></p>
<p>On the opposite end, a theme that has too many interpretations is not interesting. Abstract, Direction, and Evil are generic enough to apply to most games. There is little that can be done in the way of innovation with them. You might as well submit a game you already made. Minimalist and Exploration may be poor themes in light of this criteria.</p>
<p><strong>3. Can be implemented in different game genres, using different mechanics.</strong></p>
<p>People prefer different kinds of games, and they don&#8217;t want to play the same game 100 times. One Button, Cellular Automata, Bullet Hell, and Board Games all place restrictions on the game mechanics. This could arguably be a good creative design challenge, especially for playing-to-win types, but such themes could stifle participation from less hardcore participants.</p>
<p>Such themes also do poorly at criteria #1 in that they are not open to varied interpretation. I think a technical challenge theme is more appropriate for a MiniLD.</p>
<h3>Types of Themes</h3>
<p>The theme suggestions are generally one or more of:</p>
<ul>
<li>object</li>
<li>idea</li>
<li>action</li>
<li>setting</li>
<li>game mechanic</li>
</ul>
<p>There are specific objects without special properties like Bacon, Diabetes, Dentist, which fare poorly at criteria #1, and in my opinion should never be themes. There are also useful objects like Missiles, Paper, Robots, Advancing Wall of Doom, which may have enough leeway in interpretation to be good themes.</p>
<p>The majority of theme suggestions are ideas, which include the far too vague (Absolute, Evil, Infinity), too specific (Fractal), and moods (Boredom, Confusion, Intrigue), none of which would make a good theme. Suitable idea themes that I believe meet the criteria are: Age, Escape, Greed.</p>
<p>Actions (Fishing, Wrestling, Travel, Falling) are quite  specific and difficult to interpret in creative ways. They generally  make poor themes. Although, Conversation is an action that can be interpreted as &#8220;Communication&#8221;, an idea, and could make a good theme.</p>
<p>Settings (Caverns, Islands, Space, Forest) may result in good games, but also many similar-looking games. I do not believe settings are the ideal theme for a very large compo.</p>
<p>Game Mechanics (Strange Controls, Turn Based Eating, Bullet Hell, Board Games) dictate the actual design of the game, violating criteria #3, and resulting in too many similar games. In my opinion, these should never be themes. Note that Advancing Wall of Doom is not a game mechanic because it does not specify how it advances or what kind of doom it involves, therefore leaving room for interpretation.</p>
<p>Many themes fit into more than one category. They can be analyzed based on all of their obvious meanings.</p>
<h3>Conclusion</h3>
<p>Taking into account the number of participants and their motivations, the ideal Ludum Dare compo theme is an object or idea that performs well at the three criteria described above. Themes that obviously fail one of the criteria can be removed from voting in order to minimize the number of options to choose from. The rest can be voted on with us judging for ourselves how appropriate they are, keeping in mind that many different individuals want to participate, and that the theme that I want to do isn&#8217;t the same as the theme that I want <em>everybody</em> to do.</p>
<p>Of course, this is just what I think, and I don&#8217;t want to push my opinions. If you disagree, voice your reasons in the comments. On the other hand, if you think these criteria should be an official part of LD, please voice your support. Either way, thanks for reading!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2010/04/21/the-right-theme/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Why Evolution sucks</title>
		<link>http://www.ludumdare.com/compo/2010/04/20/why-evolution-sucks/</link>
		<comments>http://www.ludumdare.com/compo/2010/04/20/why-evolution-sucks/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 03:36:45 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[LD #17 - Islands - 2010]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=15688</guid>
		<description><![CDATA[Have you ever worked with ANY program involving evolution? They all take hours at best, weeks at worst, just to run long enough to get interesting results, let alone to develop. Way back I used to play with SodaConstructor, an applet where you make 2D moving creatures out of springs and muscles (which are springs [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever worked with ANY program involving evolution? They all take hours at best, weeks at worst, just to run long enough to get interesting results, let alone to develop.</p>
<p>Way back I used to play with SodaConstructor, an applet where you make 2D moving creatures out of springs and muscles (which are springs that expand and contract according to a sine wave) joined at the ends. A related applet was SodaRace, where you built a track for these creatures to race on, and tried to build the one that got to the end the fastest. Someone made a program that took a creature and randomly varied various aspects of its construction, put a bunch of these mutants on a track, and raced them, picking the fastest ones and repeating this in a process of evolution. It took hours just to get something remotely interesting, and days to come up with a maybe kinda cool result.</p>
<p>Same story for a bunch of life simulators that I&#8217;ve tried that you can google for. Usually the story is I run it, see a bunch of weird creatures move around randomly being stupid, and maybe if I leave it running overnight the next day I&#8217;ll see a bunch of one creature that moves around randomly, in a way that happens to not consistently lead to death. It&#8217;s watching paint dry.</p>
<p>There are several problems with simulating evolution:<span id="more-15688"></span></p>
<ol>
<li>It&#8217;s hard to come up with a digital environment that will support interesting evolution mechanics without simulating the trillions of atoms and chemical interactions that evolution has to work with. An arbitrary digital environment like a SodaConstructor applet will always have quirks that mean the most efficient creatures &#8211; the one most likely to be selected &#8211; also use the cheapest tricks and tactics, which includes bugs and glitches if there are any. Evolution will by definition test the very limits of its environment, so the tiniest glitch or imbalance in your simulation will completely throw off the quality of the results, if you ever get any.</li>
<li>No one has yet devised an evolution algorithm that knows which mutations are likely to be effective, so random evolution goes at a snail&#8217;s pace. Of course, which mutations will be effective depends entirely on the environment; for <em>complex</em> environments there might never be an <em></em>algorithm any more efficient than Real Life(tm). This compounds the problem of making a suitable environment in the first place, because it means it could take days between test cycles developing a system that&#8217;s already extraordinarily complex.</li>
<li>The results are boring. It&#8217;s just the same kind of life (or computer programs) that we already see all around us, except inefficient, inelegant, and ugly, because of their primitive and largely random nature.</li>
</ol>
<p>Evolution as a theme isn&#8217;t necessarily bad. There are other perfectly valid, doable interpretations of it. I&#8217;m just saying, if you voted for Evolution thinking you were gonna make an evolution sim, please reconsider.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2010/04/20/why-evolution-sucks/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>How to make crappy art</title>
		<link>http://www.ludumdare.com/compo/2010/04/20/how-to-make-crappy-art/</link>
		<comments>http://www.ludumdare.com/compo/2010/04/20/how-to-make-crappy-art/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 23:48:04 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[LD #17 - Islands - 2010]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[programmer art]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=15665</guid>
		<description><![CDATA[UPDATE: Experience my poor art in a game, thanks to JonathanW! I get peeved about things for no good reason a lot. One of those things is crappy art in games. I&#8217;m not really a great artist so I don&#8217;t know how to make good art, but I do know what I don&#8217;t like about [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2010/04/badgameart.png"></a><a href="http://www.ludumdare.com/compo/wp-content/uploads/2010/04/badgameart.png"><img class="aligncenter size-large wp-image-15664" src="http://www.ludumdare.com/compo/wp-content/uploads/2010/04/badgameart-550x412.png" alt="badgameart" width="550" height="412" /></a></p>
<p><em>UPDATE: Experience my poor art <a href="http://jwhiting.nfshost.com/temp/getpepers.swf">in a game</a>, thanks to JonathanW!</em></p>
<p>I get peeved about things for no good reason a lot. One of those things is crappy art in games. I&#8217;m not really a great artist so I don&#8217;t know how to make good art, but I do know what I don&#8217;t like about bad art, so I decided to complain about it in the form of this exciting tutorial! I figure knowing what to avoid is at least as important as knowing what to do, so here is my guide to making really bad art for your game!<span id="more-15665"></span></p>
<h2>Color</h2>
<p>Picking the wrong colors is obviously an important part of crappy art. The wrong color scheme can make people stop playing your game, or even not download it at all just based on the screenshots. It&#8217;s good to know how you can encourage that behavior.</p>
<p>Avoid complementary color schemes like blue/yellow, green/red, orange/purple at all costs, as they provide a good contrast and balance of hue. The mockup above is not the best example of this, as it manages to find balance between the green of the grass/foliage and the brown (red) of the wood, as well as the yellow sun against the blue sky. An easy way to avoid picking complementary colors is to use a scheme with only hues that are closer together, like nothing but green and brown.</p>
<p>Make sure to neglect the other laws of color balance, too: brightness, saturation, and contrast. The mockup again fails to totally break balance in brightness, as it contrasts the bright sun and grass with dark wood tones and black outlines. However, notice that most of the colors are highly saturated, with the fluorescent radioactive grass taking up a significant portion of the viewing area, successfully creating a palette that is a total eyesore. Also, the bright red on bright blue text in the upper left creates a clash that can literally cause your monitor to ignite if left on screen for too long.</p>
<p>If you use shading, always use basic photoshop gradients rather than drawing shadows by hand. Gradients look especially cheap and cheesy when applied to complex shapes. Make sure the colors are flat without any highlights, which are areas of lighter color on the side of an object closer to the light source, which create a sense of believable lighting. Same with shadows.</p>
<h2>Detail</h2>
<p>If you have picked a simple set of matching colors, or perhaps a minimalistic palette of black and white, don&#8217;t worry, because there&#8217;s still a lot of ways to go wrong. Detail is the way colors are put together on a small scale. Artistic styles are made and broken in the subtleties of how things are represented in your art. Use the following tools to achieve a feel of poor stylistic choice: geometry (perfect rectangles/ellipses/lines), complex textures applied to simple shapes, large soft brushes or special brushes, ugly fonts.</p>
<p>Flawlessly rendered geometrical shapes are quick and easy to make, and give a sense of inorganic coldness and unrealism. Carelessly applied textures or photographic imagery in an unrealistic world (like the bell peppers in the mockup above) add unnecessary detail, deprive the imagination of the ability to &#8220;fill in the blanks&#8221;, and instantly cause stylistic clash in your game. Very soft and unusual brushes in a single color turn game elements into cheap photoshop scribbles, again creating detail that destroys the imaginitive nature of simpler art.</p>
<p>Make sure to use as many of these techniques in combination as possible. The bigger the variety of art styles on one screen, the more conflicted the game world becomes, and the easier it is to break immersion. If one game element has a black outline, use a blurry outline on the others! Make some things flat-colored stick drawings and others photorealistic, so that it becomes difficult to imagine them interacting with each other.</p>
<h2>Composition</h2>
<p>Let&#8217;s say that despite your efforts, you ended up with a decent color scheme AND a consistent art style. You still have one last chance to ruin the game experience. Composition is the arrangement of parts of objects, scenes, or levels on a larger scale. Draw all objects in poor arrangement and out of proportion, and you&#8217;re sure to create distasteful art out of the highest quality graphics.</p>
<p>Composition is the art of directing the gaze of the eye around the scene. Break the flow of a composition by crowding elements together and leaving unnecessarily large gaps of space. Notice how the &#8220;health&#8221; text is huddled annoyingly close to the edge of the screen, even though there&#8217;s plenty of open space available for it. The bell pepper next to the tree nearly touches it, and creates a pocket of blue sky that traps the gaze of the eye as it moves across the scene. The sun is crowding the tree, with open space to the left of them, again creating compositional imbalance. With enough lack of practice, you will be able to create many more of these annoying layouts and pockets of space than I was able to in the mockup above.</p>
<p>The shapes and sizes of objects are another place to create disarray. Notice how the trunk of the tree is too thick for the size of the foliage implied by the blurry blotch. The roof of the house is slightly too large, making it look top-heavy and leaning to the right. The sun rays, in particular on the top and right, generate a subtle aura of awkwardness with their sloppy restricted shape. The bell peppers may seem unrealistically large compared to the rest of the scene, but giant versions of small objects are not so uncommon in games. A more jarring size imbalance is the fact that the tree with a trunk the width of a door is no taller than a one-story house. Furthermore, the doorway does not seem capable of accomodating the stick man&#8217;s head.</p>
<h2>Conclusion</h2>
<p>Armed with clashing colors, conflicting styles, and careless composition, you are now able to make the worst art indie games have ever seen. If you like, make your own ugly eyesore and post it in the comments!</p>
<p>Thanks for reading! Questions and feedback are welcome.</p>
<p>Also recommended: <a href="http://www.gamedev.net/reference/art/features/CoderGameArt/">Better Programmer Art</a>, the classic tutorial on actually making art.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2010/04/20/how-to-make-crappy-art/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Tutorial: Realistic Drawing</title>
		<link>http://www.ludumdare.com/compo/2010/04/18/tutorial-realistic-drawing/</link>
		<comments>http://www.ludumdare.com/compo/2010/04/18/tutorial-realistic-drawing/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 00:29:04 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=15602</guid>
		<description><![CDATA[[Reference photo] A lot of people think they can&#8217;t draw. The truth is, nearly everyone can, they just never learned how. There&#8217;s visual drawing and symbolic drawing. Drawings that are like photographs, look real, use shadows to suggest at 3Dness are visual drawings. Simplistic children&#8217;s drawings with stick figures and simple outlines are symbolic drawings. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left"><a href="http://www.ludumdare.com/compo/wp-content/uploads/2010/04/chairsketches.jpg"><img class="aligncenter size-large wp-image-15609" src="http://www.ludumdare.com/compo/wp-content/uploads/2010/04/chairsketches-550x241.jpg" alt="chairsketches" width="550" height="241" /></a></p>
<p style="text-align: center"><a href="http://www.ludumdare.com/compo/wp-content/uploads/2010/04/chairreference.jpg">[Reference photo]</a></p>
<p style="text-align: left">A lot of people think they can&#8217;t draw. The truth is, nearly everyone can, they just never learned how.</p>
<p style="text-align: left">There&#8217;s visual drawing and symbolic drawing. Drawings that are like photographs, look real, use shadows to suggest at 3Dness are visual drawings. Simplistic children&#8217;s drawings with stick figures and simple outlines are symbolic drawings. Visual drawings are the result of the artist&#8217;s mind focusing on outline, color, proportion, how the subject actually looks. Symbolic drawings are the result of focusing on words, meanings, and mental representations of a subject.</p>
<p style="text-align: left">To draw realistically, forget what it is you&#8217;re drawing, pay no regard to mental representations and ideas, and focus on the reality of the colors and contours of the subject. Visual drawing is like tracing what you&#8217;re seeing.</p>
<p style="text-align: left">Without turning your head, notice the dark and light areas of this image. If you like, get a piece of paper, relax, and quickly sketch where the dark areas are without paying any attention to what the image is about:<span id="more-15602"></span></p>
<p style="text-align: left"><a href="http://www.ludumdare.com/compo/wp-content/uploads/2010/04/upsidedown.jpg"><img class="aligncenter size-full wp-image-15603" src="http://www.ludumdare.com/compo/wp-content/uploads/2010/04/upsidedown.jpg" alt="upsidedown" width="470" height="582" /></a></p>
<p style="text-align: left">Drawing is about <em>seeing</em>. Things take on interesting qualities when you see them for what they are, instead of what they represent. Pay attention to the subtle curves, angles, proportions of lines. Notice that wrinkles are edges between a shadow and a highlight.  Notice that eyes and liquids are tiny, bright dots of light.  Notice that faces are extremely asymmetrical &#8211; light on one side, dark on the other. When you notice these things, you enter a meditative, relaxed, wordless state of mind. This is the artistic mindset.</p>
<p style="text-align: left">The artistic mindset is quite at odds with the programming mindset. Programming is largely about manipulating symbols and abstractions. It is no surprise that programmer art is so often like children&#8217;s drawings &#8211; simplistic and symbolic. This is not a bad thing, it just means the artist was paying attention to words and symbols in his/her thoughts, rather than colors and contours in his/her field of vision. The transition to the drawing mindset can take some time, 5-15 minutes. Above, you can see my progression into this mindset and the improving quality of my chair drawings. If you did the drawing exercise earlier you may have encountered some difficulty noticing the dark areas of the picture. If you keep drawing, this will become easier and easier. Avoid drawing and programming at the same time. Reading, talking, and thinking too much can knock you out of the drawing mindset.</p>
<p style="text-align: left">You can think of drawing like copying arrays of pixel values from your vision to the paper, but your vision is infinitely detailed and you have to make choices about which details to transfer and which ones to omit. This choice is your artistic style. More detail is not necessarily better. Know when to stop: watch your drawing, when it looks like the subject, it is complete.</p>
<p style="text-align: left">Realistic drawing from the imagination is more advanced than drawing from reference. It comes with practice. If you draw a lot, you will begin to notice patterns in the way that light shines on and interacts with objects, and learn techniques to draw various kinds of objects. Once you&#8217;ve had experience drawing from reference, you will be able to apply the skills to drawing from imagination. The other way to draw from imagination is to have a photographic memory that you can use as a reference.</p>
<p style="text-align: left">Exercises: 1) Draw the contours of your open palm. At first you may need to look back and forth between your hand and the paper to get the proportions and angles right before you draw a line. Use existing parts of the drawing and the edges of the paper as a size/angle reference. 2) Close your fist, palm up, and draw it by shading the dark areas. 3) Draw any object you like any way you like.</p>
<p style="text-align: left">Drawing is relaxing and a powerful way to train your mind and creativity. Nearly everyone can do it if they try.</p>
<p style="text-align: left">Questions and feedback are welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2010/04/18/tutorial-realistic-drawing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>road postmortem</title>
		<link>http://www.ludumdare.com/compo/2009/12/17/road-postmortem/</link>
		<comments>http://www.ludumdare.com/compo/2009/12/17/road-postmortem/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 06:29:24 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[LD #16 - Exploration - 2009]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=14494</guid>
		<description><![CDATA[since people might be wondering the &#8220;music&#8221; should be best appreciated as textural rather than melodic falling off is the end the fact that there&#8217;s no gameplay is intentional the only part I didn&#8217;t finish is windows on downtown skyscrapers the game does have meanings but none of them are related to each other I [...]]]></description>
			<content:encoded><![CDATA[<p>since people might be wondering</p>
<p>the &#8220;music&#8221; should be best appreciated as textural rather than melodic</p>
<p>falling off is the end</p>
<p>the fact that there&#8217;s no gameplay is intentional</p>
<p>the only part I didn&#8217;t finish is windows on downtown skyscrapers</p>
<p>the game does have meanings but none of them are related to each other</p>
<p>I get a kick out of the love/hate reviews</p>
<p>everything was drawn with a mouse</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2009/12/17/road-postmortem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>road</title>
		<link>http://www.ludumdare.com/compo/2009/12/13/road/</link>
		<comments>http://www.ludumdare.com/compo/2009/12/13/road/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 17:25:19 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[LD #16 - Exploration - 2009]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=13387</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/12/screen0.png"><img class="aligncenter size-medium wp-image-13388" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/12/screen0-300x225.png" alt="screen0" width="300" height="225" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2009/12/13/road/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>game makeing tutorial</title>
		<link>http://www.ludumdare.com/compo/2009/12/11/game-makeing-tutorial/</link>
		<comments>http://www.ludumdare.com/compo/2009/12/11/game-makeing-tutorial/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 01:59:41 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[LD #16 - Exploration - 2009]]></category>
		<category><![CDATA[LD - Misc]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=11474</guid>
		<description><![CDATA[oh no LD haha its crappy game season i hope the theme is snow because i know wher to get some LOL its in my back yard i made a tutorial to help people I hope you like it get an idea. like rolling snow balls make a clear simple goal from it. &#8220;make the [...]]]></description>
			<content:encoded><![CDATA[<p>oh no LD haha its crappy game season</p>
<p>i hope the theme is snow because i know wher to get some LOL its in my back yard</p>
<p>i made a tutorial to help people I hope you like it</p>
<ol>
<li>get an idea. like rolling snow balls</li>
<li>make a clear simple goal from it. &#8220;make the biggest snowball&#8221; isnt clear because you dont know biggest than what? i will use &#8220;roll up all the snow&#8221;. other good ones are: get to the exit without dieing, eat all the apples, kill the evil boss. if its not simple the game will be confusing</li>
<li>add obstacles to get in the way. if the snowball is too big it will be too hard to push so thats my obstacle (you can only push it downhill). it will be a puzzle game to rollu p all the snow by finding the right way to roll your balls LOL</li>
<li>make sure its not boring. if your game is about shoting enemys and theres no reason not to shoot them then its a crap game because &#8220;should I shoot him?&#8221; is a boring choice. good decisions make you give up something because fun is when you make risky decisions in your life. so the risk in my game is that rolling a ball makes it too big and then you lose the puzle</li>
<li>test it by makeing a simple version on your paper so you know its fun. delete all your boring ideas, you mihgt have a lot of them so dont fall in love with your turd game haha. look at my game that i made in like 10 seconds while i typed this (my camera string is not part of it tho):<a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/12/prototype.jpg"><img class="size-medium wp-image-11475 aligncenter" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/12/prototype-300x225.jpg" alt="prototype" width="300" height="225" /></a><br />
i also wrote down the rules which i edited until it was fun to play. can you get all the snow??? you move snowballs up down left or right, except against an arrow, unless they rolled into it. balls dont roll downhill automatically, you have to push them down. also its supposed to say &#8220;10 or more&#8221; snow. i already started that level it was kinda tricky</li>
<li>now you can add powerups very carefully but dont forget to make them intersting tradeofs and dont add them if they make the game boring. i could add a rule to remove one snow by melting it with pee but I havent played the game enough to know if it would be any more fun also its kinda gross</li>
</ol>
<p>so now you can make your game. but watch out for these highly important tips:</p>
<ul>
<li>design while youre sleepy at night or just got up because thats when your brain is the best at creativity and art</li>
<li>write down your ideas so you dont forget them when youre programming</li>
<li>if youre not sure about an idea, do not do it. simpler is better.</li>
<li><strong>finish the game in 24 hours</strong>, because it always takes twice as long as you expect</li>
</ul>
<p>good luck making your crap game, everybody! (plz vote this 5 stars if you liked it)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2009/12/11/game-makeing-tutorial/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Lasers</title>
		<link>http://www.ludumdare.com/compo/2009/09/09/lasers/</link>
		<comments>http://www.ludumdare.com/compo/2009/09/09/lasers/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 10:34:31 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[MiniLD #12]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=10621</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/09/Screenshot-Cave-Mushrooms-6.png"><img class="size-large wp-image-10622 aligncenter" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/09/Screenshot-Cave-Mushrooms-6-550x412.png" alt="lasers" width="550" height="412" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2009/09/09/lasers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cave Mushrooms Postmortem</title>
		<link>http://www.ludumdare.com/compo/2009/09/01/cave-mushrooms-postmortem/</link>
		<comments>http://www.ludumdare.com/compo/2009/09/01/cave-mushrooms-postmortem/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 20:02:11 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[LD #15 - Caverns - 2009]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=10256</guid>
		<description><![CDATA[When I saw &#8220;Caverns&#8221; I quickly thought MinerVGA and decided to make a sidescrolling game about mining for gold and facing dangers like cave-ins and enemies. I decided that wasn&#8217;t going to work for some reason, and went to bed to come up with more ideas. (I always go to bed when I need ideas [...]]]></description>
			<content:encoded><![CDATA[<p>When I saw &#8220;Caverns&#8221; I quickly thought MinerVGA and decided to make a sidescrolling game about mining for gold and facing dangers like cave-ins and enemies. I decided that wasn&#8217;t going to work for some reason, and went to bed to come up with more ideas. (I always go to bed when I need ideas because late evening and early morning is when the mind is most creative.) The second concept was a sidescroller about shooting at cave formations like stalactites/stalagmites and suspended bridges to make them physics down onto enemies. After thinking about it for a while on Saturday morning, I started to hate that idea. It seemed gimmicky and hard to pull off well.</p>
<p><img class="alignnone size-full wp-image-10261" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/09/Screenshot-sf17k-LD15-3.png" alt="sf17k_level_generator" width="361" height="374" /></p>
<p><em>Several random walks. The final level generation algorithm isn&#8217;t much different.</em><span id="more-10256"></span></p>
<p>I really wanted a dark cave sort of game where you&#8217;re sneaking around shooting evil demons, like a rougelike, so my third concept was a top-down procedural cave shooter with realistic line of sight, styled in cavey gray and brown. I liked this idea and began working on a level generator which was a simple random walk that varied the size and direction of a &#8220;brush&#8221; at each step. I then did the line of sight by projecting 3D walls towards the camera from the 2D ground, not planning on adding any 3D beyond that. The level generator worked surprisingly well, and I decided not to write code for making rooms like I planned, instead letting the path wind around enough that it made rooms by itself.</p>
<p><img class="alignnone size-large wp-image-10265" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/09/Screenshot-sf17k-LD15-4-550x564.png" alt="sf17k_topdownview" width="550" height="564" /></p>
<p><em>I thought the final game would essentially be this.</em></p>
<p>I felt demotivated all day for various reasons, so progress was slow. By Saturday night I had a square player who ran around in procedural caves. I half-heartedly went back to bed for more ideas. Then, with great disgust, I realized the game was turning out to be another generic shooter, and that there were probably at least five others like it in the competition. Plus, I knew I was bad at coming up with actual content, like interesting enemies and non-abstract graphics.</p>
<p>I needed to have something more to present. If I couldn&#8217;t think of a good gameplay mechanic, then the only other option was to dress up a mediocre one as much as I could with crazy colors and special effects (don&#8217;t underestimate this strategy). I looked at my 2.5D game and realized that simply pointing the camera forward would give me a first person shooter, something I considered but hand-waved as too difficult and unnecessary. I knew then what I needed to do.</p>
<p><img class="alignnone size-large wp-image-10272" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/09/Screenshot-sf17k-LD15-7-550x427.png" alt="sf17k_purple" width="550" height="427" /></p>
<p><em>Fog is trivially simple to implement in OpenGL, but is a beautiful effect.</em></p>
<p>I used a color value that roughly cycles through the rainbow as the basis for most of the visuals. I took care to avoid staying within the 0.0-1.0 clamp for color values. The camera needed to move a lot, so I made it shake, recoil, and bob. Making explosions that feel good was critical to the game, so I added flashes of light with every bullet and enemy death. The enemies started as the most obvious thing I could think of, bouncing diamonds, and didn&#8217;t change much after that. The walls and enemies had directional lighting. I turned enemy deaths into laser light shows.</p>
<p>Unfortunately, all of this took up a lot of time, and since I only started Sunday morning, the compo was already nearing its end. I thought about the last compo&#8217;s complaints that I didn&#8217;t have a proper menu screen in my game. I saw little need for one, but figured as long as I&#8217;m going for show I might as well try to make a &#8220;real&#8221; game. Thinking about whether I should learn how to use fonts in OpenGL, I decided to just hard-code a 3&#215;4 font. Much simpler. I slapped it on the start/pause/win screens, added a HUD, etc etc, and the entry was complete.</p>
<p><img class="alignnone size-large wp-image-10274" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/09/screenshot3-550x412.png" alt="sf17k_gameover" width="550" height="412" /></p>
<p><em>Complementary colors create a balanced, high-contrast color scheme.</em></p>
<p>My biggest regret is probably that I didn&#8217;t have time to make the enemies explode into actual debris. That would&#8217;ve finished off the visual effects, and is definitely going in the update. Sound and music would&#8217;ve made this the best game ever, but I hadn&#8217;t done much with sound before so I knew it was going to take too long to do it to my satisfaction. Better to leave it up to the imagination than to pollute the game with shoddy art.</p>
<p>Lessons I&#8217;m going to keep in mind for next compo: Everyone complains about polish, but polish takes at least 50% of development time, so make sure to finish the core game in the first 24 hours. This is difficult because good ideas can be a lengthy iterative process, so spend the day before the compo being well-rested and chillin to get into the creative state of mind.</p>
<p>I&#8217;m extremely happy with this entry because it&#8217;s a good demonstration of what I think big commercial games should be capable of. It&#8217;s retro and arcadey and exciting. This is what I want to play.</p>
<p><a href="http://www.ludumdare.com/compo/ludum-dare-15/?action=rate&amp;uid=757">Download</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2009/09/01/cave-mushrooms-postmortem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Messin With Procedurals</title>
		<link>http://www.ludumdare.com/compo/2009/08/29/messin-with-procedurals/</link>
		<comments>http://www.ludumdare.com/compo/2009/08/29/messin-with-procedurals/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 22:53:44 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[LD #15 - Caverns - 2009]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=8578</guid>
		<description><![CDATA[This uses my level generator code: Lightning (Video)]]></description>
			<content:encoded><![CDATA[<p>This uses my level generator code: <a href="http://www.youtube.com/watch?v=6Fq7V9TByFA">Lightning (Video)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2009/08/29/messin-with-procedurals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DoomDrive Postmortem</title>
		<link>http://www.ludumdare.com/compo/2009/04/21/doomdrive-postmortem/</link>
		<comments>http://www.ludumdare.com/compo/2009/04/21/doomdrive-postmortem/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 09:06:39 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[LD #14 - Advancing Wall of Doom - 2009]]></category>
		<category><![CDATA[postmortem]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=5964</guid>
		<description><![CDATA[Since I want to learn to write good blog posts, I would appreciate any feedback about which parts of the following post you found interesting. I tried to make it not dull. Hopefully you&#8217;ll learn a couple of new game design tricks or something. And if you&#8217;re not a programmer, just ignore any code, you [...]]]></description>
			<content:encoded><![CDATA[<p>Since I want to learn to write good blog posts, I would appreciate any feedback about which parts of the following post you found interesting. I tried to make it not dull. Hopefully you&#8217;ll learn a couple of new game design tricks or something. And if you&#8217;re not a programmer, just ignore any code, you won&#8217;t miss much.</p>
<p>The wiki mentioned that I should keep a log of some sort as I develop my game. I decided to write short entries in a txt file, then thought I would post it all when I was done. Now that my game is finished, I thought it would be a good idea to expand this short log into a full commentary-type thing of my Ludum Dare 14 experience. I will describe the development of <a title="DoomDrive" href="http://www.ludumdare.com/compo/2009/04/19/doomdrive/">DoomDrive</a> in detail in the hopes that someone will find this interesting. Maybe this will make up for not doing a timelapse. Note: In this post, all times are EST and entries from the original log.txt file are italicized.</p>
<h2>SF&#8217;s devlog</h2>
<p>The first real language I learned was C++, I started learning it at age 11 when my older brother gave me a book about it. I didn&#8217;t know anything about compilers then so I couldn&#8217;t even write a program until much later, but I absorbed the information with great interest anyway. I love C++ for its speed and the amount of control it gives me over my code. When choosing graphics and sound libraries to start learning I did a few comparisons and settled on OpenGL with GLFW helper tools, and OpenAL. I haven&#8217;t had too much trouble with these (though my OpenAL knowledge is limited) and they&#8217;re what I know best so they&#8217;re what I used to make DoomDrive.</p>
<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/model.jpg"><img class="alignnone size-medium wp-image-5965" style="middle;" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/model-300x243.jpg" alt="Car sketch" width="300" height="243" /></a></p>
<h3>Saturday morning (18apr09)</h3>
<p><em>2:40 &#8211; Forgot about LD for the past couple days, remembered it just now.</em><br />
The contest began at 23:00 on Friday, so it was 3:40 in. I had decided to start developing a game (unrelated to any contests) a week before. It was to be my very first serious game (a space shooter, heavily inspired by the rather obscure Hell Fighter). I&#8217;d done enough half-projects experimenting with the aspects of game design &#8211; code structure, physics, graphics, art, sound, game theory, etc &#8211; that I knew I had a good grip on making games&#8230; I just hadn&#8217;t done it yet (other than a GameMaker game I made at 14, and of course Tetris). My problem was I never felt like doing anything. <span id="more-5964"></span>But over the past month I&#8217;ve been working on my mindset and setting clear goals and all of that personal development nonsense, so I finally felt ready to begin coding my first game ever. I did. Then I found out about Ludum Dare from browsing java4k-related stuff, realized it was gonna be the next weekend, and wondered if I should try it. I voted on the first three rounds, still unsure if I would participate, then kinda forgot about LD as I concentrated on coding my space game. I remembered it at a convenient point in time, thought &#8220;now or never&#8221;, checked out the theme, and immediately started thinking up ideas. Well, it didn&#8217;t take long to come up with one&#8230;</p>
<p><em>3:05 &#8211; Idea: Drive a 3rd person 3D car around a forest and ramp off rocks to get away from the wall. I haven&#8217;t done much 3D in OpenGL. I will most certainly get stuck on bugs until it&#8217;s too late. Whatever.</em><br />
My conceptual vision also involved pools or rivers of water that you had to jump over by driving off cliffs. It just seemed fun in my head so I went with it. I was a bit pessimistic about it. It might have been because the idea of making a game in 48 hours sounded so absurd; I always thought a decent game would take at least a month to complete. More probably it was just a safeguard against being disappointed when I failed to live up to high expectations for myself.</p>
<p><em>5:05 &#8211; Should I sleep? I hand-coded a car model and not much else is working yet.</em><br />
My idea meant mostly procedural, randomly-generated content. I love procedural, but the car model would have to be designed by hand. I began drawing it out as soon as I picked out the idea, because that seemed like the most natural thing to do at the time. Since it was so simple, I just punched in the numbers in a const array, remembering to keep vertices of quads in clockwise order (I later found out counterclockwise is preferred). The model (and the game idea in general) was probably influenced by Twisted Metal 4, a PSX game I played a LOT as a kid. My favorite car was Orbital.</p>
<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/ddrive_ambient.png"><img class="alignnone size-medium wp-image-5967" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/00first-300x233.png" alt="Ambient lighting effects" width="300" height="233" /></a></p>
<p>Check out those ambient lighting effects. I chose these colors in GIMP. I thought the car should be a different color but the light gray sorta stuck.</p>
<p><em>5:30 &#8211; I&#8217;m making elementary math errors because I&#8217;m sleepy, so I will rest before continuing the game. Night.</em><br />
I think this was when I was trying to figure out OpenGL lighting. I dunno why I did the most graphical parts of the game first, probably because it was what I would have to look at for 48 hours, and it&#8217;s more fun to code a pleasant-looking game. I never programmed lighting before but I figured I only needed simple stuff so I could learn it in time. I seem to understand complex ideas pretty quickly, at the expense of poor memory of concrete information, like names of functions, or the fact that Ludum Dare starts today. I think it helped that I slept twice during the compo, so that I worked for what felt like three days instead of just two. The best ideas happen in bed, and I like to think my brain is subconsciously thinking about things while I sleep.</p>
<h3>Saturday</h3>
<p><em>13:20 &#8211; I AM UP! I&#8217;ve been coding in my dreams all night long, let&#8217;s see if that helps me any.</em><br />
That night I had the odd experience of watching a half-dream where a programming problem appeared as code before my eyes, and I solved it without consciously thinking about it. I think it was a premonition.</p>
<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/01lighting.png"><img class="alignnone size-medium wp-image-5968" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/01lighting-300x233.png" alt="Incorrect lighting" width="300" height="233" /></a></p>
<p>This seems incorrect somehow.</p>
<p><em>16:20 &#8211; Stuck on a dumb lighting problem like I expected to. Losing motivation. I&#8217;ll just ignore the problem for now.</em><br />
<em>17:05 &#8211; I couldn&#8217;t ignore it. The problem is lighting needs normals that I haven&#8217;t worked with much and mine are kinda wonky.</em><br />
I made the mistake of trusting some lighting tutorial example code that seemed wrong at first. Wasted too much time on this and felt dumb afterward. I never did get directional lighting to work, which would have made sense since I wanted sunlight. I just did a point light that&#8217;s a fixed position from the camera. It looks about right. I didn&#8217;t even bother with specular or smooth shading, I knew I wanted the simple flat look when I first thought up the idea.</p>
<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/03xmas.png"><img class="alignnone size-medium wp-image-5969" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/03xmas-300x233.png" alt="XYZ arrows are colorful" width="300" height="233" /></a></p>
<p>MERRY XMAS! Note: This screenshot does not demonstrate proper debugging procedure, don&#8217;t try to understand it.</p>
<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/05hills.png"><img class="alignnone size-medium wp-image-5970" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/05hills-300x233.png" alt="Foggy hills" width="300" height="233" /></a></p>
<p>Yeah fog! The car just hovers so far. I made a hazy sun by rendering the inside of a huge cone a fixed position from the camera (like a skybox) with the center almost white and the edges sky blue.</p>
<p><em>17:50 &#8211; FIXED IT! Now on to making game mechanics.</em><br />
I believe I was messing with the car speed and turning and friction around this time. I obsessively tweaked these throughout development, up until the very end. I&#8217;m glad I did because the controls contribute a lot of the feel of an action game, though I still think it could be made more fun. You&#8217;ll find that I left in the code to tweak game constants if you press a number key or insert/del/home/end/pageup/pagedown and look at the stdout. I did something like &#8220;float SPEED=tweakvars[1];&#8221; in the game loop, ran the game and adjusted the value with those keys, and when I settled on a value I changed tweakvars[] to initialize accordingly. It&#8217;s a primitive system but it did the job.</p>
<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/06imapled.png"><img class="alignnone size-medium wp-image-5971" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/06imapled-300x233.png" alt="Impaled car" width="300" height="233" /></a></p>
<p>The entirety of my collision detection code:<br />
car.z&lt;groundHeight(car.x,car.y)</p>
<p><em>19:10 &#8211; Well, at least it looks fancy. I&#8217;m gonna eat dinner.</em><br />
<em>21:20 &#8211; Time to figure out perlin noise terrain, then I will have awesome screenshots. My morale is back up and I&#8217;m doing way better than I expected, although I don&#8217;t think my forest is gonna have any rocks or trees. It&#8217;ll still be fun to drive around hills.</em><br />
By this time I had a fairly clear vision of where my game was going.</p>
<p><em>21:40 &#8211; I&#8217;m humming tunes. I hope I don&#8217;t go insane from non-stop coding. I will listen to noise music for a while. I don&#8217;t know if doing that has any mental effects that are beneficial to programming games, but noise usually helps me clear my head.</em><br />
Also tried trance. It seems to help at first, but becomes a distraction once I&#8217;m in the zone. I took a reasonable amount of breaks, but other than that I had been coding nonstop that day AND the day before (my space game), so I was already getting worn out.</p>
<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/scratch.jpg"><img class="alignnone size-medium wp-image-5972" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/scratch-300x242.jpg" alt="Scratch work" width="300" height="242" /></a></p>
<p>Here you can see me trying to figure out vertex orders and terrain slope calculations. This is just scratch work so it&#8217;s probably wrong. I only write in cursive so people can&#8217;t read it at a glance (it&#8217;s actually less efficient than print).</p>
<p><em>22:35 &#8211; OH SEGFAULTS! My goal is to finish the terrain and the car &#8220;physics&#8221; before I go to bed so I can add the actual wall and maybe a little sound tomorrow.</em><br />
Spoiler: The car is actually a single point. It does physics by controlling z height based on things like slope of the ground at x,y &#8211; the game is essentially 2D. The terrain is an array of z values. The car is either on the ground or flying. When not flying, the point follows the slope of the ground. When it crosses an edge between triangles, it checks the angle at which it hit, so that if the ground is curving up the car slows down, and if the ground is curving down the car ramps off into the air. However, there&#8217;s a problem in that this angle checking doesn&#8217;t happen when you land (only when you drive across an edge), which means if you&#8217;re flying and you land on the very tip of a hill, your forward velocity will not be updated to account for it, and you will get pushed up the slope way too fast, causing you to fly really far. This is a gamebreaker that I intend to fix in a postcompo version. (Note: The physics are actually an inaccurate fudge I came up with by just guessing at how the car should behave, and adjusting it to be playable. The postcompo version will be much better.)</p>
<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/08ridge.png"><img class="alignnone size-medium wp-image-5973" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/08ridge-300x233.png" alt="A beautiful view" width="300" height="233" /></a></p>
<p>The game doesn&#8217;t change much visually from this point on. Though I wanted to tweak the colors at the end, I didn&#8217;t have time and decided that was just polish for the postcompo version. Blue ambient with orange diffuse light worked pretty good. I noticed from using Hammer (the HalfLife 2 map editor) that shadows should be rendered blue (not gray) when sunlight is yellow &#8211; complementary colors.</p>
<p><em>00:05 &#8211; EPIC SCREENSHOTS! Just the car physics left now.</em><br />
You can see that the procedural terrain gets generated as you drive. It&#8217;s stored in a 2D circular buffer, which was a little confusing to figure out how to do, but is very efficient (a single array on the stack). Random hills were accomplished with perlin noise. I made some with varying roughness factor (using perlin noise to vary it) roughly in the range 0.0 to 1.0, raised it to the fourth power to flatten out low areas (fourth power is called &#8220;quatric&#8221;), and of course scaled it to a proper height. The noise function returns a random value seeded by x and y position, so the infinite terrain stays the same every time you play. I figured if it changed all the time people wouldn&#8217;t be able to make maps of the best routes. No, no one would be that dedicated. I hope.</p>
<p><em>01:20 &#8211; But I mess with the camera instead. Getting sleepy.</em><br />
The camera was another thing I tweaked all throughout development. My photographer side definitely had a hand in this. But again, I&#8217;m glad I worked so hard on it, camera problems are frustrating and awkward for the player. What bothers me is that you never get to see the awesome epic wall of fire in all its glory until you die, unless you turn around like I did for my official screenshot, and there&#8217;s no reason to do that. I considered adding a rearview, but what&#8217;s the point if it&#8217;s only there for looks? Maybe I&#8217;ll add an attract mode that shows the wall from a better angle.</p>
<p><em>02:10 &#8211; Decided on &#8220;Doom Drive&#8221; for the name. Physics will have to wait til tomorrow. I am falling asleep. Night.</em><br />
<em>04:10 &#8211; Ate, washed, went to bed, couldn&#8217;t sleep, but got some ideas. I always get ideas in bed. Ideas: I will reward airtime with a proportional amount of boost. The terrain will get more and more intense over distance, as a difficulty curve.</em><br />
I knew I was going to bed way too early, but I was so tired of coding that I thought I&#8217;d fall asleep right away. I&#8217;m glad I got the boost idea because until this point the game was about finding the flattest (most efficient) route, and I wanted it to be about RAD AIR!</p>
<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/12whyamifloating.png"><img class="alignnone size-medium wp-image-5974" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/12whyamifloating-300x233.png" alt="Why am I floating" width="300" height="233" /></a></p>
<p>Why am I floating</p>
<p><em>05:05 &#8211; My car is floating aughhhhh oh no</em><br />
<em>05:25 &#8211; YEAH GRAVITY!</em><br />
In my exhaustion my log entries have degenerated into basic feelings about what was happening at the time.</p>
<p><em>06:30 &#8211; God, there are so many bugs with driving backwards and stuff. Hmm, 16 hours left. Going to bed for real now. Night.</em><br />
If you&#8217;re gonna use something like negative velocity values for driving backward, make sure to REMEMBER that when you do calculations. It can get frustrating to get stuck on a bug where your car falls through the ground when you drive backward. Humorously, before I added flying, gravity, and fixed the backward movement, the game played a lot like Big Rigs.</p>
<h3>Sunday</h3>
<p><em>14:40 &#8211; Slept nicely. Final stretch, here we go.</em></p>
<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/wallconcept.jpg"><img class="alignnone size-medium wp-image-5975" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/wallconcept-247x300.jpg" alt="Concept art" width="247" height="300" /></a></p>
<p>Worst concept art I&#8217;ve ever drawn. The music was actually gonna be just a repetitive trance beat, but making that sound good procedurally would take way too long for me, as simple as it is. I&#8217;m really sad I didn&#8217;t get to adding scoring, at least a timer, but I thought it would require displaying fonts, which I didn&#8217;t have time to figure out when I realized I had to.</p>
<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/14burninated.png"><img class="alignnone size-medium wp-image-5976" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/14burninated-300x233.png" alt="" width="300" height="233" /></a></p>
<p>Burninated! This is the first firewall (looked less refresh linesy in-game). Here the fire looks like crap because it&#8217;s a lit material instead of a plain color. Fire isn&#8217;t supposed to have shadows on it.</p>
<p><em>16:55 &#8211; Finished the firewall and boost mechanic. If I add a HUD and tweak the wall speed I will have a working entry.</em><br />
<em>19:35 &#8211; Woo, it&#8217;s playable! I will add boost effect and cam shake for fun, then submit.</em><br />
DoomDrive has three kinds of fire: the enormous wall of destruction, the boost flames coming out the back of the car, and the car burning as it tumbles into space when you lose. They&#8217;re all just triangles with vertices that are randomized each frame. The boost flames are each a single triangle, but if you ask me they make a pretty effective flame. I like my burning car flames way better than a lot of the graphical fire I see in commercial first person shooters like HalfLife 2. Then again, I was never much into realism. Cam shake is the best thing ever. I knew the wall of fire wasn&#8217;t giving off quite the feeling of horrible doom and despair I wanted it to when it caught up with you, so I came up with cam shake to fix that. I think it worked.</p>
<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/16ohgod.png"><img class="alignnone size-medium wp-image-5977" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/16ohgod-300x233.png" alt="Second firewall" width="300" height="233" /></a></p>
<p>These fire colors were a little too cartoony. I like everything to be desaturated and sad.</p>
<p><em>21:45 &#8211; 1 hour 15 minutes left and I am as finished as I will be. The game now features driving a car in 3D around rough procedural terrain with a wall of fire chasing you, a boost meter that increases with air time, with fog and a procedural noise algorithm I developed a while ago for sound effects. It&#8217;s almost over&#8230;just gotta see if it compiles on Windows. I&#8217;m sick of coding, but I&#8217;m really happy with what turned out.</em><br />
Oh yes, the audio. I&#8217;m kinda into noise music, and I&#8217;m totally into procedural generation, so one time I made a procedural noise synthesizer that could be controlled by moving the mouse around a square window, the x and y values mapped to the two controls. It seemed obvious to reuse some of that code for sound effects for intense fire. <a href="http://hobofort.com/files/seashore.ogg">Ogg audio</a> demonstrating the noise synth.</p>
<p><em>22:45 &#8211; 15 minutes left. Submitted linux version. Gonna go try to compile on Windows. Wish me luck.</em><br />
I ended up working on final touches for an hour. At this point I was in a bit of a code trance, completely exhausted from the past two days and starting to get apathetic.</p>
<p><em>00:15 &#8211; Last entry: One hour fifteen minutes past the deadline, Windows version compiled. Though it probably has crappy sound. Whatever. I&#8217;m done.</em><br />
It only had crappy sound on my crappy windows box and apparently worked fine elsewhere, besides being lagged due to the way I tried to fix a problem with audio skipping in between buffers. Thanks to DrPetter for helping me get the right OpenAL libs since I couldn&#8217;t download the SDK on dial up.</p>
<p>END OF LOG</p>
<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/normals6.png"><img class="alignnone size-medium wp-image-5978" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/normals6-300x233.png" alt="Wireframe" width="300" height="233" /></a></p>
<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/02holes.png"><img class="alignnone size-medium wp-image-5979" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/02holes-300x233.png" alt="Holes in my car" width="300" height="233" /></a></p>
<p>Some of my vertices turned out to be in the wrong order after all. Shoutouts to my good friend in Devon, without whom I probably wouldn&#8217;t have figured this out in time.</p>
<h2>All in all</h2>
<p>DoomDrive flew in the face of my own expectations for it. I&#8217;m happy. However, I&#8217;m friggin sick of coding, so I don&#8217;t know how long it&#8217;ll take before I recover enough to do a postcompo version. I want to make the game feel complete, though. I got this far, why not finish it off?</p>
<p>Ludum Dare has been a good lesson in getting the most bang for the buck. Things like fog effect, random triangle fire, cam shaking, are all very simple to implement, but add a lot to the game. Also, I learned you don&#8217;t need a full blown physics engine to have physics, as my single-comparison collision detection demonstrates. I never thought it was possible to make such great games in such a short time. This is definitely a motivating realization.</p>
<p><a title="DoomDrive" href="http://www.ludumdare.com/compo/2009/04/19/doomdrive/">DoomDrive</a> is the first serious game I&#8217;ve ever made, and I think it&#8217;s safe to say I&#8217;m gonna be doing more action games in the future, hopefully for a living.</p>
<p>It&#8217;s been beautiful, guys. On to voting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2009/04/21/doomdrive-postmortem/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://hobofort.com/files/seashore.ogg" length="894577" type="audio/ogg" />
		</item>
		<item>
		<title>DoomDrive</title>
		<link>http://www.ludumdare.com/compo/2009/04/19/doomdrive/</link>
		<comments>http://www.ludumdare.com/compo/2009/04/19/doomdrive/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 02:37:15 +0000</pubDate>
		<dc:creator>sf17k</dc:creator>
				<category><![CDATA[LD #14 - Advancing Wall of Doom - 2009]]></category>
		<category><![CDATA[final]]></category>

		<guid isPermaLink="false">http://www.ludumdare.com/compo/?p=5761</guid>
		<description><![CDATA[Mama always told me to keep a safe distance between myself and the advancing wall of doom. Navigate treacherous terrain while a giant wall of fire chases you at unreasonable speed! Increase your boost meter by getting rad airtime! And&#8230;that&#8217;s about it. All content including audio is procedurally generated, except the car model, which I [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/screenshot8.png"><img class="alignnone size-medium wp-image-5762" src="http://www.ludumdare.com/compo/wp-content/uploads/2009/04/screenshot8-300x225.png" alt="DoomDrive" width="300" height="225" /></a></p>
<blockquote><p><em>Mama always told me to keep a safe distance between myself and the advancing wall of doom.</em></p></blockquote>
<p>Navigate treacherous terrain while a giant wall of fire chases you at unreasonable speed! Increase your boost meter by getting rad airtime! And&#8230;that&#8217;s about it. All content including audio is procedurally generated, except the car model, which I punched in by hand. This means the filesize is small; the linux binary is 66 kB. Note: It seems I forgot to compile a linux version after my last change&#8211;putting in code to restart the game when you die and press space/shift. Also this doesn&#8217;t work like I intended on windows (restarts immediately if you&#8217;re boosting when the wall hits you). That and the fact that there&#8217;s no scoring are the biggest problems. I&#8217;ll do a postcompo version with some more polish later.</p>
<p>Controls: up, down, left, right to move. shift/space to boost.</p>
<p>THIS GAME HAS SOUND.</p>
<p>Official entry: <a href="http://hobofort.com/files/sf17k_LD14_DoomDrive.zip">Download 256kB (win32,linux)</a></p>
<p>DOWNLOAD THIS: <a href="http://hobofort.com/files/sf17k_LD14_DoomDrivedll.zip">Download 491k with DLLs (win32)</a> if you&#8217;re not sure you have OpenAL. This is an update that&#8217;s way past the deadline, but it&#8217;s the same as above except with DLL files for audio.</p>
<p>Check out the <a title="DoomDrive postmortem" href="http://www.ludumdare.com/compo/2009/04/21/doomdrive-postmortem/">postmortem</a> for commentated journal and dev screenshots.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ludumdare.com/compo/2009/04/19/doomdrive/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

