<?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>usc interactive media division &#187; 590</title>
	<atom:link href="http://interactive.usc.edu/tag/590/feed/" rel="self" type="application/rss+xml" />
	<link>http://interactive.usc.edu</link>
	<description></description>
	<lastBuildDate>Thu, 24 May 2012 16:43:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Twitch Games and World Building (but not together&#8230;yet)</title>
		<link>http://interactive.usc.edu/2006/01/23/twitch-games-and-world-building-but-not-together-yet/</link>
		<comments>http://interactive.usc.edu/2006/01/23/twitch-games-and-world-building-but-not-together-yet/#comments</comments>
		<pubDate>Mon, 23 Jan 2006 11:25:07 +0000</pubDate>
		<dc:creator>Todd Furmanski</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[590]]></category>

		<guid isPermaLink="false">http://interactive2.usc.edu/blog/?p=4921</guid>
		<description><![CDATA[As usual, Here Be Dragons can be grabbed here. I’ve been developing and filling in a number of gaps in...<br /><a class="more-link" href="http://interactive.usc.edu/2006/01/23/twitch-games-and-world-building-but-not-together-yet/">Read More</a>]]></description>
			<content:encoded><![CDATA[<p>As usual, <strong>Here Be Dragons</strong> can be grabbed <a href="http://interactive.usc.edu/membersmedia/todd/archives/Here_Be_Dragons.zip">here</a>.</p>
<p>I’ve been developing and filling in a number of gaps in my abilities, regarding procedural methods and other things.  Now that I’ve finished the major milestone in my day job I have a little time to post what I’ve been doing aside from what I’m <em>supposed</em> to be doing.</p>
<p><strong></p>
<p>On a few new games:</strong></p>
<p>I&#8217;ve been working on a few smaller projects, for fun as well as a much needed chance to polish something for general use.  The 80%/20% (the last 20% of a project takes 80% of the total time) is very true, and I&#8217;ve managed to avoid it for a while, so doing these smaller projects may help get me back into project completion mode.</p>
<p>The first is a shooter where you don&#8217;t shoot.  Instead you have a reflector (the blue circle in front of you, the equally blue critter):</p>
<p><img alt="unShooter1.jpg" src="http://interactive.usc.edu/membersmedia/todd/archives/unShooter1.jpg" width="397" height="298" /></p>
<p>The reflector takes any enemy shot and redirects it&#8230;.</p>
<p><img alt="unShooter2.jpg" src="http://interactive.usc.edu/membersmedia/todd/archives/unShooter2.jpg" width="397" height="298" /></p>
<p>&#8230;hopefully back in their face.</p>
<p><img alt="unShooter3.jpg" src="http://interactive.usc.edu/membersmedia/todd/archives/unShooter3.jpg" width="397" height="298" /></p>
<p>This can make for some heated moments, as well as an interesting turnabout.  &#8220;Bullet hells&#8221; can turn to your advantage.  Being in the right place at the right time can devastate wave after wave of baddie.</p>
<p><img alt="unShooter4.jpg" src="http://interactive.usc.edu/membersmedia/todd/archives/unShooter4.jpg" width="397" height="298" /></p>
<p>Have the infrastructure for levels, bosses, and bullet patterns&#8230;classically, assets are the big time sink.  I&#8217;ve been getting back up to speed on pixel art, and balancing random level generation.</p>
<p>Another game I&#8217;ve been tinkering with isn&#8217;t as far along, but I do have a level system and minor agent behavior-Codenamed &#8220;Efpeyess&#8221;:</p>
<p><img alt="fps1.jpg" src="http://interactive.usc.edu/membersmedia/todd/archives/fps1.jpg" width="400" height="300" /></p>
<p><img alt="fps2.jpg" src="http://interactive.usc.edu/membersmedia/todd/archives/fps2.jpg" width="400" height="300" /></p>
<p>Actually, I may use this code for a few ideas I have, a first-person game, maybe a few third-person ones as well.</p>
<p>Both of these games have a flexible enough method of level and critter handling that any variety of procedural methods could be used to generate worlds.  How interesting they&#8217;d be depends entirely on how you go about determining the algorithims.</p>
<p>One idea I&#8217;ve been working on is multiprocedure (or metaprocedure, if you feel pretentious).  The issue: People are excellent pattern recognizers.  If you use only a single algorithm to build whatever you’re building, people will catch on quickly.  A series of terrain maps that only use <a href="http://mrl.nyu.edu/~perlin/">Perlin</a> noise will all look basically the same.  A series of mazes generated using the same math will blur together in the spectator’s eye.  These algorithims are useful (in Perlin&#8217;s case practically necessary), but probably shouldn&#8217;t be used exclusively.</p>
<p>When you want novel content, you do NOT want them all to blur to a vague grey.  One problem is that random numbers are designed to do exactly this.  While you might want go statistical spreads when calling rand(), statistical aberration by definition makes something unique and novel.</p>
<p>One way to get around the “grey goo” is to mix and match different emergent and chaotic algorithms.  The way you mix and match these algorithms, as well as how much you mix them can itself be determined by some chaotic element.  One might mix the Perlin noise with <a href="http://www.voronoi.com/">Voronoi</a> cells, to get labyrinth-like canyons in the middle of high mountain ranges.</p>
<p>One trick is to not use every method at your disposal every time.  Things are usually awesome because they are rare-or at least not experienced repetitiously.  A galaxy with planets that have an equal amount of every type of terrain will get dull fast.  Some might be almost entirely mountains, others largely ocean (I’m posting this from such a planet right now), others might a plains punctuated by volcanic badlands-and few might have a healthy mix of various biomes.</p>
<p>For agents and architecture, the idea is the same.  You should have enough coherency to be recognizable, but enough variance to be worth recognition.</p>
<p>Some of this I’ve been developing as I’ve been playing with terrain generation-I’ll probably go into a step by step process in a later post.  For now, I’ll just post some of the results.</p>
<p><strong>On Terrain:</strong></p>
<p><img alt="TerrainJan.jpg" src="http://interactive.usc.edu/membersmedia/todd/archives/TerrainJan.jpg" width="512" height="512" /></p>
<p>I love terrain mapping more than any healthy person probably should.  I&#8217;m currently experimenting with random terrain generation (and navigation) using a combination of Photoshop, Processing, and C++.  The pipeline of experimentation is informed by my theory:</p>
<p>a) If I can do it in Photoshop I can do it in Processing, but dynamically.</p>
<p>b) If I can do it in Processing I can do it in C++, but faster.</p>
<p>It can go backwards when I want pretty pictures to show people (or print out):</p>
<p>The map created was tested in Photoshop, but I did not do anything I don’t know how to do, at least in principle, in Processing or C++.  The shading is done using a Processing applet I did, which simply compares the height of the pixel to the upper left and shades accordingly.  I use this trick for shading the 3D mesh as well.  I found the algorithm online at <a href="http://www.gamedev.net/reference/articles/article1436.asp">GameDev.net</a>, a lot of good return on minimal coding trickery.</p>
<p>Right now I’m mainly doing the simplistic (far, far too simplistic) height->color, although I have been experimenting with a “climate filter”, that tries to make more desert at the equator and more snow at the poles.  It’s a combination of a simple gradient and Perlin noise.  I added a subtle amount of it here, you might notice some snowy patches that aren’t on mountains, and some sandy regions inland.  Like I said, it’s subtle, but when you try to do things with at least a touch of realism, subtlety is everything.  If I do a more in depth post on the process I’ll show you some before/after pics.</p>
<p>By the way, the color isn’t bad, it’s iconic.  I’ll be doing some better color schemes once I’m happier with the terrain-generating math.</p>
<p>One might see a few Voronoi-like canyons to the north and to the west on the map-these were blended in to the Perlin noise-based terrain.  In flythroughs, they are by far the most interesting and recognizable places to go to on the map.  This is, of course, relative.  If the whole map had been largely Voronoi cells punctuated by Perlin mountains, the mountains would have been the major draw point for visitors.</p>
<p>At this stage I can funnel it into whatever build of Bushido I&#8217;m currently turning to spaghetti:</p>
<p><img alt="MtnShot.jpg" src="http://interactive.usc.edu/membersmedia/todd/archives/MtnShot.jpg" width="385" height="299" /></p>
<p>The next step, of course, is to update my work on the critters and cities that will be populating such wilderness.</p>
]]></content:encoded>
			<wfw:commentRss>http://interactive.usc.edu/2006/01/23/twitch-games-and-world-building-but-not-together-yet/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

