<?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>Full of BS &#187; Southgate</title>
	<atom:link href="http://fullof.bs/category/gaming/my-games/southgate/feed/" rel="self" type="application/rss+xml" />
	<link>http://fullof.bs</link>
	<description>He just never stops talking</description>
	<lastBuildDate>Wed, 21 Mar 2012 05:14:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>On Shadowcasting</title>
		<link>http://fullof.bs/on-shadowcasting/</link>
		<comments>http://fullof.bs/on-shadowcasting/#comments</comments>
		<pubDate>Sun, 02 Apr 2006 06:09:18 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Game Algorithms]]></category>
		<category><![CDATA[Game Design]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Nintendo DS]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Southgate]]></category>

		<guid isPermaLink="false">http://blog.sc.tri-bit.com/?p=83</guid>
		<description><![CDATA[I haven&#8217;t written a roguelike in a long, long time. Last time, I used the traditional light-per-room model for lighting from the original Rogue; these days, I don&#8217;t find that at all satisfactory. It&#8217;s time for a proper shadowcaster. And, to be plain, I&#8217;d forgotten how much of a hassle a shadowcaster actually is. I [...]]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t written a roguelike in a long, long time.  Last time, I used the traditional light-per-room model for lighting from the original Rogue; these days, I don&#8217;t find that at all satisfactory.  It&#8217;s time for a proper shadowcaster.<br />
<span id="more-107"></span></p>
<p>And, to be plain, I&#8217;d forgotten how much of a hassle a shadowcaster actually is.  I went to dig up maybe some example code, but the good answers were few and far between; there are several each at various roguelike sites like <a title="Dungeondweller's development section" href="http://roguelikedevelopment.org/development/">Dungeondweller</a>, but the articles are written to widely varying levels of quality, most without source, and with no apparent method to compare between methods.  Most of them an experienced programmer can ignore out of hand, but one of the algorithms up there is just repeated line of sight, which is dead slow.  It&#8217;s enough to make a man think about writing another <a title="My empty-ish tutorial page" href="http://sc.tri-bit.com/Category:Tutorials">tutorial</a>&#8230;</p>
<p>Luckily, I know what&#8217;s up, so I&#8217;m going to implement recursive shadowcasting.  There&#8217;s a not-half-bad implementation in this tutorial by <a title="Gordon Lipford's LOS tutorial" href="http://sc.tri-bit.com/Computing_LOS_for_Large_Areas">Gordon Lipford</a>, but in several places he sacrifices efficiency or power for readability.  Right thing to do for a tutorial.  Wrong thing to do for production code.  (He also has several unexplained actions here and there, writes pseudocode where interactions aren&#8217;t clear, and requires the reader to reimplement several structures from explanations, but whatever.)  At any rate, his method is efficient, flexible, and less painful to implement than some of its competition, so I&#8217;m running with it.</p>
<p>One of the very cool things about Lipford&#8217;s method is that it&#8217;s arc-angle based.  As a result, objects don&#8217;t actually have to fit a tile; rays are radiated.  That means that anti-aliasing one&#8217;s shadows is in fact realistic; I&#8217;m halfway done with that in my shadowcaster now.  Other things could be added, but I&#8217;ve decided to skip them for now.  One of the <strong>really</strong> neat things about this modified method, though, which uprises from the line of sight algorithm is that I have accurate overhead cover rules and a good set of premise data to work in the notion of &#8220;perception.&#8221;</p>
<p>Simulating perception accurately is traditionally a problem for AI behavior, but in a Roguelike it&#8217;s a bigger problem than usual.  Because roguelikes offer such complex tactical situations, and because speed in varying environments is such an issue, players often want to &#8220;lose&#8221; the predators by hiding.  Lots of the common methods for handling roguelike behavior involve simple distance calculations, meaning monsters can semi-effectively follow you through visual obstacles which otherwise should confuse them, such as walls.  Sometimes this is of great tactical advantage to the player; s/he can use slight speed or distance advantages to get around a wall with a u-turn, then rely on the monster keeping the nearest mathematical distance and walk the other way down the wall, acquiring some safety.</p>
<p>Now, I&#8217;m all for cheating on the player&#8217;s behalf; one of these days I&#8217;ll blog about it at length.  However, there&#8217;s cheating and there&#8217;s cheating.  Some of it keeps little nagging things from ruining gameplay; that&#8217;s good cheating.  Being lax on player bullet collision, and being overstrict on player personal collision, means that the player &#8220;just barely gets by&#8221; when oftentimes they shouldn&#8217;t, and &#8220;just barely makes the shot&#8221; when oftentimes they shouldn&#8217;t.  You can just crank the game difficulty to compensate, and it leads to a player never feeling like they were ripped off or cheated.  The Japanese game company <a title="Treasure" href="http://www.treasure-inc.co.jp/index01.html">Treasure</a> are absolute masters of this careful balance (sorry, AFAIK they don&#8217;t have an English-language page.  Just pretend you can read it.)  But, there&#8217;s another kind of cheating that game programmers do.  Actually, there are several others; I&#8217;m gonna skip stuff like giving opponent AI information it shouldn&#8217;t have to keep it competitive.  Right now, what I&#8217;m going to talk about is sacrificing realism for computation time.</p>
<p>There are several problems with cheating to save computation time.  Some of them are reconcilable; others aren&#8217;t.  Generally the least controllable issue here is that oftentimes you just can&#8217;t afford the raw horsepower to do what you want to do correctly.  First person shooters in the 286/386 era are a prime example; Wolfenstein and DooM got by just fine with blitting, but given modern standards they look positively silly.  The important bit here, though, is that Wolfenstein and DooM&#8217;s approximations were good enough™ they did not adversely impact the game, and until they were made outdated by the horsepower required for a more accurate solution, the impositions their techniques created generally didn&#8217;t impact the game.  (There are a few exceptions, notably the 2d+height map preventing truly 3d maps, but that was more of an engine issue than an issue of approach, so whatever.)</p>
<p>Horsepower aside, though, there are also issues of sloth or ignorance.  In fact, field of view algorithms provide an excellent example even compounded above the previous example.  Gee, can you guess what I&#8217;m gonna start going on about?</p>
<p>The fact of the matter is that on a complex 2d planar map, even implemented well, field of vision code is moderately expensive.  <a title="Hansjörg Malthaner" href="http://www.simugraph.com/en/aboutme.html">Hansjörg  Malthaner</a> brags, and rightfully so, that his <a title="FOV in H-World" href="http://h-world.simugraph.com/docs/fov.html">field of view implementation</a> can crank out a 59&#215;59 area in under 2ms on a 400mHz k6/2.  Whereas that may sound like hopelessly antiquated equipment by today&#8217;s standards, please remember that that&#8217;s talking about the field of view for just one creature; even dealing with a machine that can push 16x what that does, when you&#8217;re dealing with (say) 256 creatures &#8211; and that&#8217;s not terribly unlikely in a Roguelike at deeper levels &#8211; you&#8217;re still looking at around 32ms, just to figure out what monsters can see what.  That&#8217;s before you consider anything like, say, what the monsters&#8217; responses would be.  And, to put that in perspective, we&#8217;re talking about a full two frames at 60fps (the rate at which most console hardware runs) &#8211; that&#8217;s slow enough to see a stutter, even on modern hardware.</p>
<p>And &#8211; <em>I cannot emphasize this enough</em> &#8211; Hansjörg&#8217;s implementation is <u>good</u>.  This is not the upshot of some naïve bumbling.  This is what kind of speeds one should expect.</p>
<p>Now, granted, this is a fairly severe situation.  For one, 59&#215;59 implies sight radius 29, which is big by anyone&#8217;s standards, and since we&#8217;re talking about area which is exponential and a workload tied to a surface unit instead of an edge, and since that workload is also exponential, then having an area that big is pretty serious.  Also, games other than roguelikes don&#8217;t usually have low to middling hundreds of active, thinking opponents at a time (well, inasfar as roguelike creatures think, really, but that&#8217;s beside the point.)  But, as we all know, I&#8217;m working on the Nintendo DS, which is a 67mHz ARM9; when we&#8217;re there, we&#8217;re just not talking about cutting edge computational power, and therefore speed seriously matters to me.  Granted that the field of view in my game is much smaller, it&#8217;s still a pretty big issue.</p>
<p>This is where the kung-fu comes in.  See, there are other repurcussions to choosing a field of vision mechanism other than speed.  Granted speed is what we&#8217;re interested in here, but there are other things to be considered.  That is, for example, why I&#8217;m not implementing the <a title="It's honestly kinda slick, despite being kinda sick" href="http://jwelton.v-space.org/discuss/LOSSpaghetti.html">giant goto map generator</a> of Jesse Welton&#8217;s.  Instead, what I&#8217;m doing is going to give me view regions for specific tiles; that information will be enough to implement a much, much stronger perception algorithm, by gauging what fraction of a tile is visible.  That way I can have monsters with very long sight who won&#8217;t notice you sneaking up on them around corners, or monsters who only see six or seven tiles away, but who notice absolutely everything in range.  It should make far more satisfactory AI chase behavior, especially since I&#8217;m going to be tracking actual creature knowledge.</p>
<p>Anyway, that&#8217;s just what I&#8217;m working on in Southgate at the moment.  New topics soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/on-shadowcasting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Field of Vision Code</title>
		<link>http://fullof.bs/field-of-vision-code/</link>
		<comments>http://fullof.bs/field-of-vision-code/#comments</comments>
		<pubDate>Tue, 21 Mar 2006 01:07:18 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[Game Algorithms]]></category>
		<category><![CDATA[Nintendo DS]]></category>
		<category><![CDATA[Southgate]]></category>

		<guid isPermaLink="false">http://blog.sc.tri-bit.com/?p=87</guid>
		<description><![CDATA[I&#8217;m working on a field-of-vision implementation for Southgate at the moment, which is both very fast and highly accurate. It also provides anti-aliased shadows, accounts for shadows that are smaller than a single tile, and (I haven&#8217;t decided yet) might even end up supporting non-opaque shadows. Depending on how well it turns out, I dunno, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on a field-of-vision implementation for Southgate at the moment, which is both very fast and highly accurate. <span id="more-100"></span>It also provides anti-aliased shadows, accounts for shadows that are smaller than a single tile, and (I haven&#8217;t decided yet) might even end up supporting non-opaque shadows.</p>
<p>Depending on how well it turns out, I dunno, I might release the code and/or write a tutorial. The code is based on the tutorial by <a title="Yay I reformatted it" href="http://sc.tri-bit.com/Computing_LOS_for_Large_Areas">Gordon Lipford </a>(which I originally found on <a title="So ... hard ... on eyes ..." href="http://roguelikedevelopment.org/php/article/showArticle.php?path=development/LOS/articles/&amp;article=Computing%20LOS%20for%20Large%20Areas%20-%20Gordon%20Lipford%20[gclipford@sympatico.ca].txt">Dungeondweller</a>.) My adjustments to it are just tuning and slight extensions which aren&#8217;t in fact very difficult to make, plus a bunch of style refactorings. We&#8217;ll see &#8211; maybe I&#8217;ll put it with the other tutorials and example code. For now, <a title="That's One" href="http://roguelikedevelopment.org/php/article/showArticle.php?path=development/LOS/articles/&amp;article=FOV%20using%20recursive%20shadowcasting%20-%20Bj%F6rn%20Bergstr%F6m%20[dungeondweller@swipnet.se].txt">Björn Bergström&#8217;s tutorial</a> or <a title="That's two" href="http://roguelikedevelopment.org/php/article/showArticle.php?path=development/LOS/articles/&amp;article=Line%20of%20Sight%20-%20Tobias%20Downer%20[toby@iglou.com].txt">Tobias Downer&#8217;s tutorial</a> will be the best no-code explanations you can find.</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/field-of-vision-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog?  What blog?</title>
		<link>http://fullof.bs/blog-what-blog/</link>
		<comments>http://fullof.bs/blog-what-blog/#comments</comments>
		<pubDate>Thu, 09 Mar 2006 08:32:46 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[Blog Meta]]></category>
		<category><![CDATA[DynoBright]]></category>
		<category><![CDATA[My Games]]></category>
		<category><![CDATA[Southgate]]></category>
		<category><![CDATA[excuses]]></category>
		<category><![CDATA[updates]]></category>

		<guid isPermaLink="false">http://blog.sc.tri-bit.com/?p=23</guid>
		<description><![CDATA[Oh right, I&#8217;m supposed to be updating this thing. What month is it again? Sorry I&#8217;ve been absent. About a month and a half ago I wrote a really, really long blog entry, then managed to accidentally lose it, since my mediawiki hack didn&#8217;t really allow for the saving of prototypes of blog entries (this [...]]]></description>
			<content:encoded><![CDATA[<p>Oh right, I&#8217;m supposed to be updating this thing.  What month is it again?<br />
<span id="more-58"></span><br />
Sorry I&#8217;ve been absent.  About a month and a half ago I wrote a really, really long blog entry, then managed to accidentally lose it, since my mediawiki hack didn&#8217;t really allow for the saving of prototypes of blog entries (this has since been fixed.)  I lost many a self-entertaining turn of the phrase as the result of that, combined with my Memory Of Great Selectivity (+2, vorpal.)  As an upshot, though, I got angry at my blog, and didn&#8217;t touch it for a few days.  And then, well, a few days turned into a few weeks, and now it&#8217;s been a hair over a month.  The stuff I&#8217;ve been needing to read, lately I&#8217;ve been throwing it on my bookmark toolbar, where I usually keep the web things I need to do; as a result the blogging link got scrolled off of screen.  I&#8217;ve been so face down in getting things done that I didn&#8217;t even notice, and as such, I&#8217;ve built up a streak of lag.</p>
<p>Ze streak!  She is the broken!</p>
<p>I&#8217;m gonna try using this blog to release stress, because for one I&#8217;ve got it in spades &#8211; yay for starting corporations &#8211; and for two maybe if it works, I&#8217;ll start being a little bit more regular with my posts.  Besides, that&#8217;ll give me some content to discuss on a regular basis other than my roguelike <a title="Southgate Development Journal" href="http://blog.sc.tri-bit.com/?cat=19">Southgate</a>.  This is important, because now that I have about sixty five full time jobs, I rarely get out of the house anymore.  Hopefully that&#8217;ll change once the company&#8217;s off of the ground.</p>
<p>So, what to talk about?  I still can&#8217;t talk much about that; the patents are only partially underway, and I&#8217;m being a total secrecy freak.  All I&#8217;ll say is that it&#8217;s for the <a title="StoneCypher's Nintendo DS Development section" href="http://sc.tri-bit.com/Category:Nintendo%20DS">Nintendo DS</a>, that it&#8217;s a huge risk, that the reward is gigantic, and that if I somehow manage to pull this off, things are going to change in a relatively surprising fashion.  I&#8217;m not one prone to hyperbole, so people who know me, maybe pay attention.  I really believe that if this works, it&#8217;s going to be a capital b capital d Big Deal.  Of course, in order to get that initial capital I have to give half the horse away, which tehsux.  Also, I have to give a big chunk to my new business partner, because she&#8217;s making this, um, what&#8217;s the word, possible.  That all said, I talked to my friend Brooke about this (luckily he doesn&#8217;t give a damn about my blog so he&#8217;ll never read this,) and he says the deal I&#8217;m getting is actually pretty sweet, and that I&#8217;m offended by the numbers is me just being a business noob.  Sure, from my perspective the equity I have to hand out &#8211; approximately two point three bujillion dollars for every peso invested &#8211; seems a mite on the high side.  Apparently though, this is the norm, as much to recoup investments into other companies which failed for a given investor as because they have barrels with which to bend people over.</p>
<p>I still want to keep 110%.</p>
<p>I&#8217;m kind of excited in that several of my friends are among the initial investors.  That I didn&#8217;t expect, but when I&#8217;ve mumbled about what I was doing, several people whose opinions I value have done the instant messenger equivalent of the pants crappery dance, and have requested to jump onboard.  This means that some of the people who I&#8217;m making Bruce Wayne rich in exchange for handing me the price of an extra value meal will actually be people I give a damn about.  This, it turns out, is double-awesome.</p>
<p>Y&#8217;see, if someone had asked me before this all started whether I&#8217;d ever take money from a friend, my answer would have been a flat no.  Totally not about the spreading of the risk to people I care about.  Not into the whole notion of if I go down, I drag my friends down with me.  That&#8217;s something you expect from scumbags who care more about getting ahead in the world than their interpersonal relationships or their honor.</p>
<p>Or, at least, so I would have said.  Then, I started telling one of my dear friends what I was up to, and I swear to god I could hear him hyperventilating over the internet.  He all but stuffed a wad of money in my face, and then told me he was going to get his brother in on it too.  And, combined with a different one of my investors, who was once a professional gambler and gave me a very clear view of things as his not investing money he couldn&#8217;t afford to lose, it turns out that my beliefs about appropriacy in investment are starting to 180.  I used to think friends and family stock was generally morally bankrupt.  I&#8217;m starting to understand it now, and why it&#8217;s there, and I&#8217;m starting to think about maybe offering it.  Being able to support one&#8217;s family&#8217;s fiscal development by directing capital into things you have faith will grow turns out to be a warm fuzzy feeling, not a cold clammy feeling.  And, to be quite clear, that&#8217;s a big surprise to me.</p>
<p>So, I&#8217;ve now opened investment to half a dozen friends.  Three months ago I would have been appalled by the notion, and would have insisted I&#8217;d only accept investment from professionals.  Now, I&#8217;m starting to get out of this kneejerk reaction I have of preventing people from getting into danger.  To be plain, my friends are adults, and they don&#8217;t need my watchful eye.  If they believe in what I&#8217;m doing, I&#8217;m starting to believe that they should just be allowed to take the risk with me.  Hell, one of my friends is going on a private crusade for me; he grew up in one of those Money areas of the United States, and he&#8217;s gone back to talk to the people with whom he grew up, who can throw around six digits without much concern.</p>
<p>Only takes one, right?</p>
<p>Anyhoo, that&#8217;s why I&#8217;ve been gone for a month &#8211; I&#8217;ve been stupid, I forgot, the reminder I made for myself disappeared until just now, and I&#8217;ve been so far past nose to the grindstone that the inside of my skull is getting grindwheel marks.  I&#8217;ve been whoring up initial funding, setting up services, registering a corporation, filing for patents, getting patent lawyers, getting IP lawyers, getting marketers, and even occasionally working on the actual product.  It&#8217;s kind of nice that the actual product is already done; that way I don&#8217;t have to feel like this is all bass ackwards.  I can just watch a real businessperson do her thing, and learn from it, instead of indulging in second guesses the whole way.</p>
<p>More on how lucky I am to have found my business partner another day.  She&#8217;s awesome in the way that my artist is awesome, except with spreadsheets instead of pixels.  She sees the potential and she&#8217;s just working on making it happen, because she knows I&#8217;ll do the right thing and make the bootstrap people rich with me.  She&#8217;s been working hard, too, and with nothing more than the promise of the company output itself.  Sure, this is what you always hear about in the stories of people having made it work, but actually landing someone like that turns out to be a whole different matter.</p>
<p>Anyway, here&#8217;s some <a title="The Charles Bronson Death Wish Body Count" href="http://www.screenhead.com/funny/the-charles-bronson-death-wish-bodycount-156023.php">Charles Bronson Murderology</a> for the palette.</p>
<p>And, I&#8217;m back.</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/blog-what-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Easier is Harder</title>
		<link>http://fullof.bs/easier-is-harder/</link>
		<comments>http://fullof.bs/easier-is-harder/#comments</comments>
		<pubDate>Sat, 04 Feb 2006 08:28:08 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[Game Algorithms]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[My Games]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Southgate]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[difficulty]]></category>
		<category><![CDATA[new tool]]></category>
		<category><![CDATA[paradox]]></category>

		<guid isPermaLink="false">http://blog.sc.tri-bit.com/?p=21</guid>
		<description><![CDATA[Why would I say that? Because every time I develop a tool to make things easier, that just gives me an excuse to make a system triple as complicated. Every time I make something easier, it turns harder. This is something of an annoying habit of mine, though it&#8217;s also led to some of the [...]]]></description>
			<content:encoded><![CDATA[<p>Why would I say that?</p>
<p>Because every time I develop a tool to make things easier, that just gives me an excuse to make a system triple as complicated. Every time I make something easier, it turns harder.  This is something of an annoying habit of mine, though it&#8217;s also led to some of the best things I&#8217;ve invented.  That said, it&#8217;s also led to a lot of wasted time and extra complexity &#8211; not that that&#8217;s exactly a terrible thing in a hobby project, but still.  Whether this is going to turn out in that fashion remains to be seen.<br />
<span id="more-56"></span><br />
Once again I&#8217;m babbling about my new dungeon generator.  I set up a sort of tagging system which allows the system to determine what kinds of styles are appropriate for the rooms, so that themed levels will come out correctly.  The problem is, I wanted all this flexibility, and now I&#8217;ve got this giant mass of code that quivers every time I touch it, and occasionally howls at the moon.  Unfortunately, that&#8217;s actually fairly common behavior for my code.  Go figure.</p>
<p>Anyway, I&#8217;ve got six room types implemented under the new system, and the dungeon generator&#8217;s already turning out surprisingly interesting results.  I&#8217;m veddy pleased.  Hopefully, you will be too, but if I don&#8217;t get out of the blog and actually write it, we&#8217;ll never know.</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/easier-is-harder/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dungeon Generators are Interesting</title>
		<link>http://fullof.bs/dungeon-generators-are-interesting/</link>
		<comments>http://fullof.bs/dungeon-generators-are-interesting/#comments</comments>
		<pubDate>Fri, 03 Feb 2006 08:25:47 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[Game Algorithms]]></category>
		<category><![CDATA[My Games]]></category>
		<category><![CDATA[Southgate]]></category>
		<category><![CDATA[dungeon]]></category>
		<category><![CDATA[dungeon generator]]></category>
		<category><![CDATA[generator]]></category>
		<category><![CDATA[rogue]]></category>
		<category><![CDATA[roguelike]]></category>

		<guid isPermaLink="false">http://blog.sc.tri-bit.com/?p=20</guid>
		<description><![CDATA[Dungeon Generators are strange creatures. I&#8217;m discovering, since I haven&#8217;t attempted one in several years, that the older a programmer you are and the more strange tools in your belt, the more fun dungeon generators are to write. Back in the day, it seemed like a huge and painful task. Now that modularity is second [...]]]></description>
			<content:encoded><![CDATA[<p>Dungeon Generators are strange creatures.</p>
<p>I&#8217;m discovering, since I haven&#8217;t attempted one in several years, that the older a programmer you are and the more strange tools in your belt, the more fun dungeon generators are to write.  Back in the day, it seemed like a huge and painful task.  Now that modularity is second nature, it&#8217;s turning into a joy to write.  This is sort of a surprise to me; last time I wrote a Roguelike, the monster system was by far and away the most entertaining, and the level system something of a chore.  I kind of wonder whether the new monster system is going to be as much fun.<br />
<span id="more-55"></span><br />
Anyway, one of the greatest joys of the new way I&#8217;m doing things is the distribution method for rooms.  It&#8217;s a little memory hungry, but on the bright side I can just snap new room types into place, and bang, they&#8217;re used appropriately throughout the whole game, according to depth, theme, and several things I&#8217;m not yet discussing.  I&#8217;ve only snapped in a few kinds of room so far, but already I can play around with the probabilities, and I&#8217;m getting results I really like.  This generator is both much easier to extend and to balance than the old one.  It&#8217;s going to be quite a bit more entertaining for me, I think.</p>
<p>After that, I think it&#8217;s time to put my foot down about how the character system actually works.  It&#8217;s changed too many times in my head.  I need an implementation.  I have a really weird idea, though, and if it pans out, you guys are going to give me total horizon stare.  (Teh awesumm.)</p>
<p>In the meantime, besides the daily image, I have <a title="Liquid Lady movie" href="http://www.ebaumsworld.com/videos/liquidlady.html">a neat link</a> which someone handed to me on IRC.  It&#8217;s weird &#8211; half the people who watch it think it&#8217;s gross, and the other half think it&#8217;s hawt.  I find myself in the latter camp.</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/dungeon-generators-are-interesting/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Southgate Development Journal: Basics</title>
		<link>http://fullof.bs/southgate-development-journal-basics/</link>
		<comments>http://fullof.bs/southgate-development-journal-basics/#comments</comments>
		<pubDate>Thu, 02 Feb 2006 08:22:23 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[My Games]]></category>
		<category><![CDATA[Nintendo DS]]></category>
		<category><![CDATA[Southgate]]></category>
		<category><![CDATA[journal]]></category>
		<category><![CDATA[rogue]]></category>
		<category><![CDATA[roguelike]]></category>

		<guid isPermaLink="false">http://blog.sc.tri-bit.com/?p=19</guid>
		<description><![CDATA[The roguelike is well underway, now, including a name. Today, I&#8217;m beginning a journal chronicling my development path for the game. It&#8217;s gonna be slow &#8211; I&#8217;m doing a lot of other stuff in my life &#8211; but private roguelikes like ADOM and Crawl have had slow build development cycles, too. Lord knows my favorite [...]]]></description>
			<content:encoded><![CDATA[<p>The roguelike is well underway, now, including a name.<br />
<span id="more-54"></span><br />
Today, I&#8217;m beginning a journal chronicling my development path for the game.  It&#8217;s gonna be slow &#8211; I&#8217;m doing a lot of other stuff in my life &#8211; but private roguelikes like <a title="Ancient Domains of Mystery" href="http://www.adom.de/">ADOM</a> and <a title="Linley's Dungeon Crawl" href="http://dungeoncrawl.org/">Crawl</a> have had slow build development cycles, too.  Lord knows my favorite roguelike, <a title="Angband" href="http://www.thangorodrim.net/">Angband</a>, has been in development forever and a half.  Besides, I&#8217;m making a fairly aggressively different rules system than is typical of Roguelikes, deriving heavily from little known mechanics from pencil and paper RPGs and inventing some fairly crazy stuff to fill in between them, and to make something like that work takes a long time.</p>
<p>So, I&#8217;ve started building the various tables that go into a project like this.  There are a surprising number of them, and I&#8217;m beginning to feel like a deeper modelling of the underlying construction of these things is maybe in order; I&#8217;ll finish out the tables on paper, but after that, maybe it&#8217;s time for some aggressive C++.  I&#8217;ve got what I think is a fairly neat skill model put together, and I&#8217;m not using classes at all &#8211; or at least, not in the way most people are likely to think of them.  More to come soon, time allowing.</p>
<p>In other news, I feel totally swamped by the flood of small components that goes into starting a business.  In fact, my daily image today is picked in deference to the feeling of having been <a title="Legowned!" href="http://sc.tri-bit.com/Legowned">legowned</a>.  Whoring for investors is just awful.</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/southgate-development-journal-basics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The NDS Needs a Roguelike</title>
		<link>http://fullof.bs/the-nds-needs-a-roguelike/</link>
		<comments>http://fullof.bs/the-nds-needs-a-roguelike/#comments</comments>
		<pubDate>Sun, 29 Jan 2006 08:13:56 +0000</pubDate>
		<dc:creator>John Haugeland</dc:creator>
				<category><![CDATA[My Games]]></category>
		<category><![CDATA[Nintendo DS]]></category>
		<category><![CDATA[Southgate]]></category>
		<category><![CDATA[ds]]></category>
		<category><![CDATA[nds]]></category>
		<category><![CDATA[nintendo]]></category>
		<category><![CDATA[rogue]]></category>
		<category><![CDATA[roguelike]]></category>

		<guid isPermaLink="false">http://blog.sc.tri-bit.com/?p=17</guid>
		<description><![CDATA[It&#8217;s time for the NDS to have a roguelike. I&#8217;m starting a moderately simple one for fun. So, I&#8217;ve been thinking about it. I played the Palm Pilot port of UMoria for a long time, despite the rudimentary nature of the game compared to modern Roguelikes, and despite how painful it was on the platform. [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s time for the NDS to have a roguelike. I&#8217;m starting a moderately simple one for fun.<br />
<span id="more-52"></span><br />
So, I&#8217;ve been thinking about it.  I played the Palm Pilot port of UMoria for a long time, despite the rudimentary nature of the game compared to modern Roguelikes, and despite how painful it was on the platform.  One of the endearing parts of the game, though, was the way in which the touchpad made many things easier to do &#8211; particularly on-map selection.</p>
<p>Thing is, the DS can fix most of the problems in the Palm Pilot version.  Of major importance is the number of extra screens and dialogs you need in roguelikes, which are seriously cumbersome on most machines; the DS&#8217; second screen makes that far, far less painful.  Similarly, the larger available amount of storage space and video horsepower have some interesting possibilities.  Yes, of course the primary mode should be text mode; still, it&#8217;d be nice if on the upper screen you were able to see the items, monsters, et cetera.  Also compelling is the desire to write a rulesystem for a crowd that likes deep rules from the ground up.  There&#8217;s a lot I remember from pencil-and-paper RPGs that never made it into the world of Roguelikes, which would be well-seen in that crowd; the class system from the Warhammer RPG and a fixed version of the point system from 4th ed Shadowrun both come to mind.</p>
<p>Anyway, I started on a codebase today.  Going by the schedule of my private projects and how much time I&#8217;m investing into my company, I should be ready by about 2024.</p>
]]></content:encoded>
			<wfw:commentRss>http://fullof.bs/the-nds-needs-a-roguelike/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

