<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>VectorStorm Blog</title>
	
	<link>http://www.vectorstorm.org</link>
	<description>Creating games, one brightly glowing line at a time.</description>
	<lastBuildDate>Mon, 06 Sep 2010 12:49:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/vectorstorm" /><feedburner:info uri="vectorstorm" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fvectorstorm" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fvectorstorm" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fvectorstorm" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/vectorstorm" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fvectorstorm" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fvectorstorm" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fvectorstorm" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
		<title>Little bits of speed</title>
		<link>http://feedproxy.google.com/~r/vectorstorm/~3/YOxU6KAVIkM/</link>
		<comments>http://www.vectorstorm.org/2010/09/06/little-bits-of-speed/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 12:49:28 +0000</pubDate>
		<dc:creator>trevor</dc:creator>
				<category><![CDATA[Full Games]]></category>
		<category><![CDATA[MMORPG Tycoon]]></category>

		<guid isPermaLink="false">http://www.vectorstorm.org/?p=1521</guid>
		<description><![CDATA[Not a lot of coding time today, so I just tackled a few speed issues that had arisen in the last few days. The major one is that now that full procedural objects are being baked together into a single mesh (instead of lots of individual sub-meshes), the process of optimising those super-meshes was very [...]]]></description>
			<content:encoded><![CDATA[<p>Not a lot of coding time today, so I just tackled a few speed issues that had arisen in the last few days.</p>
<p>The major one is that now that full procedural objects are being baked together into a single mesh (instead of lots of individual sub-meshes), the process of optimising those super-meshes was very slow.  The worst-cast situation at the moment is undoubtedly the <em>starting area</em> building, which is made up of about 600 triangles in total, or 1800 vertices, before being optimised down for rendering.  (I know, this doesn&#8217;t sound like a lot of triangles or vertices.  But due to its focus on procedural geometry, MT2 has to do a lot of model processing during runtime which other games can do outside of the game)</p>
<p>Optimising these procedural models mostly consists of checking all those generated vertices, to see if any of them are close enough together to be  merged together.  This means that for every element in the list, you need to check it against every other element in the list.  And when you have 1800 vertices, that&#8217;s an awful lot of checking.  Computer science folks call this <em>O(n^2)</em>.  I just call it &#8220;really, painfully slow&#8221;.  Building that model freezes MT2 for about three seconds, on my computer.</p>
<p>What I&#8217;ve done is to add a simple cell structure to the mesh optimisation step.  Basically, imagine that the model is being built inside an 8x8x8 grid of cubes.  This way, vertices don&#8217;t have to be checked against every other vertex in the model &#8212; they only need to be checked against other vertices which are located in the same cell that they are.  This optimisation has sped up the creation of the &#8220;starting point&#8221; model from about three seconds to about half a second.  Which is still much too long, but it&#8217;s an awful lot better!  I&#8217;m going to have to think more about how to improve the speed further.</p>
<hr />
<p><small>© Trevor for <a href="http://www.vectorstorm.org">VectorStorm Blog</a>, 2010. |
<a href="http://www.vectorstorm.org/2010/09/06/little-bits-of-speed/">Permalink</a> 
</small></p><img src="http://feeds.feedburner.com/~r/vectorstorm/~4/YOxU6KAVIkM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vectorstorm.org/2010/09/06/little-bits-of-speed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.vectorstorm.org/2010/09/06/little-bits-of-speed/</feedburner:origLink></item>
		<item>
		<title>Climbing Trees</title>
		<link>http://feedproxy.google.com/~r/vectorstorm/~3/ta1CZpC7_Jo/</link>
		<comments>http://www.vectorstorm.org/2010/09/05/climbing-trees/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 09:55:49 +0000</pubDate>
		<dc:creator>trevor</dc:creator>
				<category><![CDATA[Full Games]]></category>
		<category><![CDATA[MMORPG Tycoon]]></category>

		<guid isPermaLink="false">http://www.vectorstorm.org/?p=1517</guid>
		<description><![CDATA[I&#8217;ve just noticed that I can climb up my trees by jumping from branch to branch. I love generic systems that just work the way that you&#8217;d expect them to.  :) © Trevor for VectorStorm Blog, 2010. &#124; Permalink]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.vectorstorm.org/wp-content/uploads/2010/09/ClimbingTrees.jpg"><img class="alignnone size-medium wp-image-1518" title="ClimbingTrees" src="http://www.vectorstorm.org/wp-content/uploads/2010/09/ClimbingTrees-300x193.jpg" alt="" width="300" height="193" /></a>I&#8217;ve just noticed that I can climb up my trees by jumping from branch to branch.</p>
<p>I love generic systems that just work the way that you&#8217;d expect them to.  :)</p>
<hr />
<p><small>© Trevor for <a href="http://www.vectorstorm.org">VectorStorm Blog</a>, 2010. |
<a href="http://www.vectorstorm.org/2010/09/05/climbing-trees/">Permalink</a> 
</small></p><img src="http://feeds.feedburner.com/~r/vectorstorm/~4/ta1CZpC7_Jo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vectorstorm.org/2010/09/05/climbing-trees/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.vectorstorm.org/2010/09/05/climbing-trees/</feedburner:origLink></item>
		<item>
		<title>Major rendering restructure</title>
		<link>http://feedproxy.google.com/~r/vectorstorm/~3/ubTRKsluZb0/</link>
		<comments>http://www.vectorstorm.org/2010/09/05/major-rendering-restructure/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 09:38:24 +0000</pubDate>
		<dc:creator>trevor</dc:creator>
				<category><![CDATA[Engine]]></category>
		<category><![CDATA[Full Games]]></category>
		<category><![CDATA[MMORPG Tycoon]]></category>
		<category><![CDATA[VectorStorm]]></category>

		<guid isPermaLink="false">http://www.vectorstorm.org/?p=1508</guid>
		<description><![CDATA[Today I spent the whole day doing just one thing:  a major restructuring of VectorStorm&#8217;s rendering architecture.  This is, without a doubt, the biggest change to how rendering works in VectorStorm since I first wrote it. What you&#8217;re looking at in this screenshot is a not-yet-activated starting point, being rendered as a glowing outline, behind [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.vectorstorm.org/wp-content/uploads/2010/09/RendererRevamp.jpg"><img class="alignnone size-medium wp-image-1510" title="RendererRevamp" src="http://www.vectorstorm.org/wp-content/uploads/2010/09/RendererRevamp-300x193.jpg" alt="" width="300" height="193" /></a>Today I spent the whole day doing just one thing:  a major restructuring of VectorStorm&#8217;s rendering architecture.  This is, without a doubt, the biggest change to how rendering works in VectorStorm since I first wrote it.</p>
<p>What you&#8217;re looking at in this screenshot is a not-yet-activated starting point, being rendered as a glowing outline, behind a tree.  Anyone who&#8217;s played with the MS1 build of Tycoon2 will know that one of the big rendering problems that it had was that glowing objects would often glow through opaque objects that were in front of them.  As you can see, this is no longer the case.  VectorStorm now automatically ensures that objects are drawn in the correct order, so you won&#8217;t incorrectly see obscured glowing effects.</p>
<p>To do this, I had to <em>(warning:  the rest of this post contains dangerously boring technical details)</em> change how VectorStorm renders.</p>
<p>Originally, VectorStorm was designed for rendering simple 2D vector graphic games.  As such, it was designed with a system of &#8220;layers&#8221;.  Your game could configure how many layers it wanted to use, and register sprites or other objects onto any layer you liked.  Within each layer, objects were drawn in order, with later objects (or later layers) drawn on top of previous layers.  With vector graphics, since you only had additive lines and no solid objects, the whole issue of which line was on top really didn&#8217;t matter;  the layers were really used just for putting objects under different cameras.  For example, in The Muncher&#8217;s Labyrinth, the game world was in one layer, and the HUD was in a different layer, just so the two could be rendered using different cameras and I didn&#8217;t need to worry about moving the HUD around to match the camera.  When I added solid rendering for ThunderStorm, the layers worked really well to ensure that some objects would always draw in front of other objects.</p>
<p>Each renderable object would have a &#8220;Draw()&#8221; function called on it, being given a pointer to a display list to which it could append its own rendering commands.  This was (in my own opinion) simple and elegant, and it was great for a while.</p>
<p>But now that VectorStorm is rendering in 3D, layers don&#8217;t really make sense any more.  We still have them, but in 3D we have a z buffer which automatically lets the closest object be drawn, regardless of whether it was drawn first or last, so it&#8217;s usually no longer important to manage which objects are drawn first or last, except for in special circumstances (glow effects, transparency, etc).</p>
<p>But the real problem is that we now often have objects which have different drawing styles within a single object.  For example, the cursor in MT2 (and MT1, for that matter) is made up of two parts;  a dark background, and a glowing outline.  Under the &#8220;just add your commands to this display list&#8221; approach, each object has to render all of its geometry at once.  This meant that I couldn&#8217;t (for example) draw the background portion of the cursor early, and the glowing part later on;  they&#8217;d both always render at the same time.</p>
<p>Another possible issue is that of rendering partially transparent objects.  These see-through objects are always a problem with modern 3D games, since z-buffers can&#8217;t be used to render them (z-buffers assume that everything is opaque, and so won&#8217;t allow you to draw anything behind a pane of glass, for example, if you draw the glass first).  The traditional way to handle these translucent objects is to sort them from back to front, then draw them in that order, after you&#8217;ve drawn all the non-translucent objects.  But with the simple-and-elegant way that I was handling drawing of objects, there was no way to sort the objects into any different order than they were already in.</p>
<p>Anyhow, enough of the problem statement.  :)</p>
<p>What I&#8217;ve changed is that renderable objects in VectorStorm are no longer given a pointer to the game&#8217;s vsDisplayList when it&#8217;s time for them to render.  Instead, they&#8217;re now given a vsRenderQueue object.  On that vsRenderQueue, they can provide their rendering instructions in one of several ways, and the vsRenderQueue can then reorder the drawing as required, to make sure that (for example) the glowing and transparent parts of objects are drawn last, while their opaque portions can still be drawn earlier.</p>
<p>The other change is that vsLayer is now completely gone.  Instead, we now have vsScenes, which work very much like vsLayers did;  they&#8217;re just collections of renderable objects.  Like before, your game can have any number of vsScenes, and they&#8217;re rendered in order.  Right now, they share a single z-buffer and render target between them all, but setting it up so that the different scenes can have separate renders is certainly possible in the future, if I ever need that feature.</p>
<p>You can probably tell by how I&#8217;m gushing, but I&#8217;m absolutely thrilled and relieved to have this all working at last.  Lots of stuff in MT2 (particularly the very old code) is currently working via a &#8220;compatibility&#8221; mode that I&#8217;ve put in the vsRenderQueue, and I do still need to convert those bits of code over to using the new systems instead.  But this change has illuminated a whole bunch of unreliable rendering code that was lurking in the GUI systems until now, and the stricter system should keep me from writing terrible code again in the future.</p>
<p>Right now, these changes are only in my MT2 development branch &#8212; they haven&#8217;t been propagated back into trunk, largely because I&#8217;d probably have to make a lot of big adjustments to the testbed apps to make them render under the new systems, and I&#8217;m feeling like taking a bit of a rest, after this ten-hour coding session.  But I&#8217;ll update trunk sometime in the foreseeable future, and will post about it when I do.</p>
<hr />
<p><small>© Trevor for <a href="http://www.vectorstorm.org">VectorStorm Blog</a>, 2010. |
<a href="http://www.vectorstorm.org/2010/09/05/major-rendering-restructure/">Permalink</a> 
</small></p><img src="http://feeds.feedburner.com/~r/vectorstorm/~4/ubTRKsluZb0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vectorstorm.org/2010/09/05/major-rendering-restructure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.vectorstorm.org/2010/09/05/major-rendering-restructure/</feedburner:origLink></item>
		<item>
		<title>Faster</title>
		<link>http://feedproxy.google.com/~r/vectorstorm/~3/HcJuGczfYnM/</link>
		<comments>http://www.vectorstorm.org/2010/09/04/faster/#comments</comments>
		<pubDate>Sat, 04 Sep 2010 11:10:43 +0000</pubDate>
		<dc:creator>trevor</dc:creator>
				<category><![CDATA[Full Games]]></category>
		<category><![CDATA[MMORPG Tycoon]]></category>

		<guid isPermaLink="false">http://www.vectorstorm.org/?p=1503</guid>
		<description><![CDATA[Here&#8217;s something I&#8217;ve been trying to figure out for a while &#8212; how to make the procedural geometry render faster. The problem is that this geometry is made up of lots of hierarchical objects.  These rough tree models, for example, each contain about 40 or 50 individual objects;  one for every branch.  This means that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.vectorstorm.org/wp-content/uploads/2010/09/Faster.jpg"><img class="alignnone size-medium wp-image-1504" title="Faster" src="http://www.vectorstorm.org/wp-content/uploads/2010/09/Faster-300x193.jpg" alt="" width="300" height="193" /></a>Here&#8217;s something I&#8217;ve been trying to figure out for a while &#8212; how to make the procedural geometry render faster.</p>
<p>The problem is that this geometry is made up of lots of hierarchical objects.  These rough tree models, for example, each contain about 40 or 50 individual objects;  one for every branch.  This means that each tree model ends up submitting about 40 separate batches of geometry to the graphics card.  Clearly, the thing to do was to merge all of the geometry down into a single blob which could be sent all at once.  The trouble was figuring out how to actually do that, within the confines of the VectorStorm library.</p>
<p>Well, it took a bit of doing, but I finally worked it and implemented it today, and the difference is stunning.  Compare the length of the green timing bar in this screenshot against <a href="http://www.vectorstorm.org/2010/08/07/better-tree-structure/">the one from before these changes</a>, to see just how much of a difference it&#8217;s made.</p>
<p>In theory, I could make it even faster by drawing these trees as instances;  in effect, telling the video card &#8220;draw this object in these two hundred places&#8221;, instead of telling it to &#8220;draw this object here&#8221; two hundred times.  A subtle distinction, but an important one for optimum performance.    I imagine that I&#8217;ll eventually need to do that.  But for now, this is a huge boost in speed;  I&#8217;m really pleased with it!</p>
<hr />
<p><small>© Trevor for <a href="http://www.vectorstorm.org">VectorStorm Blog</a>, 2010. |
<a href="http://www.vectorstorm.org/2010/09/04/faster/">Permalink</a> 
</small></p><img src="http://feeds.feedburner.com/~r/vectorstorm/~4/HcJuGczfYnM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vectorstorm.org/2010/09/04/faster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.vectorstorm.org/2010/09/04/faster/</feedburner:origLink></item>
		<item>
		<title>Very quick update</title>
		<link>http://feedproxy.google.com/~r/vectorstorm/~3/tKfAHN6K6io/</link>
		<comments>http://www.vectorstorm.org/2010/09/03/very-quick-update-2/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 13:25:56 +0000</pubDate>
		<dc:creator>trevor</dc:creator>
				<category><![CDATA[General life]]></category>

		<guid isPermaLink="false">http://www.vectorstorm.org/?p=1501</guid>
		<description><![CDATA[Hi, guys.  This is going to be an extremely quick update, since I&#8217;m pretty much wiped out after a long day. First thing: Yes, I finally have my Internet access back (yay!), and it&#8217;s faster and nicer than ever.  Imagine my surprise to find that in my absence, this web site had successfully weathered a [...]]]></description>
			<content:encoded><![CDATA[<p>Hi, guys.  This is going to be an extremely quick update, since I&#8217;m pretty much wiped out after a long day.</p>
<p>First thing: Yes, I finally have my Internet access back (yay!), and it&#8217;s faster and nicer than ever.  Imagine my surprise to find that in my absence, this web site had successfully weathered a storm of traffic caused by a mention on rockpapershotgun.  Also imagine my surprise to find that spambots seem to have become more devious over the past week, and after attempting to post spam comments, they then proceeded to post irate and abusive complaints about how their spam comments weren&#8217;t being posted.  (Yes, even the irate complaints were automatically flagged as spam.  And no, I didn&#8217;t click on the SEO links that they were peddling).</p>
<p>Second thing:  As I mentioned earlier, I&#8217;ve been doing a fair amount of development over this period without Internet access.  This development included both work on MMORPG Tycoon, and some design and development on another game.  This second game is intended to act as a bit of a safety net;  it&#8217;s a much smaller and more well-defined game than MT2, and is targeted at the iPhone/iPod market.  The hope is that if I do run into employment difficulties in the future (and I want to reiterate that I&#8217;m still doing just fine at the moment), then I could quickly transition into app store sales to hopefully continue to make ends meet for a while.</p>
<p>Third thing:  During this time, I also completed the single player campaign of StarCraft 2.  I don&#8217;t know that I enjoyed it, really, but I did finish it.  Which makes StarCraft 2 only the second RTS game which I&#8217;ve played all the way through in single player.</p>
<hr />
<p><small>© Trevor for <a href="http://www.vectorstorm.org">VectorStorm Blog</a>, 2010. |
<a href="http://www.vectorstorm.org/2010/09/03/very-quick-update-2/">Permalink</a> 
</small></p><img src="http://feeds.feedburner.com/~r/vectorstorm/~4/tKfAHN6K6io" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vectorstorm.org/2010/09/03/very-quick-update-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.vectorstorm.org/2010/09/03/very-quick-update-2/</feedburner:origLink></item>
		<item>
		<title>Hiatus update</title>
		<link>http://feedproxy.google.com/~r/vectorstorm/~3/sftcB0WmWYg/</link>
		<comments>http://www.vectorstorm.org/2010/08/25/hiatus-update/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 11:48:26 +0000</pubDate>
		<dc:creator>trevor</dc:creator>
				<category><![CDATA[General life]]></category>

		<guid isPermaLink="false">http://www.vectorstorm.org/2010/08/25/hiatus-update/</guid>
		<description><![CDATA[Just a couple quick comments. I&#8217;m typing this from my iPad on a 3G cellular network, as I&#8217;ve apparently gone over my limit of 20 gigabytes usage out of the advertised-as-60-gigabyte, also-advertised-as-&#8221;unlimited&#8221; broadband plan, which means that my ISP throttles my internet access to the point where even basic DNS lookups fail nine times out [...]]]></description>
			<content:encoded><![CDATA[<p>Just a couple quick comments.  I&#8217;m typing this from my iPad on a 3G cellular network, as I&#8217;ve apparently gone over my limit of 20 gigabytes usage out of the advertised-as-60-gigabyte, also-advertised-as-&#8221;unlimited&#8221; broadband plan, which means that my ISP throttles my internet access to the point where even basic DNS lookups fail nine times out of ten.  Basically means that I&#8217;m mostly Internetless until the end of the month, when stuff resets (and I&#8217;m moving to a substantially better data plan, which has much higher data limits, is substantially faster, and is half the price).</p>
<p>On the plus side, this current lack of network means that I&#8217;m not being tempted to browse the web or play StarCraft 2 instead of coding, and so I&#8217;ve been getting rather more than usual accomplished over the last few days.  Not going to talk about it too much here; touchscreens really aren&#8217;t great for blogging.  But once September rolls around and I can post more normally, I&#8217;ll have plenty to drone on and on about.  And I might have a few more little updates between now and then.  But no screenshots until I&#8217;ve got the internet back.</p>
<p>In other news, paying work is still rolling along, despite my last post.  It&#8217;s looking a lot less bleak now than it did last week, so don&#8217;t worry about me too much;  While we&#8217;re not completely out of the woods yet, I&#8217;m beginning to think that it&#8217;s all going to work out in the end.  Further news if/when it&#8217;s warranted.</p>
<hr />
<p><small>© Trevor for <a href="http://www.vectorstorm.org">VectorStorm Blog</a>, 2010. |
<a href="http://www.vectorstorm.org/2010/08/25/hiatus-update/">Permalink</a> 
</small></p><img src="http://feeds.feedburner.com/~r/vectorstorm/~4/sftcB0WmWYg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vectorstorm.org/2010/08/25/hiatus-update/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.vectorstorm.org/2010/08/25/hiatus-update/</feedburner:origLink></item>
		<item>
		<title>A brief hiatus</title>
		<link>http://feedproxy.google.com/~r/vectorstorm/~3/nKJEfyEOMvw/</link>
		<comments>http://www.vectorstorm.org/2010/08/21/a-brief-hiatus/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 10:51:34 +0000</pubDate>
		<dc:creator>trevor</dc:creator>
				<category><![CDATA[General life]]></category>
		<category><![CDATA[VectorStorm]]></category>

		<guid isPermaLink="false">http://www.vectorstorm.org/?p=1495</guid>
		<description><![CDATA[First, sincere apologies for having been so quiet for so long.  Real life stuff came up, and I&#8217;ve been working to ensure that I can keep creating fun projects here in the future.  I expect that my posts are going to be pretty scarce for the next few weeks as I continue to sort out [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.vectorstorm.org/wp-content/uploads/2010/08/IMG_0027.jpg"><img class="alignnone size-medium wp-image-1497" title="IMG_0027" src="http://www.vectorstorm.org/wp-content/uploads/2010/08/IMG_0027-224x300.jpg" alt="" width="224" height="300" /></a>First, sincere apologies for having been so quiet for so long.  Real life stuff <a href="http://www.tsumea.com/australasia/australia/news/190810/krome-studios-adelaide-closed-melbourne-studio-suffers-drastic-sta" onclick="pageTracker._trackPageview('/outgoing/www.tsumea.com/australasia/australia/news/190810/krome-studios-adelaide-closed-melbourne-studio-suffers-drastic-sta?referer=');">came up</a>, and I&#8217;ve been working to ensure that I can keep creating fun projects here in the future.  I expect that my posts are going to be pretty scarce for the next few weeks as I continue to sort out plans for the future.  But there&#8217;s no reason to panic;  I&#8217;m positive that things will work out fine in the long run.  And for the record, I have nothing but good things to say about my employers, even under current circumstances, and I&#8217;m crossing my fingers that I get to keep working for them for a good long time.</p>
<p>But enough of that gloomy topic &#8212; time for a <a href="http://en.wikipedia.org/wiki/Unicorn_chaser#Unicorn_chaser" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Unicorn_chaser_Unicorn_chaser?referer=');">unicorn chaser</a>.  Look, it&#8217;s VectorStorm running on an iPad! (And also on the iPhone, not pictured here)  Long-time readers may recognise this as the &#8220;Testbed&#8221; program from the main VectorStorm library (with the orbiting lights moved closer in, to be easier to see).  There&#8217;s still a lot of work to be done on this port (which I&#8217;ll eventually do), mostly for supporting textures and audio.  But I was really pleased with just how easy it was to do the bulk of the port.  It was a lot simpler than <a href="http://www.vectorstorm.org/2008/09/19/vectorstorm-on-iphone/">the last time</a> I did this, back when VectorStorm only drew lines, and rendered everything using OpenGL&#8217;s &#8220;immediate mode&#8221; rendering.</p>
<p>Also unlike last time, this time I did the port without obliterating the PC and Mac version of the code, so it should actually be possible to commit this back into trunk and have games just automatically be able to run on all three platforms.  Of course, there&#8217;s a lot of work that would need to be done to actually release a game on iPhone/iPad, both technical (it&#8217;d have to support changing screen orientation, the iPhone 4 retina display, iOS4 multitasking, multitouch input, etc), and legal/organisational (setting up a company to use for publishing, etc).</p>
<p>No, there&#8217;s no chance that MMORPG Tycoon 2 would run acceptably on any of these devices (although you&#8217;d better believe that I&#8217;m going to compile and run it once, just to giggle at the terrible frame rate), but I might eventually compile up some of my older games, or potentially future &#8220;Game in a Week&#8221; titles, and put them up on the App Store just to see what happens.</p>
<hr />
<p><small>© Trevor for <a href="http://www.vectorstorm.org">VectorStorm Blog</a>, 2010. |
<a href="http://www.vectorstorm.org/2010/08/21/a-brief-hiatus/">Permalink</a> 
</small></p><img src="http://feeds.feedburner.com/~r/vectorstorm/~4/nKJEfyEOMvw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vectorstorm.org/2010/08/21/a-brief-hiatus/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.vectorstorm.org/2010/08/21/a-brief-hiatus/</feedburner:origLink></item>
		<item>
		<title>Slow progress</title>
		<link>http://feedproxy.google.com/~r/vectorstorm/~3/-TycPD5-TEs/</link>
		<comments>http://www.vectorstorm.org/2010/08/11/slow-progress/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 12:42:20 +0000</pubDate>
		<dc:creator>trevor</dc:creator>
				<category><![CDATA[Full Games]]></category>
		<category><![CDATA[MMORPG Tycoon]]></category>

		<guid isPermaLink="false">http://www.vectorstorm.org/?p=1493</guid>
		<description><![CDATA[So today I&#8217;ve made a few changes: vsMeshMaker no longer needs to specify the number of triangles in a model, before you start specifying those triangles.  Means that it&#8217;s really easy to just toss triangles in without thought, and have it come up with an optimised model at the end. vsMesh can now output vsFragments, [...]]]></description>
			<content:encoded><![CDATA[<p>So today I&#8217;ve made a few changes:</p>
<ul>
<li>vsMeshMaker no longer needs to specify the number of triangles in a model, before you start specifying those triangles.  Means that it&#8217;s really easy to just toss triangles in without thought, and have it come up with an optimised model at the end.</li>
<li>vsMesh can now output vsFragments, instead of outputting vsDisplayLists.  If it outputs vsFragments, then the vsMesh may be deleted &#8212; all data storage is left in the vsFragments.</li>
<li>MMORPG Tycoon 2&#8242;s procedural geometry algorithms now all use vsFragments, instead of vsDisplayLists.  However, they keep the vsMesh objects around, for ease of editing and ease of collision detection.</li>
</ul>
<p>The next bit that I need is probably a way to merge two vsFragments together (with an optional transform applied).  This change would allow me to accumulate all of the geometry in a model into a single object, for rapid rendering.</p>
<p>For example, the trees in the earlier screenshots were each composed of about 30-40 objects, one for each branch and sub-branch.  While this is great for a lot of things, it&#8217;s an awfully slow way to render the trees &#8212; really, I need to bake all of those vertices down into a single object, and then just render that.</p>
<hr />
<p><small>© Trevor for <a href="http://www.vectorstorm.org">VectorStorm Blog</a>, 2010. |
<a href="http://www.vectorstorm.org/2010/08/11/slow-progress/">Permalink</a> 
</small></p><img src="http://feeds.feedburner.com/~r/vectorstorm/~4/-TycPD5-TEs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vectorstorm.org/2010/08/11/slow-progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.vectorstorm.org/2010/08/11/slow-progress/</feedburner:origLink></item>
		<item>
		<title>More design musing</title>
		<link>http://feedproxy.google.com/~r/vectorstorm/~3/0mTOITtMz3I/</link>
		<comments>http://www.vectorstorm.org/2010/08/10/more-design-musing/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 12:31:02 +0000</pubDate>
		<dc:creator>trevor</dc:creator>
				<category><![CDATA[Full Games]]></category>
		<category><![CDATA[Game Design]]></category>
		<category><![CDATA[MMORPG Tycoon]]></category>

		<guid isPermaLink="false">http://www.vectorstorm.org/?p=1489</guid>
		<description><![CDATA[I&#8217;m sure other people doodle sensible things.  Me, I doodle GUI interfaces.  (And then obsess over whether the initial &#8220;click-drag&#8221; should start from a corner of the shape, or from the middle of the shape) Anyhow.  I&#8217;ve been thinking a lot more about how best to set up MMORPG Tycoon 2&#8242;s world building.  The more [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.vectorstorm.org/wp-content/uploads/2010/08/ClickDrag.jpg"><img class="alignnone size-medium wp-image-1490" title="ClickDrag" src="http://www.vectorstorm.org/wp-content/uploads/2010/08/ClickDrag-247x300.jpg" alt="" width="247" height="300" /></a>I&#8217;m sure other people doodle sensible things.  Me, I doodle GUI interfaces.  (And then obsess over whether the initial &#8220;click-drag&#8221; should start from a corner of the shape, or from the middle of the shape)</p>
<p>Anyhow.  I&#8217;ve been thinking a lot more about how best to set up MMORPG Tycoon 2&#8242;s world building.  The more I think about it, the more I&#8217;m starting to realise that thinking about &#8220;buildings&#8221; is probably too large-scale;  that really, the player shouldn&#8217;t be placing &#8220;inns&#8221; and &#8220;taverns&#8221;, but should instead be placing &#8220;innkeepers&#8221; and &#8220;barkeeps&#8221;.  The buildings themselves are kind of immaterial;  the important thing is the NPC who provides a service.</p>
<p>Or to put it another way:  There&#8217;s nothing special about the auction house in Stormwind, except that that&#8217;s where the auctioneers are.</p>
<p>Yes, the buildings do need to be there for graphical reasons.. but maybe there shouldn&#8217;t be distinctions between &#8220;Inn&#8221; and &#8220;Tavern&#8221; and &#8220;Weapon Shop&#8221; &#8212; there should just be a variety of buildings to pick from, and instead you&#8217;d have Innkeepers and Shopkeeper NPCs, and the PCs would seek out those NPCs the same way that they currently seek out particular types of building.</p>
<p>Pro:  More like real MMORPGs.  Means that different parts of the world can look very different, since we&#8217;re not forced to have the same model for an &#8220;inn&#8221; everywhere.  Makes it less damaging to the game to let players build their own buildings in some sort of editor, which would really let players be extra-creative in their world-building.</p>
<p>Con:  Makes it much harder to see how services are laid out in a town or city, since the functional pieces would be very small (and probably difficult to distinguish) NPCs, instead of being very large and iconic buildings.  Probably means that I&#8217;d need to model building interiors, so there&#8217;d be somewhere to place the NPCs.  After all, it would probably be weird for a shopkeeper to stand around and do business just outside his shop.  On the other hand, there are plenty of real MMORPGs where vendors just stand around on plinths;  shops aren&#8217;t always (or even usually) located inside buildings.</p>
<hr />
<p><small>© Trevor for <a href="http://www.vectorstorm.org">VectorStorm Blog</a>, 2010. |
<a href="http://www.vectorstorm.org/2010/08/10/more-design-musing/">Permalink</a> 
</small></p><img src="http://feeds.feedburner.com/~r/vectorstorm/~4/0mTOITtMz3I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vectorstorm.org/2010/08/10/more-design-musing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.vectorstorm.org/2010/08/10/more-design-musing/</feedburner:origLink></item>
		<item>
		<title>Better tree structure</title>
		<link>http://feedproxy.google.com/~r/vectorstorm/~3/9qOgBl-IIPQ/</link>
		<comments>http://www.vectorstorm.org/2010/08/07/better-tree-structure/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 13:01:54 +0000</pubDate>
		<dc:creator>trevor</dc:creator>
				<category><![CDATA[Full Games]]></category>
		<category><![CDATA[MMORPG Tycoon]]></category>

		<guid isPermaLink="false">http://www.vectorstorm.org/?p=1486</guid>
		<description><![CDATA[Just a quick screenshot, since I&#8217;ve finally got some better tree shapes being generated. This isn&#8217;t going to be appropriate for the final trees &#8212; it&#8217;s way, way too slow to render (just look at the length of that green bar!  Though to be fair, there are 200 trees being rendered)  Here, each branch is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.vectorstorm.org/wp-content/uploads/2010/08/BetterTreeStructure.jpg"><img class="alignnone size-medium wp-image-1487" title="BetterTreeStructure" src="http://www.vectorstorm.org/wp-content/uploads/2010/08/BetterTreeStructure-300x193.jpg" alt="" width="300" height="193" /></a>Just a quick screenshot, since I&#8217;ve finally got some better tree shapes being generated.</p>
<p>This isn&#8217;t going to be appropriate for the final trees &#8212; it&#8217;s way, way too slow to render (just look at the length of that green bar!  Though to be fair, there are 200 trees being rendered)  Here, each branch is effectively being treated as a separate object, instead of treating the tree as just one big thing.  Once I&#8217;ve pretty much settled on a tree generation system, I&#8217;ll set it up to bake all the geometry into a single object, instead of having it all in dozens of separate objects like this.</p>
<p>But I think that the general shape is reasonable.  Next step is going to be generating foliage for the trees.  And maybe at least making the trees brown or something, instead of having them appear to be made out of white plastic, as they do in this screenshot.</p>
<hr />
<p><small>© Trevor for <a href="http://www.vectorstorm.org">VectorStorm Blog</a>, 2010. |
<a href="http://www.vectorstorm.org/2010/08/07/better-tree-structure/">Permalink</a> 
</small></p><img src="http://feeds.feedburner.com/~r/vectorstorm/~4/9qOgBl-IIPQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vectorstorm.org/2010/08/07/better-tree-structure/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.vectorstorm.org/2010/08/07/better-tree-structure/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.676 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-09-06 23:50:38 --><!-- Compression = gzip -->
