<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF
	xmlns="http://purl.org/rss/1.0/"
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel rdf:about="http://feeds.garagegames.com/rss/blogs/developer/8341/">
		<title>Blog for David \&amp;quot;Fulcrum\&amp;quot; Wyand at GarageGames.com</title>
		<description>Blog feeds for Gamers and Developers in the GarageGames community.</description>
		<link>http://www.garagegames.com/</link>
		<image rdf:resource="http://www.garagegames.com/images/GarageGames_logo_small_w.gif" />
		<dc:date>2008-11-19T23:01:49+00:00</dc:date>
		<items>
			<rdf:Seq>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/8341/14196"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/8341/14163"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/8341/13701"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/8341/13697"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/8341/13656"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/8341/12677"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/8341/10839"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/8341/10307"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/8341/10106"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/8341/9833"/>
			</rdf:Seq>
		</items>
	</channel>
	<item rdf:about="http://www.garagegames.com/blogs/8341/14196">
		<dc:format>text/html</dc:format>
		<dc:date>2008-01-24T22:43:45+00:00</dc:date>
		<dc:creator>David \&amp;quot;Fulcrum\&amp;quot; Wyand</dc:creator>
		<title>Amazon EC2 Torque Test Follow Up</title>
		<link>http://www.garagegames.com/blogs/8341/14196</link>
		<description>&lt;b&gt;DISCLAIMER: This is a personal project undertaken by me, David Wyand. It does not represent work being performed by GarageGames, nor is it an indication of any future product releases.&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;br&gt;Last week I &lt;a href='http://www.garagegames.com/blogs/8341/14163'&gt;wrote a blog&lt;/a&gt; describing how I set up a dedicated TGE 1.5.2 server using &lt;a href='http://www.amazon.com/b/ref=sc_fe_l_2?ie=UTF8&amp;amp;node=201590011&amp;amp;no=3435361&amp;amp;me=A36L942TSJ2AJA' target=_blank&gt;Amazon's EC2 service&lt;/a&gt;.  I then went on to ask the community to help in stress testing the server.  This blog gives the results of this testing.&lt;br&gt;&lt;br&gt;&lt;b&gt;Executive Summary&lt;/b&gt;&lt;br&gt;The Amazon EC2 virtual server hosting the TGE 1.5.2 dedicated game server remained operational for the testing period (and has been up for nearly a month), and the TGE server process itself ran without any issues.  Unfortunately only 4 (!) people showed up for the stress test.  The good news is that it appears the Amazon EC2 server had no problems with hosting an active FPS game for that number of players and provided an experience on par with a dedicated server.&lt;br&gt;&lt;br&gt;&lt;b&gt;Server Data Collection&lt;/b&gt;&lt;br&gt;To help collect game server statistics during the stress test, I set up a separate Amazon EC2 server with MySQL and an Apache web server to display the real time data.  This was accessible through the forwarding address of &lt;a href='http://www.torquetest.info' target=_blank&gt;www.torquetest.info&lt;/a&gt; for anyone to see.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/ec2/2008-01-24-AmazonEC2WebCharts.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;Charts of the data collected during the stress testing hour&lt;/i&gt;&lt;br&gt;&lt;br&gt;The data was collected on the game server and sent to the MySQL server every 10 seconds using a separate Python process.  A diagram of this setup may be found on my previous &lt;a href='http://www.garagegames.com/blogs/8341/14163'&gt;blog&lt;/a&gt;.  I'll talk a little about each of the charts and what they are showing.&lt;br&gt;&lt;br&gt;&lt;i&gt;Torque EC2 Network Traffic&lt;/i&gt;&lt;br&gt;This graph shows the transmitted and received bytes per second for the gaming server itself (the server's eth0 port).  This is compared against the number of connected players as reported by the TGE server process (the &lt;i&gt;$Server::PlayerCount&lt;/i&gt; global script variable).  You may see the expected correlation between connected players and bandwidth used.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/ec2/2008-01-24-AmazonEC2ServerBandwidthChart.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;Bandwidth and player chart produced from the collected statistics in Microsoft Excel&lt;/i&gt;&lt;br&gt;&lt;br&gt;During the testing hour we tried to keep fairly active.  Constant firing of crossbow bolts and running around.  You'll notice that around 18:25 a lowering of the bandwidth used.  I believe during this time we stopped shooting at each and had a chat.  Of course the truce didn't last long.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/ec2/2008-01-24-AmazonEC2Orcs.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;Are you feeling lucky, punk?&lt;/i&gt;&lt;br&gt;&lt;br&gt;This ended up as the only server-side graph to produce any practical results.&lt;br&gt;&lt;br&gt;&lt;i&gt;Torque Server Packet Round Trip Time&lt;/i&gt;&lt;br&gt;The idea behind this chart is to display the minimum and maximum round trip (ping) packet time for all clients.  I was hoping it would provide some indication of when a player could be lagging.  Unfortunately it didn't work out as well as I hoped.&lt;br&gt;&lt;br&gt;The main problem lies with the fact that if the TGE client is not the front window it introduces a Sleep() into the event loop.  This causes it to process and acknowledge network packets at a much slower rate than normal.  So if someone brings a web page window forward for example, then from the server's point of view that game client will begin to lag.  This makes it impossible to differentiate between true client lag, and just an end user's normal use of their computer, using this method.&lt;br&gt;&lt;br&gt;&lt;i&gt;Torque Server Main Loop&lt;/i&gt;&lt;br&gt;This chart displays how each 10 second time slice is divided between the tasks of the server's main event loop as found in &lt;i&gt;DemoGame::main()&lt;/i&gt;'s &lt;i&gt;while(Game-&amp;gt;isRunning()){}&lt;/i&gt; section.  The thought behind this is that as the game server is loaded down, some of these tasks will take more than their fair share of the processing time.  In the chart the greedy task's colour area would increase at the expense of the other tasks.&lt;br&gt;&lt;br&gt;Unfortunately with the tiny number of players during the stress test time I was never able to test this hypothesis.  As you may see in the chart above, the time allocated to each event loop task remained fairly constant throughout the hour.&lt;br&gt;&lt;br&gt;&lt;i&gt;Torque Server Tick Load&lt;/i&gt;&lt;br&gt;This one is similar to the main loop chart above but focuses on 'ticks'.  Over any given 10 second period the number of ticks processed on the server should be fairly consistent.  If for some reason a tick has been missed, then all queued ticks are processed at once (but in order) until the server catches up.  This is done in &lt;i&gt;ProcessList::advanceServerTime()&lt;/i&gt; where &lt;i&gt;advanceObjects()&lt;/i&gt; is called.  What I was attempting to determine here was when the server was slipping due to load and had to catch up.&lt;br&gt;&lt;br&gt;Interestingly when you look at the chart the number of tick loop calls is consistently less than the number of ticks processed.  This means that more than one tick is processed per loop call as the server catches up.  I hadn't expected this and don't know if this is a normal operation.  I would have to test this on a dedicated server to know for sure.&lt;br&gt;&lt;br&gt;Unfortunately as with the main loop chart above, the number of players was not enough to place a real load on the server.  So I don't know if this set of statistics would provide any useful information while under load.&lt;br&gt;&lt;br&gt;&lt;b&gt;Client Data Collection&lt;/b&gt;&lt;br&gt;For the stress test I modified my TGE 1.5.2 client to write out all data as produced by &lt;i&gt;NetGraph::updateStats()&lt;/i&gt; for the NetGraph GUI (press 'n' to open and close the graph).  This was written to a comma delimited file and included the following information:&lt;br&gt;&lt;br&gt;- Active Ghosts&lt;br&gt;- Ghost Updates&lt;br&gt;- Bits Sent&lt;br&gt;- Bits Received&lt;br&gt;- Ping&lt;br&gt;- Packet Loss&lt;br&gt;&lt;br&gt;I imported this data into Excel and decided to produce a graph of &lt;i&gt;Active Ghosts&lt;/i&gt;, &lt;i&gt;Ping&lt;/i&gt; and number of clients on the server to see if there was any correlation.  It is worth noting that &lt;i&gt;Packet Loss&lt;/i&gt; was zero during the stress test.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/ec2/2008-01-24-AmazonEC2ClientActivityChart.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;Client data plotted with number of connected clients on the server&lt;/i&gt;&lt;br&gt;&lt;br&gt;As I would expect, the number of active ghosts fluctuated during the test as people fired their weapons and caused general mayhem.  Also my ping (as calculated by TGE using packet time to acknowledge) didn't appear to vary by the number of players.  Note that where there are gaps in my client's ping data the next mission was loading.  So we played two full Stronghold missions during the stress test.&lt;br&gt;&lt;br&gt;As with all of the other graphs, the number of players doesn't appear to have loaded my client to any degree.  So the collected data doesn't help with determining the Amazon virtual server's capabilities.&lt;br&gt;&lt;br&gt;&lt;b&gt;TGE Issues&lt;/b&gt;&lt;br&gt;Two issues did crop up with TGE during my month long run with the Amazon EC2 servers, but I have not investigated them:&lt;br&gt;&lt;br&gt;&lt;i&gt;Negative Connected Players&lt;/i&gt;&lt;br&gt;While leaving the TGE 1.5.2 game server up and running for a number of days, I would see a phantom disconnect in the console.log when no one is actually connected.  This would drop &lt;i&gt;$Server::PlayerCount&lt;/i&gt; to a negative value.  When this occurred the server would no longer show up in a TGE client's server list.&lt;br&gt;&lt;br&gt;In looking on my GG Master Server Monitor at &lt;a href='http://www.gnometech.com' target=_blank&gt;www.gnometech.com&lt;/a&gt; the server would show up as '255/64' players.  I often see a number of servers in this state within my monitor, so I suspect this is a general problem somewhere in the net code.&lt;br&gt;&lt;br&gt;&lt;i&gt;Ghost Count Always Increasing Between Missions&lt;/i&gt;&lt;br&gt;If you take a look at my &lt;i&gt;Client Activity&lt;/i&gt; graph above you'll notice something wrong with the &lt;i&gt;Active Ghosts&lt;/i&gt; value.  It does not reset itself between mission restarts.  I don't know if this is an actual problem with not releasing ghost objects or just a reporting issue with the NetGraph code.  I only came across this while producing my graph.&lt;br&gt;&lt;br&gt;&lt;b&gt;Conclusions&lt;/b&gt;&lt;br&gt;I've come to three conclusion based on the stress test:&lt;br&gt;&lt;br&gt;1. It is possible to run a TGE 1.5.2 dedicated server on the Amazon EC2 service.&lt;br&gt;2. The &lt;i&gt;small instance&lt;/i&gt; Amazon EC2 virtual server successfully handles up to 4 players.&lt;br&gt;3. The upper limits of the &lt;i&gt;small instance&lt;/i&gt; Amazon EC2 virtual server were not reached.&lt;br&gt;&lt;br&gt;&lt;b&gt;Available Data&lt;/b&gt;&lt;br&gt;I'm making available the data I used to produce my graphs above.  It is in Microsoft Excel format and includes all collected server data for January 17th (24 hours worth) and all of my collected client data during the stress test.  You may download the ZIP file &lt;a href='http://www.gnometech.com/torque/files/ec2/2008-01-17-AmazonEC2Test.zip' target=_blank&gt;here&lt;/a&gt;.&lt;br&gt;&lt;br&gt;&lt;b&gt;Thank-you&lt;/b&gt;&lt;br&gt;I wanted to thank those that came out for the stress test:&lt;br&gt;&lt;br&gt;- warme (MEX)&lt;br&gt;- Dunsany&lt;br&gt;- JeremyA&lt;br&gt;- Gnometech (that's me! :o)&lt;br&gt;&lt;br&gt;&lt;b&gt;Looking to the Future&lt;/b&gt;&lt;br&gt;I'd like to attempt another stress test in the near future and hopefully get more people involved.  I have another project that requires my attention for the next month or two, so any additional testing will have to wait until then.&lt;br&gt;&lt;br&gt;I'll leave my two servers up until Monday for anyone that wants to try them out.  The game server is &lt;i&gt;Amazon EC2 Test&lt;/i&gt; and the real-time web statistics are at &lt;a href='http://www.torquetest.info' target=_blank&gt;www.torquetest.info&lt;/a&gt; where you'll be forwarded to the actual Amazon web server.&lt;br&gt;&lt;br&gt;Thanks!&lt;br&gt;&lt;br&gt;- LightWave Dave</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/8341/14163">
		<dc:format>text/html</dc:format>
		<dc:date>2008-01-16T06:26:25+00:00</dc:date>
		<dc:creator>David \&amp;quot;Fulcrum\&amp;quot; Wyand</dc:creator>
		<title>Torque on Amazon's EC2.  Need your help!</title>
		<link>http://www.garagegames.com/blogs/8341/14163</link>
		<description>&lt;b&gt;DISCLAIMER: This is a personal project undertaken by me, David Wyand. It does not represent work being performed by GarageGames, nor is it an indication of any future product releases.&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;br&gt;For a while now I've been curious as to viability of Amazon's EC2 service for running a game server.  Specifically TGE 1.5.2 under a flavour of Linux.  In this blog I'll describe how I've done exactly that, and at the end is a request for your help in testing this out.&lt;br&gt;&lt;br&gt;&lt;b&gt;What is Amazon's EC2&lt;/b&gt;&lt;br&gt;&lt;a href='http://www.amazon.com/b/ref=sc_fe_l_2?ie=UTF8&amp;amp;node=201590011&amp;amp;no=3435361&amp;amp;me=A36L942TSJ2AJA' target=_blank&gt;Amazon's Elastic Compute Cloud (EC2)&lt;/a&gt; is a web service that allows you to bring online a virtual server (instance) within minutes.  You only pay for the instance-hours and bandwidth that you actually consume.  An instance starts up with an &lt;i&gt;Amazon Machine Image (AMI)&lt;/i&gt; that contains your Linux OS, applications, libraries, etc. that you've set up and stored in your &lt;a href='http://www.amazon.com/S3-AWS-home-page-Money/b/ref=sc_fe_l_2?ie=UTF8&amp;amp;node=16427261&amp;amp;no=3435361&amp;amp;me=A36L942TSJ2AJA' target=_blank&gt;Amazon S3&lt;/a&gt; account.  You may also make use of a number of pre-configured AMI's as a starting point.&lt;br&gt;&lt;br&gt;This &lt;i&gt;instant-on&lt;/i&gt; flexibility has the potential to be a great boon to a game designed to take advantage of it.  You could add or remove servers as the player load demands.  You could also recover in minutes from a hardware failure by using a custom AMI, rather than the hours or days it could take with a typical dedicated server.  Using the service for occasional test servers would also take advantage of this flexibility.&lt;br&gt;&lt;br&gt;This flexibility does come with a cost however.  If you were to compare the monthly cost of running a single Amazon EC2 virtual server to that of a typical dedicated game server, you'll find that the EC2 server costs more (based on my research).  To get the most for your money your application will need to take advantage of the service's strengths.&lt;br&gt;&lt;br&gt;There is also the question of whether or not the Amazon EC2 cloud, typically used for web services, is set up to handle a game server.  This is what I'm hoping to find out in this little experiment of mine.&lt;br&gt;&lt;br&gt;&lt;b&gt;Setting up a Torque Server&lt;/b&gt;&lt;br&gt;As my Linux Fu is definitely at the white belt level, I had been hesitant to set up a dedicated TGE server under Amazon's EC2.  However two articles pushed me over the edge to give it a try:&lt;br&gt;&lt;br&gt;* &lt;a href='http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1065&amp;amp;categoryID=101' target=_blank&gt;Ubuntu 7.10 Gutsy Base Install&lt;/a&gt; - Run my preferred Linux variant on EC2&lt;br&gt;* &lt;a href='http://dotnetrehab.blogspot.com/2007/04/vnc-on-ubuntu-feisty.html' target=_blank&gt;VNC on Ubuntu Feisty&lt;/a&gt; - To break free of the command line.&lt;br&gt;&lt;br&gt;With those in hand I set up an Amazon EC2 &lt;i&gt;small instance&lt;/i&gt; (single, virtual 32-bit CPU) with the appropriate packages to compile a TGE 1.5.2 dedicated server.  Everything went smoothly and it wasn't long before I had a dedicated server up and running.  Unfortunately I couldn't connect to it from my PC.&lt;br&gt;&lt;br&gt;At first I thought I hadn't set up the EC2 firewall correctly to allow the appropriate ports through.  I wrote a tiny (8 lines I believe) Twisted Python-based UDP server to listen on the port.  Sure enough I saw the messages from my TGE client attempting to connect, so the firewall was fine.&lt;br&gt;&lt;br&gt;After some digging I found the problem was a Sleep() call in Platform::process() in x86UNIXWindow.cc.  It was causing a 2 second delay in the TGE event loop rather than the milliseconds it should have.  Checking the forums I see this has been an issue in the past, although it looked to have been corrected for most people.  Not being a Linux expert I don't know why I had this issue.  Was it Ubuntu?  The kernel being used by EC2?  The fact I was on a virtual server?&lt;br&gt;&lt;br&gt;Fortunately the fix was easy: remove the Sleep().  It pegs the server at 100% CPU usage, but that is fine for my little experiment.  I'll leave this for a future debug session (or for a Linux expert).&lt;br&gt;&lt;br&gt;So in summary: It worked!  I was running through the demo Stronghold mission giving Kork a hard time.&lt;br&gt;&lt;br&gt;&lt;b&gt;Give it a Go Yourself&lt;/b&gt;&lt;br&gt;I'm going to leave the server up for a few days so feel free to drop in and try it out.  Use the TGE 1.5.2 demo's &lt;i&gt;Starter.fps&lt;/i&gt; game and join the &lt;i&gt;Amazon EC2 Test&lt;/i&gt; server.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/ec2/2008-01-15-AmazonEC2TestServer.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;If for some reason you cannot find it, you may use my GarageGames' Master Server Monitor to help determine if the issue is at your end.  Head to &lt;a href='http://www.gnometech.com' target=_blank&gt;www.gnometech.com&lt;/a&gt; and click on the &lt;i&gt;open monitor&lt;/i&gt; link on the left.  This will open the server monitor window.  Click on the &lt;i&gt;FPS Starter Kit&lt;/i&gt; blue arrow and you should see the server listed.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/ec2/2008-01-15-AmazonEC2TestMonitor.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;But can it Handle the Load&lt;/b&gt;&lt;br&gt;Since I've had my game server up for the last couple of weeks, I've had up to four people in and shooting at each other.  From my perspective the user experience was smooth without any noticeable lag.  To help with my testing I wanted to be able to pull some statistics from the server.  Bandwidth usage, number of players, event loop processing speed, etc.&lt;br&gt;&lt;br&gt;I decided that the best way of presenting this real-time data was through a web interface.  But I didn't want to skew the results by using the game server to present this data -- especially the bandwidth usage.  So I set up another Amazon EC2 instance to act as my presenter.  Here's how I have it all set up:&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/ec2/2008-01-15-AmazonEC2Diagram.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;On the left is the game server.  It includes the TGE dedicated server, as well as a Twisted Python process to collect the statistics and send them to the web server.  On the right is a typical Apache web server running under Ubuntu, with some custom PHP scripts to make the real-time JpGraph-generated charts work.  One item not shown is that I'm using MySQL to store the statistics.  The two servers communicate over Amazon's internal network so that bandwidth usage is free.  Here's what the real-time graphs look like under IE6 with me connected to the game server:&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/ec2/2008-01-15-AmazonEC2Alpha.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;You too can take a look at this data while running around my game server.  Go to &lt;a href='http://www.torquetest.info' target=_blank&gt;www.torquetest.info&lt;/a&gt; which will forward you to the EC2 web server.  Set how often you'd like the graphs to redraw at the bottom of the page.  Then run around the Stronghold mission and see how the network usage changes as you shoot at poor Kork.&lt;br&gt;&lt;br&gt;&lt;b&gt;A Call for Help&lt;/b&gt;&lt;br&gt;I'd really like to bang on this Amazon EC2 server to see how it holds up.  To do this I'll need a lot of players on at once.  This means you! :o)  Here's the details:&lt;br&gt;&lt;br&gt;When: &lt;b&gt;Thursday January 17th at 9:00pm EST (6:00pm PST) for an hour&lt;/b&gt;&lt;br&gt;Where: &lt;b&gt;Amazon EC2 Test server&lt;/b&gt;&lt;br&gt;Using: &lt;b&gt;Standard TGE 1.5.2 Starter.fps Stronghold mission&lt;/b&gt;&lt;br&gt;&lt;br&gt;It would be great to have at least 32 players on at once all shooting at each other.  If you could connect during the testing time and even just leave your Orc standing around that would be great.  I'll share all of my collected statistics with the community in a follow-up blog.&lt;br&gt;&lt;br&gt;Thanks for reading!&lt;br&gt;&lt;br&gt;- LightWave Dave&lt;br&gt;&lt;br&gt;&lt;b&gt;NOTE: I've written a follow up to my stress test.  You may find it &lt;a href='http://www.garagegames.com/blogs/8341/14196'&gt;here&lt;/a&gt;&lt;/b&gt;</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/8341/13701">
		<dc:format>text/html</dc:format>
		<dc:date>2007-10-11T03:30:30+00:00</dc:date>
		<dc:creator>David \&amp;quot;Fulcrum\&amp;quot; Wyand</dc:creator>
		<title>Jeff Tunnel's Band LIVE</title>
		<link>http://www.garagegames.com/blogs/8341/13701</link>
		<description>Go here now: &lt;a href='http://www.gnometech.tv/?page_id=3' target=_blank&gt;Gnometech.tv&lt;/a&gt;&lt;br&gt;&lt;br&gt;Jeff Tunnel's band LIVE!&lt;br&gt;&lt;br&gt;EDIT: Jeff's band made the front page of &lt;a href='http://www.ustream.tv' target=_blank&gt;Ustream.tv&lt;/a&gt; for their world wide premiere.&lt;br&gt;&lt;br&gt;We're now onto the &lt;i&gt;Other Guys&lt;/i&gt;.  Woot.&lt;br&gt;&lt;br&gt;EDIT 2: Show over.  See some vids: &lt;a href='http://www.ustream.tv/channel/igc2007' target=_blank&gt;www.ustream.tv/channel/igc2007&lt;/a&gt;&lt;br&gt;&lt;br&gt;- LightWave Dave</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/8341/13697">
		<dc:format>text/html</dc:format>
		<dc:date>2007-10-10T08:45:28+00:00</dc:date>
		<dc:creator>David \&amp;quot;Fulcrum\&amp;quot; Wyand</dc:creator>
		<title>Live Video Stream from IGC2007</title>
		<link>http://www.garagegames.com/blogs/8341/13697</link>
		<description>Greetings!&lt;br&gt;&lt;br&gt;At this year's &lt;a href='http://www.indiegamescon.com/' target=_blank&gt;Indie Games Conference&lt;/a&gt; I'm going to attempt to stream live from the show floor.  This will include the keynotes and other presentations for Wednesday and Thursday.&lt;br&gt;&lt;br&gt;The success of this will depend on the bandwidth quantity and quality at the conference centre.  I'll be testing it out Wednesday morning to determine the feasibility.  If this works we'll have video, audio and IRC chat for all viewers.&lt;br&gt;&lt;br&gt;To be a part of this historic event, head on over to &lt;a href='http://www.gnometech.tv' target=_blank&gt;Gnometech.tv&lt;/a&gt;, my web page for all things streaming.  There you'll also find a real-time schedule of the event so you'll know what you're watching.  Feel free to tell your friends. :o)&lt;br&gt;&lt;br&gt;Special thanks for Eric Fritz, Rick Overman and the other GarageGamers that have made this possible.  And to &lt;a href='http://www.ustream.tv' target=_blank&gt;Ustream.tv&lt;/a&gt; for their help in setting up the live stream.&lt;br&gt;&lt;br&gt;See you there!&lt;br&gt;&lt;br&gt;- LightWave Dave</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/8341/13656">
		<dc:format>text/html</dc:format>
		<dc:date>2007-10-02T14:45:33+00:00</dc:date>
		<dc:creator>David \&amp;quot;Fulcrum\&amp;quot; Wyand</dc:creator>
		<title>Come ride the rapids</title>
		<link>http://www.garagegames.com/blogs/8341/13656</link>
		<description>&lt;b&gt;DISCLAIMER: This is a personal project undertaken by me, David Wyand.  It does not represent work being performed by GarageGames, nor is it an indication of any future product releases.&lt;/b&gt;&lt;br&gt;&lt;br&gt;Whether you believe in &lt;i&gt;Web-two-point-oh&lt;/i&gt; or &lt;i&gt;Web-it-blows&lt;/i&gt;, there's no denying that something is afoot.  It seems that everyone and their dog, and their dog's fleas, have their own video stream.  Ustream.tv, stickam.com, justin.tv, blogtv.ca are all infesting the Internet with images of people staring into space, sleeping, and performing faux stripteases.  Video streaming for the rest of us.  Well it's time to bring Torque into this space!&lt;br&gt;&lt;br&gt;&lt;b&gt;Row, row, row your boat...&lt;/b&gt;&lt;br&gt;What I've been playing with recently is integrating a DirectShow filter with TGE.  This turns Torque's rendering pipeline into a DirectShow streaming source that may be fed into anything that accepts such a connection.  And as you'll find out later, this allows you to do a lot of interesting things.  This is accomplished through a custom built DirectShow library and a slightly modified TGE 1.5.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/plan-07-10-01/07-10-01-FilterFlow01.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;The DirectShow capture source filter I've built is presented to the operating system as any other video source.  Other video source examples include a web camera or a TV tuner card.  So in theory any application that accepts a web cam as a source would be able to connect to my filter's &lt;i&gt;output pin&lt;/i&gt;.  The filter currently supports the following formats:&lt;br&gt;&lt;br&gt;* 32-bit RGB (RGBA with an opaque alpha channel)&lt;br&gt;* 24-bit RGB&lt;br&gt;* 16-bit YUY2 (4:2:2)&lt;br&gt;* 16-bit UYVY (4:2:2)&lt;br&gt;&lt;br&gt;These should allow the filter to be accepted by nearly any DirectShow application.  The only missing format -- 4:2:0 -- could be added if a need was found.  The filter supports any &lt;i&gt;push&lt;/i&gt; frame rate your computer may handle (regardless of Torque's frame rate) and any resolution.  Although to access these features I'll need to create a GUI rather than modify a variable and recompile. :o)&lt;br&gt;&lt;br&gt;To pass data between the filter and Torque, an externally accessible video buffer is provided.  To transfer the data, the DirectShow filter is imported (it's a DLL) into Torque and the lockable video buffer is in shared memory suitable for a memory copy.  More handshaking between the filter and Torque could be added in the future to allow for finer control of the filter from within Torque.&lt;br&gt;&lt;br&gt;&lt;b&gt;Life is but a dream&lt;/b&gt;&lt;br&gt;All of the work on the TGE side is performed by a custom canvas: GuiVideoCaptureCanvas.  The neat thing about this is all you need to do is swap your regular canvas with this one (usually in a TorqueScript call) and you now have video streaming.  Yes, really.  The steps to streamdom are:&lt;br&gt;&lt;br&gt;1. Drop in GuiVideoCaptureCanvas and recompile.&lt;br&gt;2. Modify statement in TorqueScript to use the new canvas.&lt;br&gt;3. Profit!&lt;br&gt;&lt;br&gt;Now while we could stop there, where's the fun in that?  We want more features!  Features until you're mashing the keyboard with bloody, sinewy stumps!&lt;br&gt;&lt;br&gt;Well the first feature the new canvas gives you is being able to build an overlay GUI that is only visible from the video stream.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/plan-07-10-01/07-10-01-VideoStream01.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;In the above image I've added some text and a time stamp.  This could be anything really as it makes full use of the Torque GUI.  One idea I came up with is to route the chat window to a text GUI to make it readable from the video stream.  You could also display team scores or the current leader.  As I said... anything.&lt;br&gt;&lt;br&gt;The second feature is you may build an overlay GUI that is only visible to the player.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/plan-07-10-01/07-10-01-VideoStream02.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;As an example I've built a dialog that provides a preview on the video stream (another custom GUI control) and a couple of controls.  This could be used to change the stream's settings, to pause it, etc.  Here the Torque mouse pointer is automatically shown when the overlay is displayed if it wasn't previously, but it only renders for the player and not in the stream.  If the mouse pointer is normally visible -- such as the game's main menu -- then it will also be visible within the stream.&lt;br&gt;&lt;br&gt;There is some sneakiness required to make it all work.  The following diagram provides a general outline of the canvas' rendering pipeline.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/plan-07-10-01/07-10-01-RenderFlow01.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;I'm making use of OpenGL to resize the rendered display to fit the video stream's resolution (top box in the diagram, right column).  I've found it best to enable some form of antialiasing in the video card's driver to provide the best image possible.  This could be done automatically from within Torque but that would require some more involved code changes.&lt;br&gt;&lt;br&gt;&lt;b&gt;Which stream will you take?&lt;/b&gt;&lt;br&gt;This is really cool and all, but what are its practical uses?  Excellent question.  Here are some of my thoughts.  I suspect that others can come up with even better ideas.&lt;br&gt;&lt;br&gt;&lt;i&gt;Direct video capture&lt;/i&gt;&lt;br&gt;Using a program that can capture to disk a DirectShow stream, it's possible to directly record your Torque session.  No more screen captures with &lt;a href='http://www.fraps.com/' target=_blank&gt;FRAPS&lt;/a&gt; or &lt;a href='http://www.techsmith.com/camtasia.asp' target=_blank&gt;Camtasia Studio&lt;/a&gt;.  Just pure memory dumping goodness.&lt;br&gt;&lt;br&gt;I've had great success with &lt;a href='http://www.virtualdub.org/' target=_blank&gt;VirtualDub&lt;/a&gt;.  Its a completely free, DirectShow capture and AVI editing program with some great stream capturing features.  As an example the following video was captured using VirtualDub on my Inspiron 9300 laptop with its single core, non-hyperthreading processor.  It was initially captured at 320x240 and 30fps using the RGB 24-bit format as an uncompressed AVI.  I then used VirtualDub to trim the start and end, and saved it as a Divx AVI file with default settings.&lt;br&gt;&lt;br&gt;&lt;a href='http://www.gnometech.com/torque/images/plan-07-10-01/OrcStream24bEditDivx.avi' target=_blank&gt;'When Orcs Attack' Sample Video (12MB)&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;i&gt;Play session streaming to the Internet&lt;/i&gt;&lt;br&gt;My DirectShow capture source filter may be used with the &lt;a href='http://www.adobe.com/products/flashplayer/' target=_blank&gt;Adobe Flash&lt;/a&gt; player to stream your Torque play session over the Internet.  As far as the Flash player is concerned it is just another web cam.  Let the whole world see your Orc fragging skills.  Me bash ork gud.&lt;br&gt;&lt;br&gt;I've had great success with &lt;a href='http://www.ustream.tv' target=_blank&gt;Ustream.tv&lt;/a&gt; and its more business oriented approach, rather than the sites devoted to social networking.  They also allow you to record your streams and store them on their servers.  As an example I've recorded the following live stream through the Flash player at 12fps and a quality of 80.&lt;br&gt;&lt;br&gt;&lt;a href='http://www.ustream.tv/recorded/xEzoyylPhx2SEQPbhXADbg' target=_blank&gt;Recorded Live Orc Cam Stream Web Page&lt;/a&gt;&lt;br&gt;&lt;br&gt;This could be used for live tournament play, live in-game guild presentations and training, live Machinima, etc.  This is where being able to control a 3rd person camera in game can be quite handy.  I'm sure others can come up with more novel ideas. :o)&lt;br&gt;&lt;br&gt;&lt;i&gt;Developer controlled Internet streaming&lt;/i&gt;&lt;br&gt;This is an area that I believe has gone untapped.  Rather than having the players stream their sessions (or in addition to it), the game developer could have machines dedicated to the task.  This would probably be most useful in a persistent game or at least one where the game developer has some control over the game's servers, but needn't be limited to it.&lt;br&gt;&lt;br&gt;This technology could be used to market the game by showing what is happening right now at a particular location, for example.  Or to highlight a current in-game event with a 'wish you were here' sentiment.  You could have a number of camera locations that are cycled between, or have a number of individual video streams.&lt;br&gt;&lt;br&gt;I could envision in a persistent world like &lt;a href='http://vside.com' target=_blank&gt;vSide&lt;/a&gt; you could make the video streaming camera an actual object.  Have the avatars share an in-game video camera and stream the video to your front page using Ustream's embedded player.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/plan-07-10-01/07-10-01-VSideMockUp01.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;vSide streaming mock up for illustrative purposes&lt;/i&gt;&lt;br&gt;&lt;br&gt;The original reason I started this project was to have a web cam into a virtual world that ran itself.  It's something I've toyed with in one incarnation or another for quite some time.  I still hope to one day.&lt;br&gt;&lt;br&gt;&lt;b&gt;My boat sprung a leak!&lt;/b&gt;&lt;br&gt;So what's left to do before I consider this code complete:&lt;br&gt;&lt;br&gt;1. Add audio support.  I haven't looked into this yet so it could end up being a deal breaker if it doesn't work out.&lt;br&gt;&lt;br&gt;2. Set encoding parameters from a GUI and/or Torque.  This includes resolution, frames per second, format, etc.&lt;br&gt;&lt;br&gt;3. Enable/disable streaming from within Torque.&lt;br&gt;&lt;br&gt;4. Display a user defined image when not streaming from Torque.&lt;br&gt;&lt;br&gt;5. Look into OSX support under Quicktime.&lt;br&gt;&lt;br&gt;&lt;b&gt;Does this float your boat?&lt;/b&gt;&lt;br&gt;So does something like this interest people?  What's your take on technology such as this?  Would you be willing to purchase a code pack to put this into your game or simulation?&lt;br&gt;&lt;br&gt;Thanks for reading!&lt;br&gt;&lt;br&gt;- LightWave Dave</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/8341/12677">
		<dc:format>text/html</dc:format>
		<dc:date>2007-04-06T17:14:17+00:00</dc:date>
		<dc:creator>David \&amp;quot;Fulcrum\&amp;quot; Wyand</dc:creator>
		<title>What's my blog doing under the GarageGames tab?</title>
		<link>http://www.garagegames.com/blogs/8341/12677</link>
		<description>&lt;img src='http://www.gnometech.com/torque/images/plan-07-04-06/2007-04-06-PlanBanner.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;As many a blog has started: Long time no blog!  A lot has happened since July of last year -- including the realization that it is indeed possible to cram even more into each 24 hours.  How is this possible you ask?  Method #1: don't write blogs! Method #B: Have children.  No matter what time you go to bed you can always count on them to wake you up at sunrise.  :o)  Now on with the show...&lt;br&gt;&lt;br&gt;&lt;b&gt;Give me an E!  E!  Give me an M!  M!  Give me a P!  P!...&lt;/b&gt;&lt;br&gt;If you've been reading the &lt;a href='http://www.garagegames.com/company/employees/'&gt;GarageGames' Employee Roster&lt;/a&gt; at all over the past few months -- and really, who hasn't -- you'll have noticed my mug plastered near the bottom.  How could this be?  Well you see, when you alphabetize a list from A-Z by last name, my &lt;i&gt;W&lt;/i&gt; and &lt;i&gt;Y&lt;/i&gt; always put me at the end.  Usually I'm at the very end...damn you Zadell and Zepp!&lt;br&gt;&lt;br&gt;Oh you meant why am I even listed at all?  It's because I'm GarageGames' first remote employee!!!1!!one!!  Yeehaw!  Or as they like to say in Oregon...Waheey!  Because, you know, I'm now up on these things.&lt;br&gt;&lt;br&gt;I've actually been working closely with GarageGames for a while now.  But now its official.  And by official I mean that the conversation with Josh went something like this (transcribed from the wire tap):&lt;br&gt;&lt;br&gt;&lt;i&gt;Josh:&lt;/i&gt; Dude.&lt;br&gt;&lt;i&gt;Me:&lt;/i&gt; Ya?&lt;br&gt;&lt;i&gt;Josh:&lt;/i&gt; You in?&lt;br&gt;&lt;i&gt;Me:&lt;/i&gt; Oh ya, eh!&lt;br&gt;&lt;i&gt;Josh:&lt;/i&gt; Cool!&lt;br&gt;&lt;i&gt;Me:&lt;/i&gt; Rock on!&lt;br&gt;* Air guitars ensue *&lt;br&gt;&lt;br&gt;So what else has been happening?&lt;br&gt;&lt;br&gt;&lt;b&gt;Torque ShowTool Pro included in TGE 1.5&lt;/b&gt;&lt;br&gt;First it started with a demo of TST Pro included in TGE 1.4.  And now every owner of TGE 1.5 gets a full copy.  As a third-party developer it doesn't get much better than to be included with the core product.  Bundling FTW!&lt;br&gt;&lt;br&gt;&lt;b&gt;Torque X&lt;/b&gt;&lt;br&gt;I had the pleasure of helping out with Torque X at the end of 2006.  I did the programming on &lt;a href='http://www.greatgamesexperiment.com/game/TorqueCombat/' target=_blank&gt;Torque Combat&lt;/a&gt; as well as add to the core engine.  It is a cool engine to work with and learning Visual C# was actually fun.  Seeing your game for the first time on your TV through the Xbox360 is pure coolness.&lt;br&gt;&lt;br&gt;&lt;a href='http://www.greatgamesexperiment.com/game/TorqueCombat'&gt;&lt;img src='http://static.greatgamesexperiment.com/badge/game/torquecombat/gge400x56.png' border=0&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Torque Constructor&lt;/b&gt;&lt;br&gt;So, you've probably not heard as it has been kept quite hush hush, but Torque Constructor will be released on April 9th &lt;i&gt;for free!&lt;/i&gt;  You heard it here first!  Oh wait, there is the news posting.  Hmm, and the IOTD.  And on the Forums.  Well let's see.  Carry the 2...  You heard it here 11th!  Don't you feel special?&lt;br&gt;&lt;br&gt;Starting with that fateful IOTD posting in March, 2005 that spawned the joy of a thousand needles in your eye, it is great to have that final push to get it out there.  They say that finishing off something is 10% inspiration and 90% perspiration.  Well with all of the Coke and coffee I've been drinking lately to get the last minute stuff done, I'd say it is also at least 50% urination.  I'll call it Wyand's Hypothesis of Finishedness...ination.&lt;br&gt;&lt;br&gt;OK, joking aside, it is great to finally get Constructor out to everyone.  A lot of people have helped the core team, especially recently, from internal project management and testing at GarageGames to the Beta testers.  Now it's your turn to bang on it.  Will it be perfect on April 9th?  No.  There are a few known issues.  And there's nothing like a few thousand individual mouse clicks to let you know where you goofed up.  But there comes a time when you need to poke it and call it done.  Will we continue to work on Constructor to improve it?  Most definitely.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/constructor/ConstructorSingle3DFormOverview.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;Image from Constructor reference documentation on TDN.&lt;/i&gt;&lt;br&gt;&lt;br&gt;Until next time...&lt;br&gt;&lt;br&gt;- LightWave Dave</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/8341/10839">
		<dc:format>text/html</dc:format>
		<dc:date>2006-07-05T16:02:45+00:00</dc:date>
		<dc:creator>David \&amp;quot;Fulcrum\&amp;quot; Wyand</dc:creator>
		<title>LightWave DTS Exporter v06-07-04 Released</title>
		<link>http://www.garagegames.com/blogs/8341/10839</link>
		<description>I've just released an update to the LightWave DTS Exporter over at &lt;a href='http://www.gnometech.com' target=_blank&gt;Gnometech&lt;/a&gt;.  You may grab the Windows and OSX versions from the &lt;a href='http://www.gnometech.com/lwdtsmain.shtml' target=_blank&gt;Product&lt;/a&gt; page.  Here's what's new:&lt;br&gt;&lt;br&gt;&lt;b&gt;Ground Transforms in DSQ Files&lt;/b&gt;&lt;br&gt;Bring on the lifelike death animations! :o)  In Torque ground transforms are required for standard character death animation sequences to play correctly.  They represent how the character travels (ie: staggers) prior to finally dropping to the ground.  The LightWave DTS Exporter has had the ability to export a simple ground transform since the introduction of the &lt;a href='http://www.garagegames.com/products/53'&gt;BraveTree Tank Pack&lt;/a&gt;.  However it was limited to animation sequences within the DTS file.&lt;br&gt;&lt;br&gt;With v06-07-04 of the LightWave DTS Exporter it is now possible to include a simple ground transform within DSQ files.  If you're making use of the wonderful &lt;a href='http://www.garagegames.com/pg/product/view.php?id=100'&gt;DrewFX Skeleton Pack&lt;/a&gt; then you'll want to make sure you're using this version or later of the exporter.  And if you're a LightWave user then you've got to get this pack.  It is a great example of setting up the full suite of character animation sequences within LightWave.  It also provides you access to Andy to ask your questions instead of growing cobwebs waiting for me to respond.  :o)&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/lwdts/06-07-04-SkeletonOnGround.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;DrewFX Skeleton Pack's skeleton seems to have fallen down.  Poor skeleton.  Note that he is conforming to the terrain.&lt;/i&gt;&lt;br&gt;&lt;br&gt;As a refresher, here's how you set up the simple ground transform.  Choose your animation sequence under the exporter plug-in's &lt;i&gt;Animation&lt;/i&gt; tab and select the &lt;i&gt;Ground&lt;/i&gt; tab at the bottom.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/lwdts/06-07-04-GroundTransform.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;Check the &lt;i&gt;Use simple ground transformation&lt;/i&gt; check box and enter in the final distance travelled by the character.  In the example above the character staggered back half a metre over the course of the animation.  It is also perfectly valid to leave everything at zero to indicate the character doesn't move.&lt;br&gt;&lt;br&gt;&lt;i&gt;NOTE:&lt;/i&gt; Ground transformations may be used for more than just death sequences.  It is however the more common use.&lt;br&gt;&lt;br&gt;&lt;b&gt;Animation Sequence Priority&lt;/b&gt;&lt;br&gt;A new Priority text edit field has been added to the Animation tab and a new column displaying its value has been added to the Animation Sequences list box.  The Priority animation sequence property is used in the Torque Game Engine to determine who should control a node when there is a conflict -- the higher priority sequence takes control.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/lwdts/06-07-04-AnimPriority.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;It is rare that you'd ever need to make use of this but I have been asked about it every so often.  I was originally going to leave it for the Professional version of the LightWave exporter but work on it keeps getting pushed out due to other commitments.  So enjoy!&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Gnometech Site Forums&lt;/b&gt;&lt;br&gt;In other news: I've become aware of a problem with the forums over at my &lt;a href='http://www.gnometech.com' target=_blank&gt;Gnometech&lt;/a&gt; site.  Specifically it had to do with sending out email notifications.  This both affected new user registration as well as new post notifications.  This also meant that I didn't know when people were posting as I relied on this notification.&lt;br&gt;&lt;br&gt;I believe that this has been corrected.  Yay!  Unfortunately it means that if you're waiting for a new user registration email to activate your account you'll need to go back and reregister.  Head over &lt;a href='http://www.gnometech.com/forums/register.php' target=_blank&gt;here&lt;/a&gt; to do so.&lt;br&gt;&lt;br&gt;&lt;br&gt;That about covers it for today.&lt;br&gt;&lt;br&gt;- LightWave Dave</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/8341/10307">
		<dc:format>text/html</dc:format>
		<dc:date>2006-04-21T02:41:55+00:00</dc:date>
		<dc:creator>David \&amp;quot;Fulcrum\&amp;quot; Wyand</dc:creator>
		<title>Babies wait for no man</title>
		<link>http://www.garagegames.com/blogs/8341/10307</link>
		<description>While a few lucky individuals are going to be greeted with this Real Soon Now:&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/constructor/2006-04-19-BetaRegistration.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;First Person Constructor - FPC&lt;/i&gt;&lt;br&gt;&lt;br&gt;At 7:06am EDT Wednesday April 19th, I was greeted by this:&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/constructor/ConstructorBaby.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;Third Person Baby - TPB&lt;/i&gt;&lt;br&gt;&lt;br&gt;Can you guess which of us just did the equivalent of pushing a watermelon out of their bum?  My wife is going to kill me if she finds out I posted this.  So let's just keep this between you and me, OK?&lt;br&gt;&lt;br&gt;He's come a month early so we're still narrowing down a name for him.  So far we have: Atlas, Shader, Dif and Tim Aste.&lt;br&gt;&lt;br&gt;Between Marble Blast Ultra and now babies, work on Constructor is really taking a beating.  I suppose this latest development gets Matt off the hook for his &lt;a href='http://www.garagegames.com/mg/snapshot/view.php?qid=1162'&gt;public display of scheduling&lt;/a&gt;.  :o)&lt;br&gt;&lt;br&gt;And now we begin the onslaught of hallucinations brought on by the sleep deprivation of taking care of a two-and-a-half year old and a new born.  Oh look, I just won the best dress award at the Oscars!  I'd like to thank all the little people that made this possible...</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/8341/10106">
		<dc:format>text/html</dc:format>
		<dc:date>2006-03-24T16:12:26+00:00</dc:date>
		<dc:creator>David \&amp;quot;Fulcrum\&amp;quot; Wyand</dc:creator>
		<title>Deconstructing Constructor - Part 5</title>
		<link>http://www.garagegames.com/blogs/8341/10106</link>
		<description>Welcome to the fifth in a series of frequently infrequent talks about Torque Constructor. This is a continuation of my blog/.plans:&lt;br&gt;&lt;br&gt;&lt;a href='http://www.garagegames.com/blogs/8341/8152'&gt;Part 1&lt;/a&gt;&lt;br&gt;&lt;a href='http://www.garagegames.com/blogs/8341/8721'&gt;Part 2&lt;/a&gt;&lt;br&gt;&lt;a href='http://www.garagegames.com/blogs/8341/9495'&gt;Part 3&lt;/a&gt;&lt;br&gt;&lt;a href='http://www.garagegames.com/blogs/8341/9751'&gt;Part 4&lt;/a&gt;&lt;br&gt;&lt;br&gt;You may also want to read Matt's .plans:&lt;br&gt;&lt;a href='http://www.garagegames.com/blogs/985/8341'&gt;Of mice and men and Constructor&lt;/a&gt;&lt;br&gt;&lt;a href='http://www.garagegames.com/blogs/985/9142'&gt;When will Constructor ship?&lt;/a&gt;&lt;br&gt;&lt;br&gt;And stop by Ron's .plan to find out about running under Linux:&lt;br&gt;&lt;a href='http://www.garagegames.com/blogs/8711/10009'&gt;TGE-L, Constructor and TSTPro&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;What is Torque Constructor&lt;/b&gt;&lt;br&gt;Torque Constructor is a .map (as in the &lt;a href='http://collective.valve-erc.com/index.php?go=map_format' target=_blank&gt;.map&lt;/a&gt; file format) editing and &lt;a href='http://tdn.garagegames.com/wiki/DIF/Overview' target=_blank&gt;.dif&lt;/a&gt; (the Torque interior file format) producing program being developed by &lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=985'&gt;Matt Fairfax&lt;/a&gt;, &lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=21036'&gt;John Kabus&lt;/a&gt;, &lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=8711'&gt;Ron Yacketta&lt;/a&gt; and &lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=8341'&gt;myself&lt;/a&gt; under the direction of GarageGames.  You may have seen the &lt;a href='http://www.garagegames.com/mg/snapshot/view.php?qid=962'&gt;Development Snapshot of the Day&lt;/a&gt; posted back in March '05 where the project was first announced.  If you're familiar with programs like Valve's Hammer, with a smattering of traditional 3D apps such as NewTek's LightWave or Luxology's Modo, then you'll understand Constructor.&lt;br&gt;&lt;br&gt;&lt;b&gt;Discussion: Objects Menu&lt;/b&gt;&lt;br&gt;In today's episode (for the GDC '06 demo impaired :o), I'll once again talk about what I've built in Constructor from my last update at IGC '05 until the end of the year.  Specifically we'll look at what you'll find under the &lt;i&gt;Objects&lt;/i&gt; menu today.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/constructor/2006-03-23-ObjectMenu.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;Constructor Objects Menu&lt;/i&gt;&lt;br&gt;&lt;br&gt;I've divided the &lt;i&gt;Objects&lt;/i&gt; menu into three sections.  We'll go through each of them below.&lt;br&gt;&lt;br&gt;&lt;i&gt;Brush &amp;amp; Entity Grouping&lt;/i&gt;&lt;br&gt;There are times when you're working with a map that you'd like to group like items together.  This could be a series of brushes, a collection of entities, or a combination of both.  To make a group, you simply select the appropriate objects and use the &lt;i&gt;Objects-&amp;gt;Group&lt;/i&gt; menu item or its keyboard equivalent.  Now whenever you select one item in the group, all the items in the group will automatically be selected.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/constructor/2006-03-23-GroupedBrushAndEntity.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;The user has clicked on the rectangular brush and a grouped point light entity has automatically been selected with it&lt;/i&gt;&lt;br&gt;&lt;br&gt;And if you'd ever like to select a single object without selecting everything within its group, you just hold down the CTRL key and click on the object.  Something to note is that unlike selection sets (discussed &lt;a href='http://www.garagegames.com/blogs/8341/9751'&gt;last time&lt;/a&gt;) an object may only belong to one group at a time.&lt;br&gt;&lt;br&gt;&lt;i&gt;Lock Position &amp;amp; Orientation&lt;/i&gt;&lt;br&gt;There are times when you'd like to make an object unselectable so that you don't accidentally move it.  You'd still like to see it for reference but not modify it.  That's where object locking comes in.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/constructor/2006-03-Locked.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;Locked brushes are not selected with the yellow drag selection box&lt;/i&gt;&lt;br&gt;&lt;br&gt;Using the Objects menu you may choose to lock those objects that you have selected, or everything that is not currently selected.  You may also swap what is locked with what objects are not locked using the &lt;i&gt;Objects-&amp;gt;Inverse Lock&lt;/i&gt; menu item.  When an object is locked it is drawn with dark blue edges to show its different state.&lt;br&gt;&lt;br&gt;To remove the lock on the objects you use the &lt;i&gt;Objects-&amp;gt;Unlock All&lt;/i&gt; menu item.  As you cannot select a locked item it is not possible to just unlock a few of them at a time -- you must unlock them all at once.&lt;br&gt;&lt;br&gt;&lt;i&gt;Hide from View&lt;/i&gt;&lt;br&gt;Sometimes you just need to get objects out of your way.  For example you'd like to remove the roof of a building to make it easier to build its interior.  In this case you'd like to hide the roof:&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/constructor/2006-03-23-Hidden.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;The top of the Orc Tower has been hidden to reveal its interior&lt;/i&gt;&lt;br&gt;&lt;br&gt;As with locking an object, you may hide what is currently selected or hide everything that is not selected.  When an object is hidden it is completely removed from the scene and does not block your mouse operations.  And if you'd like to swap what is hidden with what is visible, you'd use the &lt;i&gt;Objects-&amp;gt;Inverse Hide&lt;/i&gt; menu item, just like you do with locking.  As you can tell, locking and hiding are very similar to each other.  :o)&lt;br&gt;&lt;br&gt;&lt;br&gt;That's it for today's quick run through of the &lt;i&gt;Objects&lt;/i&gt; menu.  I've attempted to make these operations feel familiar to anyone that has used a digital arts tool.  Until next time...&lt;br&gt;&lt;br&gt;- LightWave Dave&lt;br&gt;&lt;br&gt;PS: If you've been paying attention, some of you may notice that the pictures have shown more than what I've talked about here.  I'll shed more light on that in a future article...</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/8341/9833">
		<dc:format>text/html</dc:format>
		<dc:date>2006-02-18T00:15:09+00:00</dc:date>
		<dc:creator>David \&amp;quot;Fulcrum\&amp;quot; Wyand</dc:creator>
		<title>LightWave DTS Exporter v05-02-17 Released</title>
		<link>http://www.garagegames.com/blogs/8341/9833</link>
		<description>I've just released a small update to the LightWave DTS Exporter over at &lt;a href='http://www.gnometech.com' target=_blank&gt;Gnometech&lt;/a&gt;.  You can grab the Windows and OSX versions from the &lt;a href='http://www.gnometech.com/lwdtsmain.shtml' target=_blank&gt;Product&lt;/a&gt; page.&lt;br&gt;&lt;br&gt;So what's new in this version?  I'm glad you asked!&lt;br&gt;&lt;br&gt;&lt;b&gt;More than 8 Collision Meshes for TGE 1.3&lt;/b&gt;&lt;br&gt;Todd Pickens' &lt;a href='http://www.garagegames.com/products/82'&gt;RTS Environment Pack&lt;/a&gt; contains some shapes that have complex collision meshes.  He ran up against the limitation in TGE 1.3 of 8 collision details within a single DTS file (TGE 1.4+ has removed this limitation).  To work around this, I added a new feature to the exporter that will place all collision meshes into the same collision detail rather than one detail per mesh.&lt;br&gt;&lt;br&gt;To take advantage of this, go to the &lt;i&gt;Preferences&lt;/i&gt; tab and activate the &lt;i&gt;Combine collision meshes into single detail level&lt;/i&gt; check box.&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/lwdts/05-02-17-PrefTab.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;So for those that are taking advantage of Todd's great pack, you'll need to pick up this version of the LightWave exporter to export his more complex shapes.&lt;br&gt;&lt;br&gt;&lt;b&gt;Detail Map Scale&lt;/b&gt;&lt;br&gt;The LightWave exporter has had support for detail maps for quite a while, but you were never able to adjust their scale.  Now you can!&lt;br&gt;&lt;br&gt;&lt;img src='http://www.gnometech.com/torque/images/lwdts/05-02-17-MaterialAttributes.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;On the &lt;i&gt;DTS Exporter Material Attributes&lt;/i&gt; shader there is a new &lt;i&gt;Detail Image Scale&lt;/i&gt; edit box that allows you to size the detail map independent of the base texture.  This ability has always been in the DTS file format, but was not accessible to the LightWave exporter.&lt;br&gt;&lt;br&gt;I've also corrected a bug with detail maps always being environment mapped.  Now the default is to not environment map them.  If you want to turn environmental mapping back on, use the new &lt;i&gt;Detail image uses environmental mapping&lt;/i&gt; check box on the &lt;i&gt;DTS Exporter Material Attributes&lt;/i&gt; shader.&lt;br&gt;&lt;br&gt;&lt;b&gt;OSX Bug with DTS Exporter Material Attributes Shader&lt;/b&gt;&lt;br&gt;There was a bug with the previous version of the LightWave exporter that would cause the OSX version of LightWave to hang when you attempted to open the &lt;i&gt;Material Attributes&lt;/i&gt; shader interface.  I've made some changes and have tested under LightWave v8.5.  It appears that this bug has been corrected.  Don't forget to update the exporter plug-in for both Layout and Modeler to ensure that you receive this bug fix!&lt;br&gt;&lt;br&gt;&lt;br&gt;Well, that's the list.  Please let me know if you run into any problems with this version.  Enjoy!&lt;br&gt;&lt;br&gt;- LightWave Dave</description>
	</item>
</rdf:RDF>
