<?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>NebulaCafe</title>
	<atom:link href="http://www.nebulacafe.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.nebulacafe.com/blog</link>
	<description>Development Blog</description>
	<lastBuildDate>Thu, 30 Jun 2011 14:18:55 +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>New game environments</title>
		<link>http://www.nebulacafe.com/blog/?p=300</link>
		<comments>http://www.nebulacafe.com/blog/?p=300#comments</comments>
		<pubDate>Thu, 30 Jun 2011 14:16:21 +0000</pubDate>
		<dc:creator>Bryce</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.nebulacafe.com/blog/?p=300</guid>
		<description><![CDATA[It&#8217;s time for a long-overdue status update. I&#8217;ve been doing a lot of work on SkyCars the past month. While the final push to finish the game is taking longer than I&#8217;d hoped, I&#8217;m feeling very positive about the results so far. There are a ton of gameplay improvements, which I hope to go over [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s time for a long-overdue status update.  I&#8217;ve been doing a lot of work on SkyCars the past month. While the final push to finish the game is taking longer than I&#8217;d hoped, I&#8217;m feeling very positive about the results so far.</p>
<p>There are a ton of gameplay improvements, which I hope to go over at some point. I also wrote a new ship explosion routine (when you crash) that causes the ship to break apart and explode depending on impact. But today I want to share some of the new environments I&#8217;ve created for game ambiance. So without further ado, enjoy the eye candy&#8230;</p>
<p><span id="more-300"></span></p>
<div id="attachment_305" class="wp-caption alignnone" style="width: 510px"><a href="http://www.nebulacafe.com/blog/?attachment_id=305" rel="attachment wp-att-305"><img src="http://www.nebulacafe.com/blog/wp-content/uploads/2011/06/sun-500x300.jpg" alt="" title="The Sun" width="500" height="300" class="size-medium wp-image-305" /></a><p class="wp-caption-text">The Sun</p></div>
<div id="attachment_304" class="wp-caption alignnone" style="width: 510px"><a href="http://www.nebulacafe.com/blog/?attachment_id=304" rel="attachment wp-att-304"><img src="http://www.nebulacafe.com/blog/wp-content/uploads/2011/06/neptune-500x300.jpg" alt="" title="Neptune" width="500" height="300" class="size-medium wp-image-304" /></a><p class="wp-caption-text">Neptune</p></div>
<div id="attachment_303" class="wp-caption alignnone" style="width: 510px"><a href="http://www.nebulacafe.com/blog/?attachment_id=303" rel="attachment wp-att-303"><img src="http://www.nebulacafe.com/blog/wp-content/uploads/2011/06/jupiter-500x300.jpg" alt="" title="Jupiter" width="500" height="300" class="size-medium wp-image-303" /></a><p class="wp-caption-text">Jupiter</p></div>
<div id="attachment_302" class="wp-caption alignnone" style="width: 510px"><a href="http://www.nebulacafe.com/blog/?attachment_id=302" rel="attachment wp-att-302"><img src="http://www.nebulacafe.com/blog/wp-content/uploads/2011/06/galaxy-500x300.jpg" alt="" title="Galaxy" width="500" height="300" class="size-medium wp-image-302" /></a><p class="wp-caption-text">Galaxy (Andromeda)</p></div>
<div id="attachment_301" class="wp-caption alignnone" style="width: 510px"><a href="http://www.nebulacafe.com/blog/?attachment_id=301" rel="attachment wp-att-301"><img src="http://www.nebulacafe.com/blog/wp-content/uploads/2011/06/earth-500x300.jpg" alt="" title="Earth" width="500" height="300" class="size-medium wp-image-301" /></a><p class="wp-caption-text">Earth</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.nebulacafe.com/blog/?feed=rss2&#038;p=300</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SkyCars video blog: Visual and audio effects, Score, Orbits, and Lava</title>
		<link>http://www.nebulacafe.com/blog/?p=285</link>
		<comments>http://www.nebulacafe.com/blog/?p=285#comments</comments>
		<pubDate>Fri, 27 May 2011 18:36:22 +0000</pubDate>
		<dc:creator>Bryce</dc:creator>
				<category><![CDATA[SkyCars]]></category>

		<guid isPermaLink="false">http://www.nebulacafe.com/blog/?p=285</guid>
		<description><![CDATA[Finally as promised, here is a SkyCars video blog! Here, I demonstrate earning points, including the accompanying sound/music effects. I also show some new visual tricks in the game. Finally, I show some of the features from the prior blog posts (orbits, lava, etc.), so you may want to view those first: Orbits in 3 [...]]]></description>
			<content:encoded><![CDATA[<p>Finally as promised, here is a SkyCars video blog! Here, I demonstrate earning points, including the accompanying sound/music effects. I also show some new visual tricks in the game. Finally, I show some of the features from the prior blog posts (orbits, lava, etc.), so you may want to view those first:</p>
<p><a title="Orbits in 3 Dimensions (tutorial)" href="http://www.nebulacafe.com/blog/?p=122">Orbits in 3 Dimensions (tutorial)</a><br />
<a title="Everybody loves lava" href="http://www.nebulacafe.com/blog/?p=103">Everybody loves lava</a></p>
<p>I haven&#8217;t focused on level design yet, so don&#8217;t expect it to look like a full game. I&#8217;ll also change the artwork for the in-game menu and HUD (heads up display). Anyhow, enjoy this preview of some neat game features!</p>
<p><span id="more-285"></span><br />
<iframe width="640" height="412" src="http://www.youtube.com/embed/LBX-v-ZTfww" frameborder="0" allowfullscreen></iframe></p>
<p>I hope to do more videos soon showing all of the features in SkyCars and SkyEdit (the included level editor), so check back soon!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nebulacafe.com/blog/?feed=rss2&#038;p=285</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Orbits in 3 Dimensions (tutorial)</title>
		<link>http://www.nebulacafe.com/blog/?p=122</link>
		<comments>http://www.nebulacafe.com/blog/?p=122#comments</comments>
		<pubDate>Thu, 19 May 2011 16:41:42 +0000</pubDate>
		<dc:creator>Bryce</dc:creator>
				<category><![CDATA[SkyCars]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.nebulacafe.com/blog/?p=122</guid>
		<description><![CDATA[I&#8217;ve been adding some neat features to SkyCars, including lasers, jump pads, and lava. But one of the most formidable development challenges so far has been orbits. By orbits, I&#8217;m talking about asteroids, comets, or even platforms that rotate around an arbitrary point in space. I&#8217;d like to share with you my solution for 3 [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been adding some neat features to SkyCars, including lasers, jump pads, and lava. But one of the most formidable development challenges so far has been orbits. By orbits, I&#8217;m talking about asteroids, comets, or even platforms that rotate around an arbitrary point in space. I&#8217;d like to share with you my solution for 3 dimensional orbits.</p>
<h3>Visualizing the orbit path</h3>
<p>Let us imagine an asteroid with a circular orbit of an arbitrary orientation (or axis angle).  We may visualize the orbit path like so:<br />
<span id="more-122"></span> <a rel="attachment wp-att-165" href="http://www.nebulacafe.com/blog/?attachment_id=165"><img class="alignnone size-full wp-image-165" title="Orbit path" src="http://www.nebulacafe.com/blog/wp-content/uploads/2011/05/diagram1.jpg" alt="" width="410" height="307" /></a><br />
Note that the asteroid has a circular orbit of radius <span style="color: #339966;"><strong>R</strong></span> around an origin point. At any given time, the asteroid will have the coordinates <span style="color: #339966;"><strong>(Rx, Ry, Rz)</strong></span>. We will treat <span style="color: #339966;"><strong>R</strong></span> as a vector from the center of the orbit&#8217;s path to the asteroid&#8217;s position. Applying the distance formula, we know that <span style="color: #339966;"><strong>R = sqrt ( Rx<sup>2</sup> + Ry<sup>2</sup> + Rz<sup>2</sup> )</strong></span>. However, we also know that <span style="color: #339966;"><strong>R</strong></span> casts a shadow (or projection) onto the x/z plane, which we will call <span style="color: #339966;"><strong>Rxz</strong></span>. We also know the distance of <span style="color: #339966;"><strong>Rxz = sqrt ( Rx<sup>2</sup> + Rz<sup>2</sup> )</strong></span>. This will be important later.</p>
<p>Now I&#8217;m going to jump ahead a bit so that we know what our goal is. If we want our asteroid to orbit the center point, we need to find out the orbit&#8217;s <span style="color: #ff6600;"><strong>normal vector (N)</strong></span>, which has <span style="color: #ff6600;"><strong>Nx, Ny, Nz</strong></span> components and also originates from the orbit path&#8217;s center.  Here&#8217;s what this looks like:<br />
<a rel="attachment wp-att-166" href="http://www.nebulacafe.com/blog/?attachment_id=166"><img class="alignnone size-full wp-image-166" title="Orbit normal" src="http://www.nebulacafe.com/blog/wp-content/uploads/2011/05/diagram2.jpg" alt="" width="410" height="307" /></a><br />
This vector describes an imaginary line perpendicular to the orbit plane. If we know the values of this vector, we can use a &#8220;rotate by axis angle&#8221; command on our asteroid. In Shiva, the command is simply:</p>
<pre>object.rotateAxisAngle ( hObject, nAxisX, nAxisY, nAxisZ, nAngle, kSpace )</pre>
<p>nAxisX, nAxisY, nAxisZ will take the values of <span style="color: #ff6600;"><strong>Nx, Ny, Nz</strong></span>. nAngle is the asteroid&#8217;s orbital angular velocity, and kSpace should be set to global. In other game engines, there are similar commands. If you do not have such libraries, <a href="http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToMatrix/index.htm">here is a good tutorial</a> on how to perform such rotations using a rotation matrix. Shiva users: As object.rotateAxisAngle does not accept position offsets, I had to parent the asteroid to a helper object placed in the center of the orbit.</p>
<p>Now let&#8217;s discuss how to get from our <span style="color: #339966;"><strong>asteroid vector R</strong></span> to the <span style="color: #ff6600;"><strong>normal vector N</strong></span>. Notice that <span style="color: #339966;"><strong>R</strong></span> and <span style="color: #ff6600;"><strong>N</strong></span> are orthogonal (perpendicular. You may be tempted to say that if we know <span style="color: #339966;"><strong>R</strong></span>, we can just rotate this vector back by 90 degrees to get <span style="color: #ff6600;"><strong>N</strong></span>. However, we do not have enough information because there are an <em>infinite number of normals orthogonal to <span style="color: #339966;"><strong>R</strong></span>!</em> Or if you prefer, we could spin <span style="color: #ff9900;"><strong>N</strong></span> around the <span style="color: #339966;"><strong>R</strong></span> axis by all values of the angle <span style="color: #ff00ff;"><strong>phi</strong></span> and still obtain an orthogonal normal. This is actually a good thing. We can choose our own value for <span style="color: #ff00ff;"><strong>phi</strong></span> and in effect choose the amount of bank or tilt in our orbit.</p>
<p>If we want to find <span style="color: #ff6600;"><strong>N</strong></span> which is orthogonal vector to <span style="color: #339966;"><strong>R</strong></span>, we can use the vector cross product. The cross product takes two input vectors (together which define a plane), and outputs an orthogonal vector (to this plane). <span style="color: #339966;"><strong>R</strong></span> is our first input vector; we can use <span style="color: #ff00ff;"><strong>phi</strong></span> to determine the necessary secondary vector which we will call <span style="color: #d6d600;"><strong>Q</strong></span>.</p>
<p>Let&#8217;s create a vector aligned with the Z+ axis called <span style="color: #000080;"><strong>Phi<sub>0</sub></strong></span>. First we&#8217;ll rotate it upward around the X axis by angle <span style="color: #ff00ff;"><strong>phi</strong></span> to reach an intermediate vector <span style="color: #3366ff;"><strong>Phi<sub>1</sub></strong></span>.</p>
<p><a rel="attachment wp-att-204" href="http://www.nebulacafe.com/blog/?attachment_id=204"><img class="alignnone size-full wp-image-204" title="Phi0 to Phi1" src="http://www.nebulacafe.com/blog/wp-content/uploads/2011/05/diagram31.jpg" alt="" width="410" height="307" /></a></p>
<p>Next, we&#8217;ll rotate this vector around the Y-axis so that it is tangent to the asteroid. The result of this second transformation will give us <span style="color: #d6d600;"><strong>Q</strong></span>.</p>
<p><a rel="attachment wp-att-208" href="http://www.nebulacafe.com/blog/?attachment_id=208"><img class="alignnone size-full wp-image-208" title="Phi1 to Q" src="http://www.nebulacafe.com/blog/wp-content/uploads/2011/05/diagram4.jpg" alt="" width="410" height="307" /></a></p>
<p>In order to perform this second transform, we need to know the angle of <span style="color: #339966;"><strong>Rxz</strong></span>. As this vector is composed of <span style="color: #339966;"><strong>Rx</strong></span> and <span style="color: #339966;"><strong>Rz</strong></span>, we can determine the angle we need to rotate <span style="color: #3366ff;"><strong>Phi<sub>1</sub></strong></span> by to get <span style="color: #d6d600;"><strong>Q</strong></span>, or angle <span style="color: #86e000;"><strong>rho</strong></span>. While we do not need to calculate this angle, we do need to make note of the following identities:</p>
<p style="padding-left: 30px;"><em>sin</em> <span style="color: #86e000;"><strong>rho</strong></span> = <span style="color: #339966;"><strong>Rz </strong></span>/ <span style="color: #339966;"><strong>Rxz</strong></span><br />
<em>cos</em> <span style="color: #86e000;"><strong>rho</strong></span> = <span style="color: #339966;"><strong>Rx </strong></span>/ <span style="color: #339966;"><strong>Rxz</strong></span></p>
<p>Also remember that <span style="color: #339966;"><strong>Rxy = sqrt ( Rx<sup>2</sup> + Rz<sup>2</sup> )</strong></span> and that <span style="color: #339966;"><strong>Rx</strong></span> and <span style="color: #339966;"><strong>Rz</strong></span> are given.<br />
Doing a little mathemagics, we can determine the components of <span style="color: #d6d600;"><strong>Q</strong></span>. The transformation from <span style="color: #000080;"><strong>Phi<sub>0</sub></strong></span> to <span style="color: #3366ff;"><strong>Phi<sub>1</sub></strong></span> has the components:</p>
<p style="padding-left: 30px;">( 0, <em>sin</em> <span style="color: #ff00ff;"><strong>phi</strong></span>, <em>cos</em> <span style="color: #ff00ff;"><strong>phi </strong></span>)</p>
<p>When we add in the second transformation, the resultant vector <span style="color: #d6d600;"><strong>Q</strong></span> takes on the form:</p>
<p style="padding-left: 30px;">( <em>cos</em> <span style="color: #ff00ff;"><strong>phi </strong></span>* <em>sin</em> <span style="color: #86e000;"><strong>rho</strong></span>,<br />
<em>sin</em> <span style="color: #ff00ff;"><strong>phi</strong></span>,<br />
<em>cos</em> <span style="color: #ff00ff;"><strong>phi</strong></span> * <em>cos</em> <span style="color: #86e000;"><strong>rho</strong></span> )</p>
<p>We can simplify further using substitution:</p>
<p style="padding-left: 30px;">( <em>cos</em> <span style="color: #ff00ff;"><strong>phi </strong></span>* <span style="color: #339966;"><strong>Rz</strong> </span>/ <span style="color: #339966;"><strong>Rxz</strong><strong> </strong></span>,<br />
<em>sin</em> <span style="color: #ff00ff;"><strong>phi</strong></span>,<br />
<em>cos</em> <span style="color: #ff00ff;"><strong>phi</strong></span> * <span style="color: #339966;"><strong>Rx</strong></span> <span style="color: #86e000;"><strong> </strong></span>/ <span style="color: #339966;"><strong>Rxz </strong></span>)</p>
<p>Also note that <span style="color: #d6d600;"><strong>Q</strong></span> is now tangent to the asteroid&#8217;s orbit. This means that we now have two valid input vectors, <span style="color: #d6d600;"><strong>Q</strong></span> and <span style="color: #339966;"><strong>R</strong></span>, which describe the plane of the orbit path! We can now use the vector cross product to solve for <span style="color: #ff6600;"><strong>N</strong></span>:</p>
<p style="padding-left: 30px;"><span style="color: #ff6600;"><strong>N </strong></span>= <span style="color: #d6d600;"><strong>Q</strong></span> <strong>×</strong> <span style="color: #339966;"><strong>R</strong></span></p>
<p>Don&#8217;t forget to normalize <span style="color: #ff6600;"><strong>N</strong></span> (scale the vector to a magnitude of 1) when we&#8217;re done solving. Now just rotate the asteroid about the normal, which is the axis angle for our orbit path! We&#8217;re done.</p>
<h3>The code</h3>
<p>In Shiva, this all looks somewhat like this:</p>
<pre>-- When initializing your rotating object:
local Rxz = math.sqrt ( Rx*Rx + Rz*Rz )
local Qx = math.cos ( phi ) * Rz/Rxz
local Qy = math.sin ( phi )
local Qz = math.cos ( phi ) * Rx/Rxz

local Nx, Ny, Nz = math.vectorNormalize (
   math.vectorCrossProduct ( Qx, Qy, Qz, Rx, Ry, Rz )
)

-- Store Nx, Ny, Nz somewhere. During the game loop, rotate the object using:
object.rotateAxisAngle ( hObject, Nx, Ny, Nz, dR, object.kGlobalSpace )

-- note: dR is the orbit speed that you choose.</pre>
<h3>A few final thoughts&#8230;</h3>
<p>We have created a function that allows an object to orbit in a circular path of any orientation around a center point. However, if we choose a center point directly above the object, we cannot use the above method perform an orbit because vectors <span style="color: #339966;"><strong>R</strong></span> and <span style="color: #d6d600;"><strong>Q</strong></span> will either be identical or incorrect, meaning that <span style="color: #ff6600;"><strong>N</strong></span> cannot be computed. A similar problem may occur with a center point directly below the object. I resolved this issue by manually setting appropriate values for <span style="color: #d6d600;"><strong>Q</strong></span> so that it is parallel to the x/z plane.</p>
<p>If you see &#8220;circular path&#8221; as a constraint, you can achieve elliptical paths by having a center point that moves with time. Specifically, you would want a center point that moves back and forth along a line. The velocity of the center point along this line should be sinusoidal, with the same frequency (or dR) and phase as your orbit. You could even have the center point of your orbit move on an arbitrary path to create a complex orbit, such as a moon orbiting a planet orbiting a sun.</p>
<p>I would like to thank my good friend Kyle Jewhurst for helping me work through and verify the math on this topic. Also now that I&#8217;ve nailed down the orbit code, videos of SkyCars are coming soon!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nebulacafe.com/blog/?feed=rss2&#038;p=122</wfw:commentRss>
		<slash:comments>66</slash:comments>
		</item>
		<item>
		<title>Everybody loves lava</title>
		<link>http://www.nebulacafe.com/blog/?p=103</link>
		<comments>http://www.nebulacafe.com/blog/?p=103#comments</comments>
		<pubDate>Sun, 08 May 2011 09:06:47 +0000</pubDate>
		<dc:creator>Bryce</dc:creator>
				<category><![CDATA[SkyCars]]></category>

		<guid isPermaLink="false">http://www.nebulacafe.com/blog/?p=103</guid>
		<description><![CDATA[Now that I have most of the core SkyCars engine developed, I&#8217;ve been working on one part of the game that has been left behind a bit: Art. Especially environmental, ambient, mood-setting art. It&#8217;s my firm belief that lava, when used sparingly, injects life and vibrancy into a scene. I especially like the combination of [...]]]></description>
			<content:encoded><![CDATA[<p>Now that I have most of the core SkyCars engine developed, I&#8217;ve been working on one part of the game that has been left behind a bit: Art.  Especially environmental, ambient, mood-setting art.  It&#8217;s my firm belief that lava, when used sparingly, injects life and vibrancy into a scene.  I especially like the combination of lava with organic rocky terrains, and with brutalist industrial tech architecture.  Yes it&#8217;s cliché, but lava is found in many games for a good reason.</p>
<p>There&#8217;s good lava and bad lava.  Bad lava is generic, semi-uniform, blurry, and orange.  Good lava is a bit more difficult to create.  Good lava oozes and flows, has different layers, is high-contrast, is emissive, and looks dangerous!  I&#8217;ve tried to create good lava in SkyCars, which is a bit challenging given the graphical constraints of mobile devices.</p>
<p><span id="more-103"></span></p>
<p><a rel="attachment wp-att-107" href="http://www.nebulacafe.com/blog/?attachment_id=107"><img class="alignnone size-medium wp-image-107" title="Lava them and leave them!" src="http://www.nebulacafe.com/blog/wp-content/uploads/2011/05/SkyCars_lava1-464x300.jpg" alt="" width="464" height="300" /></a></p>
<p>It&#8217;s not perfect, but I think it works well in this situation.  The lava actually looks much cooler in-game because it has overlapping animated layers, glows, and cascades nicely over the edges of the rocks and platforms. Here&#8217;s a general description of how I created this effect.</p>
<ol>
<li>Create a lava texture using Photoshop.  Rendering difference clouds using bright yellow and orange works well.  I then drew in more details, such as dark spots and corrections.  The clone stamp brush works well here, as well as the burn tool.  Make sure the texture tessellates on all sides! Save this as &#8220;lava1.png&#8221;</li>
<li>Duplicate the texture, rotate it by 90 degrees, and manually modify it so it&#8217;s not identical to the first.  Perhaps give it more mids and darks than the original texture.  Save this as &#8220;lava2.png&#8221;</li>
<li>Create your lava material. Because I&#8217;m developing for mobile, I can&#8217;t use any shader effects.  For performance reasons, I opted not to apply ripples (geometric or procedural texture-based) to the surface of the lava.  Create 2 layers in your material using your lava1 and lava2 textures.  Set the blend mode to &#8220;modulate.&#8221;</li>
<li>Give each layer it&#8217;s own scrolling animation.  I gave both layers a repeating sinusoidal translation in UV coordinates.  I made sure the parameters were different for the U and V axes (or X and Y if you prefer), as well as for each layer.  For the cascade (lava fall) material, I did the same thing as above, but changed one of the axes (V in this case) to a sawtooth motion so that it scrolls seamlessly.</li>
</ol>
<p>I hope this helps somebody.  Video blogs are coming soon!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nebulacafe.com/blog/?feed=rss2&#038;p=103</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Doing crazy things with entity attributes, materials</title>
		<link>http://www.nebulacafe.com/blog/?p=96</link>
		<comments>http://www.nebulacafe.com/blog/?p=96#comments</comments>
		<pubDate>Wed, 04 May 2011 02:26:13 +0000</pubDate>
		<dc:creator>Bryce</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.nebulacafe.com/blog/?p=96</guid>
		<description><![CDATA[Just incorporated entity attributes into SkyCars and SkyEdit. Now, you can set initial rotation, angular velocity, and a few other attributes for certain entities. This will allow asteroids to rotate around convincingly, as well as allow for some interesting moving obstacles. The difficulty was settling on a data format that was robust enough to allow [...]]]></description>
			<content:encoded><![CDATA[<p>Just incorporated entity attributes into SkyCars and SkyEdit. Now, you can set initial rotation, angular velocity, and a few other attributes for certain entities. This will allow asteroids to rotate around convincingly, as well as allow for some interesting moving obstacles.</p>
<p><span id="more-96"></span></p>
<p><a rel="attachment wp-att-99" href="http://www.nebulacafe.com/blog/?attachment_id=99"><img class="aligncenter size-thumbnail wp-image-99" title="Entity Attributes" src="http://www.nebulacafe.com/blog/wp-content/uploads/2011/05/attributes-500x291.jpg" alt="" width="500" height="291" /></a></p>
<p>The difficulty was settling on a data format that was robust enough to allow any sort of action or property going forward, not just hard coding rotation into the game. The hardest part was determining what SkyEdit should do when you (for example) create an asteroid, apply some properties (like rotation, speed, etc), <em>then</em> change the entity into something else entirely (like a warpgate). Which of these properties must be thrown out, which will translate into equivalent properties, etc? And imagine the headaches when determining the proper behavior for a <strong>group</strong> of different entities!</p>
<p>I also coded in a general-case material editor for entities, so that you can easily change the appearance of blocks in the editor (glass, metal, grating, etc).  I&#8217;m trying to make everything as user-friendly as possible, which is partly why it&#8217;s taking so long to finish the project!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nebulacafe.com/blog/?feed=rss2&#038;p=96</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A sneak peek at SkyCars</title>
		<link>http://www.nebulacafe.com/blog/?p=22</link>
		<comments>http://www.nebulacafe.com/blog/?p=22#comments</comments>
		<pubDate>Fri, 29 Apr 2011 06:46:14 +0000</pubDate>
		<dc:creator>Bryce</dc:creator>
				<category><![CDATA[SkyCars]]></category>

		<guid isPermaLink="false">http://www.nebulacafe.com/blog/?p=22</guid>
		<description><![CDATA[As promised, here&#8217;s a sneak peek at SkyCars. The game is still in development, so things will likely change before the game is released. &#160; &#160; &#160; I&#8217;ll post more screenshots soon, probably showcasing the built-in level editor and more gameplay!]]></description>
			<content:encoded><![CDATA[<p>As promised, here&#8217;s a sneak peek at SkyCars. The game is still in development, so things will likely change before the game is released.</p>
<p><span id="more-22"></span></p>
<div id="attachment_28" class="wp-caption alignnone" style="width: 510px"><a rel="attachment wp-att-28" href="http://www.nebulacafe.com/blog/?attachment_id=28"><img class="size-thumbnail wp-image-28" title="3-28-SkyCars-preview-01" src="http://www.nebulacafe.com/blog/wp-content/uploads/2011/04/3-28-SkyCars-preview-014-500x300.jpg" alt="" width="500" height="300" /></a><p class="wp-caption-text">SkyCars opening scene</p></div>
<p>&nbsp;</p>
<div id="attachment_29" class="wp-caption alignnone" style="width: 510px"><a rel="attachment wp-att-29" href="http://www.nebulacafe.com/blog/?attachment_id=29"><img class="size-thumbnail wp-image-29" title="3-28-SkyCars-preview-02" src="http://www.nebulacafe.com/blog/wp-content/uploads/2011/04/3-28-SkyCars-preview-021-500x300.jpg" alt="" width="500" height="300" /></a><p class="wp-caption-text">Level selection</p></div>
<p>&nbsp;</p>
<div id="attachment_30" class="wp-caption alignnone" style="width: 510px"><a rel="attachment wp-att-30" href="http://www.nebulacafe.com/blog/?attachment_id=30"><img class="size-thumbnail wp-image-30" title="3-28-SkyCars-preview-03" src="http://www.nebulacafe.com/blog/wp-content/uploads/2011/04/3-28-SkyCars-preview-03-500x300.jpg" alt="" width="500" height="300" /></a><p class="wp-caption-text">In game</p></div>
<p>&nbsp;</p>
<p>I&#8217;ll post more screenshots soon, probably showcasing the built-in level editor and more gameplay!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nebulacafe.com/blog/?feed=rss2&#038;p=22</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New website is online. Any suggestions?</title>
		<link>http://www.nebulacafe.com/blog/?p=11</link>
		<comments>http://www.nebulacafe.com/blog/?p=11#comments</comments>
		<pubDate>Thu, 28 Apr 2011 04:48:41 +0000</pubDate>
		<dc:creator>Bryce</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.nebulacafe.com/blog/?p=11</guid>
		<description><![CDATA[After much toiling, I finally pushed out the new NebulaCafe website. It was a bit of a chore getting WordPress integrated with my site, but hopefully everything is running smoothly now. Still need to get jQuery loaded properly from the post scraper I hacked together on the main Blog page, but otherwise I&#8217;m pretty pleased [...]]]></description>
			<content:encoded><![CDATA[<p>After much toiling, I finally pushed out the new NebulaCafe website. It was a bit of a chore getting WordPress integrated with my site, but hopefully everything is running smoothly now. Still need to get jQuery loaded properly from the post scraper I hacked together on the main Blog page, but otherwise I&#8217;m pretty pleased with it.</p>
<p>Please let me know if you have any suggestions. Also, I hope to post some screen shots and perhaps even some video logs of SkyCars in action!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nebulacafe.com/blog/?feed=rss2&#038;p=11</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Integrating WordPress into the website</title>
		<link>http://www.nebulacafe.com/blog/?p=6</link>
		<comments>http://www.nebulacafe.com/blog/?p=6#comments</comments>
		<pubDate>Tue, 26 Apr 2011 05:36:03 +0000</pubDate>
		<dc:creator>Bryce</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.nebulacafe.com/blog/?p=6</guid>
		<description><![CDATA[Today I&#8217;ll be testing WordPress by integrating it into my website. Hopefully everything will work out well!]]></description>
			<content:encoded><![CDATA[<p>Today I&#8217;ll be testing WordPress by integrating it into my website. Hopefully everything will work out well!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nebulacafe.com/blog/?feed=rss2&#038;p=6</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
