<?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/20592/">
		<title>Blog for Josh Williams 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-07-07T00:43:01+00:00</dc:date>
		<items>
			<rdf:Seq>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/20592/13585"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/20592/7246"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/20592/7231"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/20592/7164"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/20592/7092"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/20592/6984"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/20592/6896"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/20592/6639"/>
				<rdf:li rdf:resource="http://www.garagegames.com/blogs/20592/5514"/>
			</rdf:Seq>
		</items>
	</channel>
	<item rdf:about="http://www.garagegames.com/blogs/20592/13585">
		<dc:format>text/html</dc:format>
		<dc:date>2007-09-18T15:28:29+00:00</dc:date>
		<dc:creator>Josh Williams</dc:creator>
		<title>News is out!</title>
		<link>http://www.garagegames.com/blogs/20592/13585</link>
		<description>Well, we've been sitting on this news for awhile, and it's great to finally announce it!  We're very excited to let everyone know that GarageGames has partnered up with InterActive Corporation, IAC, to build a brand new network of action games playable in the browser, and to fund independent games, all in accordance with our long-standing philosophy, vision, and mission at GG. &lt;br&gt; &lt;br&gt;As far as publicity goes, to get the word out there, we decided to talk about the business end of our deal with IAC first, as we knew it'd cause all kinds of questions, and we wanted to answer them frankly.  We figure it's best to be honest about it, now that we're ready and able to talk.  This is why the stories you're reading online today are pretty deal-oriented and chalk full of business terms.  From here, we'll be talking a lot about what we've been working on lately, and what we'll be doing in the future, which will be much more interesting (at least to most everyone on our site :).  &lt;br&gt;&lt;br&gt;Similarly, in this blog, to get the big sticky questions out of the way, I'll start off by talking about the deal we cut with IAC, what it means, and why we did it.  Then, I'll move onto the really cool stuff, including what we're working on now, the future of Torque, and how we're funding games.  I'll be totally straight in this blog, as this is obviously huge news for us.&lt;br&gt; &lt;br&gt;&lt;b&gt;Why were we interested in funding at all?&lt;/b&gt;&lt;br&gt;We were interested in funding to try and do a better job fulfilling our mission.  Since Jeff, Rick, Tim and Mark started the company 8 years ago, and since many of us joined up early on working for beans as we bootstrapped the company, the fundamental mission for GarageGames was pretty simple (yet powerful)... make the industry a better place for developers.  By doing that, more great games would get made, which would be better for gamers everywhere.  &lt;br&gt; &lt;br&gt;GG started out working toward this mission by focusing on providing professional quality game technology and tools at prices literally anyone could afford, democratizing game development, in a sense.  There's no getting around the fact that making games is just plain hard, and it takes a lot of talent and work to get one finished-- let alone to make it fun and appealing.  We can't change that.  But at least GG put a stake in the ground and took on one of the biggest hurdles facing aspiring game developers and indie teams-- access to affordable, effective game technology.  &lt;br&gt; &lt;br&gt;But making it easier to create games is half the battle, at best.  Part and parcel to GarageGames' mission was to help developers get their games to market successfully and find their audiences.  That is a massive challenge, as anyone who has shipped a game will tell you.  At GG, we've taken some steps to try and help indies get their games to market-- we created the basic &lt;a href='http://www.garagegames.com/demos/browse/game/'&gt;Game Store&lt;/a&gt; here on GG.com, which publishes lots of fun indie titles, and we have helped establish some successful games there.  We've helped broker deals for a few games to break onto Xbox Arcade, casual portals, mobile devices, and other emerging, indie-accessible channels.  We created &lt;a href='http://www.TheGreatGamesExperiment.com/' target=_blank&gt;The Great Games Experiment&lt;/a&gt;, a social-networking site for gamers and game developers to promote games and find friends.  &lt;br&gt; &lt;br&gt;While these were all good efforts, we've never had the resources at hand to fundamentally change the game and carve out new space that'd really help developers be successful.&lt;br&gt; &lt;br&gt;With IAC, that is exactly what we're doing now.  We've been dreaming of a new, better way to develop, distribute and play games online for a few years now, and we've been working on the technology to support that dream for a couple years, behind the scenes.  I'll talk about the details below, but the bottom-line is... we started looking at funding possibilities because we wanted to do a better job helping other developers build their games and be successful with them.  &lt;br&gt;&lt;br&gt;There's no way we or any other single company can help every single game out there that deserves attention and success.  But what we can do, now, is truly become the publisher and developer partner that we always wanted to be.  We'll help lots of teams succeed, and we'll help drive the industry even further toward establishing newer, more developer-friendly channels and markets.  &lt;br&gt;&lt;br&gt;We've been actively building out a new network of games at InstantAction.com (which everyone in the GarageGames community will soon get early access to, as you'll all be given accounts at IA).  We're working on games ourselves, and we're funding games on very developer-friendly terms that allow both us and the developers we're working with to win.  Of course, we'll doing all this while continuing to push forward (harder than ever) on Torque and our commitment to developer tools.  &lt;br&gt;&lt;br&gt;There's much more to talk about in all this, and this blog is just the beginning...&lt;br&gt; &lt;br&gt;&lt;b&gt;What kind of deal did we do with IAC?&lt;/b&gt;&lt;br&gt;As must be expected when doing a big hairy announcement like we just did... sometimes not everything you want to say gets across cleanly in print.  However, I want everyone to know that our deal with IAC was and is fundamentally compatible with our philosophies at GG, and the internal plans we had in place.&lt;br&gt; &lt;br&gt;As some of you have read in the announcements by now though, IAC has acquired a majority of the equity at GG.  However, we used a very unique structure in our deal with them.  While IAC now has the majority of the future economic value of GG, we continue to run the shop right here in good old Eugene, OR.  &lt;br&gt;&lt;br&gt;IAC is a very smart, savvy group of people and they recognized right away how passionate and committed we were to making great games, to treating developers fairly, and to our philosophies here. As such, our deal is structured to accommodate all that, and to make sure we stay true to our goals.  As it's headed up by people with a lot of experience in creative industries, IAC also understands the importance of creative control, and treating both content creators (developers) and audiences (gamers) the right way.  &lt;br&gt;&lt;br&gt;So, our wording in the press release and such today involves IAC's new majority stake in GG's equity, and we wanted to be honest about that.  But keep this in mind too: we wouldn't have done this deal without knowing for sure that we'd have the freedom to stay true to our mission, and we of course made sure that freedom was baked into the deal structure itself.&lt;br&gt;&lt;br&gt;Our partnership with IAC is a big one, and it's truly built for the long-term.  IAC is helping us in a huge way, through funding and through sharing expertise and resources, to build an awesome new game network, alongside our existing commitment to providing great developer tools (and we've got a bunch of exciting stuff to talk about on that in the coming weeks as well).  &lt;br&gt; &lt;br&gt; &lt;br&gt;&lt;b&gt;Why did we want to work with IAC?&lt;/b&gt;&lt;br&gt;Simply put, IAC was and is the perfect partner for us.  We couldn't have dreamed of a better deal structure, or a better company to work with.&lt;br&gt;&lt;br&gt;As anyone watching the industry sees today, games are heating up, and all kinds of investment is pouring into the industry.  This is actually a great thing for developers and for gamers, because it means that there is more funding available out there, and that new kinds of games and distribution channels are being built.  &lt;br&gt;&lt;br&gt;At GG, we were and are offered funding on a regular basis.  However, we never found a partner who really seemed to get the industry, to share our vision, or who we found willing to work with us in a way we honestly felt would allow us to stay true to who we are.  We were very hesitant about VC or any such form of funding, as we didn't want to be under pressure to &amp;quot;flip&amp;quot;... eg sell the company to the highest bidder, or go public really quickly, which is what most VC is built to do, but obviously not what we're all about here.&lt;br&gt; &lt;br&gt;So, even though we've always had a big vision and we figured it'd take more than we could hope to bootstrap on our own to truly fulfill that vision, we were always hesitant to take on any funding, or bring in any sort of partner.  Call us untrusting... but that's smart in the world of big business.  :)&lt;br&gt;&lt;br&gt;With IAC, we finally found a perfect partner, though.  To me, there are three overarching reasons why this is true:&lt;br&gt;&lt;br&gt;Vision.  IAC had an uncannily similar vision to ours at GG.  They'd been looking at games for years, hoping to see an opportunity to help transform the industry and carve out a new market by building a great new online game network.  We shared practically all the same ideas.  I met with Shana Fisher from IAC in New York a long time ago, and it was eery talking to her... the challenges and opportunities she and IAC saw facing the games industry were the same exact challenges and opportunities we saw.  IAC's ideas were uncannily similar to the vision that Jeff, Mark, myself and really the whole founding crew and team here had.&lt;br&gt;&lt;br&gt;Entrepreneurship.  With IAC, we found a partner that truly understood us, and how to build and support great businesses in general.  IAC has a very entrepreneurial approach, and we have the physical and mental space to really do what's best.  At the same time, we have access to amazingly talented, strategic thinkers, and the resources of a huge organization to lean on.  Truly, we now have the best of both worlds... we run and operate as a small, nimble, entrepreneurial company with a big vision and a lot to get done... yet we have the support and resources of a multi-billion dollar, publicly traded, well-connected company with a great deal of web expertise and experience backing us up.  That is amazingly cool and powerful.  &lt;br&gt;&lt;br&gt;In case you didn't hear it... GG just dinged.  Level up!  &lt;br&gt;&lt;br&gt;People.  Straight up, IAC is full of incredibly bright, super talented, dedicated, strategic, passionate people.  Shana Fisher is one of the smartest business people I've ever spoken with.  Barry Diller's track record speaks for itself, and it's incredibly exciting to be able to work with him and the reast of the team there.  Jeff and I met a lot of the team at IAC, and the people there were a big factor in deciding the partnership with IAC was the right call.  In fact, we recruited one of IAC's lead people to come work with us directly at GG.  We hired Andy Yang a few months ago to spearhead our web efforts and InstantAction!  Andy, truly, is one of the most impressive, intelligent, and dedicated people we've ever met, in any setting.  It is an honor and a pleasure (and a huge win for us) to have the opportunity to work with the people at IAC.  &lt;br&gt;&lt;br&gt;Really, these are the overarching reasons we proceeded to talk with IAC, whereas we normally dismissed offers for funding and the like.&lt;br&gt; &lt;br&gt; &lt;br&gt;&lt;b&gt;When did this happen, and why did it take us a while to talk about it publicly?&lt;/b&gt;&lt;br&gt;Our deal with IAC actually went down several months ago.  As you can tell... we're still the same place we've always been (just better, more effective, and able to do more).  We didn't announce it right away because we didn't want to do one of those vaporware releases you so often see.  In most cases, people jump up and down about doing a deal, talk about all the crazy stuff they'll be doing, and then go dark for several months as they scramble to actually get something done.  &lt;br&gt;&lt;br&gt;We didn't want to do that.  We wanted to hold off until we actually had something worthwhile talking about... not just brag about the fact that we did some big deal.  &lt;br&gt;&lt;br&gt;We finally announced because the InstantAction.com closed beta is starting in just a few days, and we're accepting registrations for early access now.  We've poured a ton of work into InstantAction already, and with IAC we're investing millions of dollars into its continued development.  We already have a bunch of cool stuff running, and we'll be taking the veil off it all soon.  &lt;br&gt;&lt;br&gt;&lt;a href='http://www.instantaction.com' target=_blank&gt;IA&lt;/a&gt; beta testers get access to the games we're working on, and all the games our partner teams and studios are working on, as well as all the features we're building into InstantAction itself.  Beta testers will even get sneak peaks at new concepts and newly proposed games, and can help us decide what to work on next and how it'll look and feel.  So, we wanted to wait to get the word out there until we had this truly worthwhile stuff to talk about. &lt;br&gt; &lt;br&gt; &lt;br&gt;&lt;b&gt;What is InstantAction?&lt;/b&gt;&lt;br&gt;I can't do InstantAction justice by answering this question briefly in the middle of a long blog.  So, we'll be talking about this a lot more in the near future.  For now, I'll keep this very brief.  &lt;br&gt;&lt;br&gt;InstantAction is a new place to play games. We're working on games here at GG and we're working with great indie studios of all kinds, from some of the biggest names in the industry to total unknowns with great ideas and the ability to get them done.  We're building a bunch of great new games that focus squarely on being fun.  They'll all be playable in the browser, and they'll be rich, core-oriented, and often multiplayer games.  Effectively, we are building a web-based console... and just like a console, we'll have a wide variety of games and will be working with lots of developers and eventually perhaps even other publishers to create games for it.  &lt;br&gt;&lt;br&gt;For gamers, InstantAction will be and is a place to find great games and to connect with friends to play.  &lt;br&gt;&lt;br&gt;Again, many more details to come, and we'll look forward to seeing all of you in the IA beta, soon.  :)&lt;br&gt; &lt;br&gt;&lt;b&gt;What kinds of games are we looking for?&lt;/b&gt;&lt;br&gt;Again, we'll be talking about this a lot more soon, so I'll be brief here.  Fundamentally, we are of course just looking for fun games.  We want games that appeal to a core audience of gamers and ex-gamers, pretty much anywhere in the world.  We're building games that are designed to interface with the web, and leverage the unique advantages and cool features we are building into InstantAction. &lt;br&gt;&lt;br&gt;We're looking for lots of games too, and are even funding some.  So, if you've got a great idea and truly have the chops to get it done, get in touch with us at &lt;a href='mailto:games@garagegames.com'&gt;games@garagegames.com&lt;/a&gt;.&lt;br&gt; &lt;br&gt; &lt;br&gt;&lt;b&gt;How are we working with developers?&lt;/b&gt;&lt;br&gt;As I said above, we've now been able to become the publisher we always wanted to work with.  We're funding many games, and doing so in a way that lets everyone involved win.  We have the best developer terms in the industry, and they're right in line with our long-standing philosophies.  &lt;br&gt;&lt;br&gt;This is one of the most exciting parts of this announcement, and we'll be sharing a lot more details on this in the near future.  And, by the way, if you want the full scoop, &lt;a href='http://www.indiegamescon.com' target=_blank&gt;IGC&lt;/a&gt; is for you.&lt;br&gt;&lt;br&gt;&lt;b&gt;What does all this mean for Torque, and the GG community?&lt;/b&gt;&lt;br&gt;Very good things.  We're getting more done on Torque than we ever have before.  As you've seen, we recently pushed out updates to TGB, TGEA, and TGE, while shipping Torque X and more.  But all of this work pales in comparison to what we have to announce in the coming weeks for Torque, and the community here at GG.  We're pushing Torque forward in a huge way, re-vamping and overhauling the engine and tools in ways we couldn't have before.  We can't wait to share the updates with everyone, and we have a bunch of cool stuff for the community up our sleeve.  More details coming very soon.&lt;br&gt;&lt;br&gt;Suffice it to say, we're getting more done on Torque than we ever have.  Honestly, for a long while there, it was really hard to break out and make big, important changes to Torque.  We were bootstrapping GG, which basically meant we lived hand to mouth, month-to-month on the business from licensing Torque.  That makes it hard to try and do anything really revolutionary, or take any big risks.  So, I feel like we were starting to stagnate.  For the past few months, we've been able to truly step back and look at the big picture, and figure out what we want to do with Torque and our developer tools, and how we can really make them better.  That's lead to some great work getting done, and we're excited to talk about it with everyone very soon (suggestion: again, come to &lt;a href='http://www.indiegamescon.com/' target=_blank&gt;IGC&lt;/a&gt;, and get the story).&lt;br&gt; &lt;br&gt;&lt;b&gt;What's changed at GG since the deal happened?&lt;/b&gt;&lt;br&gt;Well, we're bigger now, but actually not by a lot.  A couple years ago, we doubled size in one year.  We haven't grown that much this year, and in fact our growth rate is about the same as last year.  But overall, we've added a bunch of great new members to the team at GG.  &lt;br&gt;&lt;br&gt;We've been building out InstantAction.  We've been making new games!  :)  And we've been pushing forward harder and faster on Torque.&lt;br&gt;&lt;br&gt;We're constantly trying to improve internally, to become more effective and efficient, and to do a better job defining and achieving our goals and promises. Like any company, we're growing and changing, but our soul is still the same.  We're just empowered to do more, now.&lt;br&gt; &lt;br&gt; &lt;br&gt;&lt;b&gt;Fundamentally... did we sell out?&lt;/b&gt;&lt;br&gt;Being perfectly honest, no, we didn't.  On a philosophical level and in terms of what we're working on and how we're operating, we just took the right steps to do what we always wanted to.  I'm sure we could've cut a better deal with someone, if all we cared about was making bucks from selling out GG.  But we have to sleep at night, and look at ourselves in the mirror every morning, and money in and of itself is only so valuable.  So, no souls were sold, I'm happy to say.  :)&lt;br&gt;&lt;br&gt;Of course, we obviously traded in the majority of the economic interest in GarageGames, so in that regard we did sell a lot.  But we did so in exchange for a great partner and a better way to do what we've always wanted to.  And even economically, the deal with IAC is structured such that it'll work out better for everyone involved (IAC, GG itself and our employees, and our external partners) now that we're supported by a great partner in IAC and have the resources to truly bring the longstanding visions Jeff and others originally laid out for the company to reality. &lt;br&gt; &lt;br&gt; &lt;br&gt;So, there's the straight dope on this whole announcement, and our new partner, IAC.  I hope I answered the the most important, immediate questions that seeing this hit the stories and blogs brought to mind for everyone.  Thanks very much for reading, and I'll do my best to reply to comments as soon as possible.  We'll be talking about all this-- especially our plans for InstantAction, Torque, and new games-- in a lot more detail in the very near future!  This is all very exciting stuff, and we can't wait to talk about it all more.</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/20592/7246">
		<dc:format>text/html</dc:format>
		<dc:date>2005-02-26T01:31:16+00:00</dc:date>
		<dc:creator>Josh Williams</dc:creator>
		<title>Saturday Feb 26 1:31</title>
		<link>http://www.garagegames.com/blogs/20592/7246</link>
		<description>It's alive!  Stealth launch of Torque 2D...&lt;br /&gt;&lt;br /&gt;Whew!  It's been a pretty monster push over here to get Torque 2D out there, and there's lots more work left to do-- Melv and I are really looking forward to working with all of you who pick up T2D-- but it sure is a relief to get this thing out the door right now!  Time to get some sleep.  :)&lt;br&gt;&lt;br&gt;All I can say right now is &lt;i&gt;thank you&lt;/i&gt;, &lt;i&gt;thank you&lt;/i&gt;, &lt;i&gt;thank you&lt;/i&gt; for all the kind words and encouragement during T2D's development.  This is the best game development community around by a long shot.  I seriously can't wait to see what you guys do with T2D.  &lt;br&gt;&lt;br&gt;On our end... we just couldn't hold T2D back any more.  We're launching a *little* prematurely.  Only the Windows installer is packaged up right now (though OS X and Linux packaging only require a few more hours of work).  But, we didn't want to make everyone wait until next week when everything is all packaged up and polished before we opened the floodgates.&lt;br&gt;&lt;br&gt;So, here we are, pushing T2D out the door on the sly.  No press release, no big announcement yet.  Just want you guys, our &amp;quot;insiders&amp;quot;, to be able to get your hands on it before everyone else.  Please bear with us as we work to get all the information and platform builds online here over the next few days.  But don't wait to join in on the fun.  The T2D forums will be up real soon, so drop on in and say hi.  :)&lt;br&gt;&lt;br&gt;Well, I'm gonna shut up now since I tend to talk way too much in these things.  Let me just also say thanks though to some teammates on this project: Melv, Pat, Jeff, Alex, Jay, Benjamin, Rick, Ben, and everyone at GG... it's just incredible working with these guys.  And to community members.. Nauris Krauze, Craig Fortune (check out &lt;a href='http://www.de-railed.com' target=_blank&gt;de-railed&lt;/a&gt;!) and Matt Mitman, and can't thank you guys enough for your &lt;i&gt;&lt;b&gt;incredible&lt;/b&gt;&lt;/i&gt; art work.  Anthony Rosenbaum, Dan MacDonald, Dave Myers, Harold Brown, Phil Carlisle and the rest of the folks who helped us test T2D so much, &lt;i&gt;thank you&lt;/i&gt;!  No matter how hard Melv and I might've worked, T2D wouldn't be half what it is without these guys.&lt;br&gt;&lt;br&gt;I could go on for pages thanking everyone.. so happy to have worked with everyone here on this.  Now... let's go make some kickass games!!</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/20592/7231">
		<dc:format>text/html</dc:format>
		<dc:date>2005-02-22T21:21:05+00:00</dc:date>
		<dc:creator>Josh Williams</dc:creator>
		<title>Tuesday Feb 22 21:21</title>
		<link>http://www.garagegames.com/blogs/20592/7231</link>
		<description>T2D demos screenshots.   Launch is just days away!&lt;br /&gt;&lt;br /&gt;Okay, time to prime the pump here some more.  :)  Melv and I couldn't resist posting some screens of the T2D demos we've been working on.  Check out the pics below!&lt;br&gt;&lt;br&gt;These demos are just simple, simple little examples of what Torque 2D can do.  &amp;quot;Demo in a day&amp;quot; is a good way to describe 'em.  None of them are anywhere &lt;i&gt;near&lt;/i&gt; being games, but they look &lt;i&gt;great&lt;/i&gt;, thanks to some extremely talented artists: &lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=27414'&gt;Craig Fortune&lt;/a&gt;, &lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=17'&gt;Nauris Krauze&lt;/a&gt;, and &lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=7834'&gt;Matt Mitman&lt;/a&gt;.  These guys are incredible.  For your viewing pleasure, may I present screens from the Torque 2D demos!&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Simple &amp;quot;grav gun&amp;quot; demo:&lt;/b&gt;&lt;br&gt;&lt;img src='http://public.garagegames.com/joshw/T2D/plan_screenshots/grav.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;Every engine today is trying to show off their physics, with grav guns and pachinko machines, and blah blah.  Grav guns are easy, as our little hero Flegg demonstrates in this demo.  And check out those particle effects!  Melv does amazing things w/ T2D's particle system, but I bet it won't be long after release before someone out there is even better with it than he is.  The great looking art you see here was provided by Craig Fortune and Nauris Krauze, of &lt;a href='http://www.de-railed.com/' target=_blank&gt;De-railed&lt;/a&gt;.  These guys amaze me.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Simple pool demo:&lt;/b&gt;&lt;br&gt;&lt;img src='http://public.garagegames.com/joshw/T2D/plan_screenshots/pool.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;This is a little pool &amp;quot;game&amp;quot; (not quite a full game, but you can knock balls around).  Art by Matt Mitman, thanks *tons* Matt!  My real-life pool game has improved by about 10x since we started working on this thing.  And, I have to be honest, T2D has probably been delayed a little, due to time lost playing this thing.  ;)&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Simple undersea scene:&lt;/b&gt;&lt;br&gt;&lt;img src='http://public.garagegames.com/joshw/T2D/plan_screenshots/fish.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;Next, a little undersea screen-saver type demo.  This screenshot doesn't really do it justice.  Melv created some *fantastic* dynamic lighting effects for this thing.  Melv's friend &lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=17033'&gt;Craig Ball&lt;/a&gt; helped out with this demo, and the great art was produced by Craig Fortune and Nauris Krauze of the &lt;a href='http://www.de-railed.com/' target=_blank&gt;De-railed&lt;/a&gt; team, with a little help from &lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=43562'&gt;Jeff Gran&lt;/a&gt;, a talented intern here in the office.  Thanks guys!&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Checkers!&lt;/b&gt;&lt;br&gt;&lt;img src='http://public.garagegames.com/joshw/T2D/plan_screenshots/checkers.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;The best-looking checkers game ever created?  ;)  If so, it's thanks to Nauris and Craig once again!  These guys rock.  &lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=370'&gt;Pat Wilson&lt;/a&gt; did most of the coding for this game, thanks Pat!  This demo is still being worked on, it'll have some cool features that aren't displayed in this pic yet.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Side-scrolling shooter:&lt;/b&gt;&lt;br&gt;&lt;img src='http://public.garagegames.com/joshw/T2D/plan_screenshots/mars.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;None of these demos have much gameplay at all, they're really just meant to show off a little bit of what Torque 2D can do.  But Melv has been cranking away on this Mars attack shooter, and it's actually pretty fun to play.  I guess earlier today Melv's whole office had a big high score competition for this one.  You get power-ups like triple-shot, shields, and side-kick ships, and your goal is to destroy the swarms of enemies that fly your way.  This demo has been totally re-coded since IGC, but it was originally written in &amp;lt; 9 hours by &lt;a href='http://angrydev.blogspot.com/' target=_blank&gt;Pat&lt;/a&gt;, who it should be clear to everyone by now, rocks.  Nate Feyma and &lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=5263'&gt;Alex Swanson&lt;/a&gt; created this great art, thanks guys!&lt;br&gt;&lt;br&gt;&lt;br&gt;So there you have it.  :)  T2D is just around the corner!  None of these demos took more than a dozen hours or so of coding, so T2D really lets you focus on game design and art.  I can't wait to see what everyone does with this thing!  Let's launch this puppy!!  &lt;br&gt;&lt;br&gt;And once again, many, many, many thanks and congratulations to Melv for all his hard work on T2D.  Melv, it has been an utter pleasure working with you.  With the help of the awesome community around here, I'm sure this thing is going to be worth all of the hard work we've put it on it.  It's gonna feel great to see all the work put to use in helping people make cool new games!&lt;br&gt;&lt;br&gt;For technical info on T2D, see my ridiculously long informal tech overview .plan: &lt;a href='http://www.garagegames.com/blogs/20592/7092'&gt;T2D core classes&lt;/a&gt;, and &lt;a href='http://www.garagegames.com/blogs/20592/7164'&gt;T2D core systems&lt;/a&gt;.  Or.. just pick T2D up in a few days, and see for yourself!</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/20592/7164">
		<dc:format>text/html</dc:format>
		<dc:date>2005-02-11T01:57:19+00:00</dc:date>
		<dc:creator>Josh Williams</dc:creator>
		<title>Friday Feb 11 1:57</title>
		<link>http://www.garagegames.com/blogs/20592/7164</link>
		<description>Torque 2D informal technical overview .plans, pt 2.  All the nitty-gritty on T2D's core systems.&lt;br /&gt;&lt;br /&gt;Alright, here it is!  First, my sincere apologies for the delay with this .plan... it's really cool that some of you have been looking forward to it, and I wish I could've found time to get it done right away.  For as long as this .plan is, it didn't take too long to actually &lt;i&gt;write&lt;/i&gt;, it was just hard to find the time to do it.  There's been lots of actual work to do on T2D (let alone other cool projects!), so it was tough to justify taking time away to write this up.  Finally got some time over the weekend though, and just got time to go back and edit / clean this monster up.  Anyway, I hope some people find this thing interesting.  Got some good feedback on the last .plan, so I figured I'd try to do the same here... only &lt;i&gt;more&lt;/i&gt;! ;)&lt;br&gt;&lt;br&gt;In the &lt;a href='http://www.garagegames.com/blogs/20592/7092'&gt;last .plan&lt;/a&gt;, I went over T2D's core classes, describing what T2D objects are capable of and how they're structured.  Many people actually seemed interested to hear about all these nitty-gritty details.  The geek factor around here is way too high to be healthy.  Which is why I like this place so much. &lt;br&gt;&lt;br&gt;So, let's dig in again.  This time around, we'll take a look at T2D's core systems.  Only now, I'm going to out-geek all of you.  ;)  In fact, this .plan has so much detail, I've had to create breakout sections in the discussions of collision detection and physics.  Those topics contain some blocked sections, like this...&lt;br&gt;&lt;blockquote&gt;&lt;font size=1&gt;Quote:&lt;br&gt;&lt;hr height=1 noshade&gt;&lt;br&gt;Hello, I am a block section containing unnecessary but potentially interesting detail on certain aspects of T2D's sub-systems, or general asides on relevant but tangential topics.&lt;br&gt;&lt;hr height=1 noshade&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;br&gt;These sections can safely be skipped without breaking the main thread of this .plan.  These breakouts contain asides, explanations of the reasoning for why certain design decisions were made, and other discussions that might be interesting, but aren't necessary to the main technical overview.  I thought some people would find them interesting, but want to make it easy for anybody who's not interested to skip 'em.&lt;br&gt;&lt;br&gt;Also, some of the breakout sections are *really* long.  One in the physics section weighs in at 6 pages long.  But, rather than having all that text on this page and forcing folks who don't want to read it scroll-through everything, I've created separate little landing pages for that content, and I just link to the pages from within the block sections below.  Also, this .plan was too big for the site to handle, literally-- it puked when I tried to post this behemoth.  (Take that Davis Ray Sickmon! ;)&lt;br&gt;&lt;br&gt;Okay, before getting started, let me give everyone a quick update on T2D's development status.  Here in the last couple weeks of development (hint!), we've been pushing &lt;i&gt;really&lt;/i&gt; hard, and making great progress.  Melv is incredible, and I've been putting in some long (but fun!) hours over here too.  &lt;br&gt;&lt;br&gt;First thing to report is that T2D beta testing is going extremely well.  Our ace team of beta testers never fails to hunt down even the tiniest bugs.  Check it out:&lt;br&gt;&lt;br&gt;&lt;img src='http://public.garagegames.com/joshw/T2D/plan_screenshots/JessicaT2D.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;That's Melv's baby daughter Jess, pounding away on T2D, and I'm happy to report that we passed the drool-plus-random-key-smashing test with flying colors!  &lt;br&gt;&lt;br&gt;GG Associates have been hammering on T2D for a while now too, and it's going great.  I'd particularly like to thank &lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=15718'&gt;Dan MacDonald&lt;/a&gt; and &lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=3213'&gt;Anthony Rosenbaum&lt;/a&gt; for their thorough testing and detailed feedback.  You guys rock.&lt;br&gt;&lt;br&gt;On the development front, we're just about to finish the final release candidate build of T2D!  It's been through five beta builds already, including 3 major revisions, so we're confident this puppy is ready to go.  From here it's just finishing up documentation, demos, merging in some of the excellent work &lt;a href='http://angrydev.blogspot.com/' target=_blank&gt;Pat&lt;/a&gt; has done, adding some better GUIs, and then doing the final installer packaging, etc.  In addition, Melv is doing some new editor work, described below.  All in all, the release candidate will be out almost immediately!  Of course, confident as we are, we still need to put this last release candidate through testing, so don't expect T2D in your hands right away or anything.  Trying to be really careful and give it a lot of testing love.  But, it's obviously not very far away now.  :)&lt;br&gt;&lt;br&gt;The biggest development update to talk about is that we've decided to do our own simple tile editor for the Early Adopter release, instead of just doing .fmp / Mappy support.  Mappy importing is still planned at some point, but after a looooong conversation and debate on the subject that lasted until 6 or 7am for me a few nights ago, Melv and I decided that the best thing would be to do our own little editor.  Mappy is great, but no engine I'm aware of has as powerful a tile system as T2D.  As such, Mappy just wasn't designed to support such a flexible system, and can't take full advantage of it.  Doing a Mappy importer and working around the limitations seemed pretty simple on our first look, and it still isn't going to be too awfully hard, but we decided at this point time would be better spent working on our own stuff.  If we're going to burn much dev time on this task, we'd rather produce something that will let people take advantage of T2D's tile system to a fuller extent.  Melv is cranking away on the tile editor probably as I type right now, and it's one of the last things to go in this final (hopefully) release candidate build.  &lt;br&gt;&lt;br&gt;Well, that's where things stand at the moment.  Very exciting!  I hope appetites are whetted.  Now, let's dig into T2D's core systems, as promised.  The structure is similar to the last .plan, but we're describing systems instead of classes here.  We'll cover the collision, physics, layer and group, mount, object picking, world limit, camera, scenegraph, and window systems, as well as discuss briefly the systems T2D inherits from TGE itself.&lt;br&gt;&lt;br&gt;Okay ready?  Collision is first-up, then physics.  These first two topics are complicated, but very important, so get ready for long reads in these sections. :)&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Collision&lt;/b&gt;&lt;br&gt;T2D's collision system underwent a pretty interesting development cycle, a brief history of which is in one of the breakout sections below.  We want T2D to be, far and away, the best 2D engine around when it's fully complete (after the Early Adopter period is over).  We know that the collision system T2D provides will be crucial in achieving that goal, and we want indie developers to have the best collision system around at their disposal.  As such, after much thought, research, and discussion Melv and I set some very aggressive goals for T2D's collision system.  We wanted to:&lt;ul&gt;&lt;li&gt;Allow detailed collision polygons to be specified for objects and accurately collide them&lt;br&gt;&lt;li&gt;Let users enable or disable individual objects' ability to cause or be affected by collisions&lt;br&gt;&lt;li&gt;Easily restrict collisions between particular groups of objects&lt;br&gt;&lt;li&gt;Return rich collision information&lt;br&gt;&lt;li&gt;Make it possible for people to customize the system, even with scripting only&lt;br&gt;&lt;li&gt;Easily hook-up to custom collision response systems&lt;br&gt;&lt;li&gt;Use the same system for tile-maps and normal scene objects&lt;br&gt;&lt;li&gt;Handle hundreds of objects in a scene at once&lt;br&gt;&lt;li&gt;Create a network-ready collision scheme &lt;br&gt;&lt;li&gt;Do it all in a very easy to configure manner, so that anyone can use T2D with little hassle&lt;/ul&gt;The design we came up in the end met all these requirements, and Melv, as always, knocked the implementation out of the park (and in an ungodly-short amount of time, with very few bugs... all of which have since been squashed ;).  So, I'm happy to report that T2D meets all of the lofty goals set above.  We have even more cool stuff in mind for the future of the collision system, and we've designed this version with those in mind.  &lt;br&gt;&lt;br&gt;So how does this whole system work?  Let's take a look.&lt;br&gt;&lt;br&gt;&lt;i&gt;Object collision settings:&lt;/i&gt;&lt;br&gt;As described in the last .plan, all script-instantiable T2D classes are derived from fxSceneObject2D, and this class defines the default collision system.  Part of this definition allows objects to specify a collision polygon.  Collision polys can either be regular n-gons, or custom convex shapes.  This means that you can define tight-fitted custom polygons for your sprites, which makes it possible to create nicely accurate collision systems.  Also, the collision polys are sized along with the object, so you don't have to worry about adjusting them.&lt;br&gt;&lt;br&gt;In addition, objects can be configured to &amp;quot;send&amp;quot; and &amp;quot;receive&amp;quot; collisions.  When an object sends collisions, it means that it's capable of causing collisions on other objects.  Receiving collisions means that an object can be affected by collisions.  &lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;font size=1&gt;Quote:&lt;br&gt;&lt;hr height=1 noshade&gt;Aside: Sending and receiving collisions, what?&lt;br&gt;------------------------------------------&lt;br&gt;To make this more clear... objects in the real world of course both send and receive collisionswhen you and your buddy stand at opposite ends of the room, run at each other, and smack together (because you are smart and you find this activity enjoyable), you both send a collision to the other and receive a collision from the other.  Your skull sends a collision to your buddy's, and your buddy's skull receives your collision.  And vice versa.  &lt;br&gt;&lt;br&gt;Torque itself has a similar concept of active and passive colliders, but it doesn't define a clean interface regarding it.&lt;br&gt;&lt;hr height=1 noshade&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;In the majority of T2D games, most objects will no doubt be configured to both send and receive collisions, just as in the real-world.  But we've made it possible to easily turn off either of these capabilities for any object.  So, you can create objects which can cause collisions in other objects, but are themselves immune to being affected by collisions (maybe bullets would have this profile.  Tiles have this profile in T2D by default).  Or, you can create objects which don't cause collisions themselves, but can be affected by colliding with other objects (feathers?).  Or create objects that do neither and are exempted from the collision system altogether.  Note as well that these settings can be dynamically twiddled, so you can switch on or off an object's ability to send or receive collisions at any time.&lt;br&gt;&lt;br&gt;Objects can also be assigned to layers, and to groups, and these layers and groups can be used in collision detection.  For example, you might assign a player's avatar and their bullets to a specific layer and group.  Likewise, you might assign all enemies and their fire to the same layer, in a different group.  Then, you can set collision layer and group collision masks on the player and enemies-- for the player, you might turn on collisions with its own layer, but turn off collisions with its own group (meaning that the player can't harm himself with his own projectiles), and turn on collisions for the enemy group.  For enemies, you might do exactly the same, but perhaps turn on collisions with their own group as well, so that enemies can shoot each other.  If you were making a multiplayer game (in the near future ;), you might turn off friendly fire by assigning players on the same team and their projectile fire to the same group, and turning off their collision with the team's group.&lt;br&gt;&lt;br&gt;Besides offering fine-grained control over the kinds of collisions you want different objects to have, this layer and group system also allows you to speed up collision detection.  No matter how optimized the code (and T2D's collision code is nicely optimized, again, Melv is an animal), collision detection is an expensive operation. This can especially be true when you're dealing with accurate swept-polygon collision (more info below), as T2D does.  So, by specifying that an object should only collide with particular layers and groups, you can reduce the collision search space substantially, speeding up the entire process.&lt;br&gt;&lt;br&gt;Finally, objects can be configured with a script collision callback function.  In this way, players can over-ride or add to the default collision detection and response system.  By default, the collision callback is passed the time of collision, up to two contact points, collision normals, and a custom string field which can be used to extend the callback info on the cheap.  :)  One obvious use of this system would be to generate explosions at the points of contact between two objects.  Or, your collision script might implement its own custom physics processing system... maybe you want some of your objects to actually deform upon collision.  You could modify your sprites, perhaps amongst some pre-set collection of deformation frames, and their collision polygons in this callback.&lt;br&gt;&lt;br&gt;All in all, this puts a lot of power and flexibility in the user's hands.  Objects can be very precisely configured for various collision behaviors, and the system itself is very easy to extend or over-ride, even just in script.  It's a very powerful and flexible collision specification system, but it only takes a few lines of script to get set-up.  Also, these settings can be declared in datablocks, so you can create prototype datablocks for collision settings and share them across many objects, making it even quicker and easier to get the collision set-up.&lt;br&gt;&lt;br&gt;So, those are the collision configuration options.  Now, let's see how collisions are detected and processed.&lt;br&gt;&lt;br&gt;&lt;i&gt;Collision Detection:&lt;/i&gt;&lt;br&gt;Like most collision systems, Torque 2D detects collisions in two phases.  The first is a broad-phase, early-out collision test, which narrows the list of potential collisions.  The second is a nitty-gritty collision test which returns accurate collision information both for when objects overlap, and for when they are disjoint but collide in forward-time.  We'll look at both of these systems in more detail.&lt;br&gt;&lt;br&gt;First, broad-phase, early-out collision is very common in collision detection schemes, as most of you no doubt already know.  The goal is to very quickly determine objects that will definitely &lt;i&gt;not&lt;/i&gt; collide with each other, so that you don't have to check these objects against each other in the next, much more expensive narrow-phase of exact object-object collision detection.  &lt;br&gt;&lt;br&gt;T2D's scenegraph sorts objects into &amp;quot;bins&amp;quot;, which are just regular space divisions.  Its broad-phase collision check compares objects in the same bin against axis-aligned bounding-boxes (AABBs) to determine whether the two objects might collide.  This technique is very common, and it's tough to beat in 2D.&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;font size=1&gt;Quote:&lt;br&gt;&lt;hr height=1 noshade&gt;Aside: Broad-phase CD information:&lt;br&gt;---------------------------------------------------------&lt;br&gt;One can use a large variety of techniques in broad-phase collision checks.  Some of the best information and resources on the subject can be found &lt;a href='ftp://ftp.cs.unc.edu/pub/users/manocha/PAPERS/COLLISION/cms.pdf' target=_blank&gt;here&lt;/a&gt;, &lt;a href='http://www.cs.unc.edu/~geom/collide/packages.shtml' target=_blank&gt;here&lt;/a&gt;, and in the book Real-Time Rendering.  Most recent research in this area is specifically targeted at handling 3D collision detection with highly complex objects.  In these scenarios, AABB checks are not usually optimal, and the most recent research is generally hostile toward using AABB checks in the broad phase.  But, Melv is smarter than all these fool academics. ;)  In all seriousness though, 2D game scenes are generally quite well-suited for using AABB in early-out, broad-phase collision pass.&lt;br&gt;&lt;hr height=1 noshade&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;Once T2D is done deciding what objects definitely will not collide with each other, it has a much smaller (hopefully) list of objects which might possibly collide with each other.  As stated above, T2D is capable of performing swept-polygon collision detection, which Melv and I agreed on using after much research, discussion, and debate (see the development history breakout below... this particular decision took 20+ pages of dialogue between Melv and I. :).  This system is capable of detecting both overlapping objects, and disjoint objects which collide in forward-time.  It is very robust, and is designed to fit perfectly with the upcoming networking changes we'll be making (see &lt;i&gt;another&lt;/i&gt; aside below, on networked collision detection, for more info on why this is true).&lt;br&gt;&lt;br&gt;Swept-volume collision detection is an active area of current research, so I guess you could say that T2D is right on the cutting-edge here. ;)  We aren't doing anything too hyper-fancy (like leveraging GPU-acceleration for the sweep calcs), but the swept system we've got is pretty nice.&lt;br&gt;&lt;br&gt;And you know what one of the best things about the whole system is?  Despite the fact that Melv was working to get all this stuff implemented absolutely as quickly as possible, all of this code is very clean and very well commented.  Even though this all involves complicated, math-heavy algorithms, you can actually read the code and understand it without even needing a piece of scratch paper. &lt;br&gt;&lt;br&gt;The other cool thing about all this code is that it's &lt;i&gt;fast&lt;/i&gt;.  Yet, it's easy to use and extend.  Imagine that, complicated chunks of code that are still clean, easy to extend, easy to interface with, and fast.  I love Melv.  :)&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;font size=1&gt;Quote:&lt;br&gt;&lt;hr height=1 noshade&gt;Aside: Collision detection schemes&lt;br&gt;--------------------------------------------------------&lt;br&gt;Collision detection is a well-established field of study, but it's still researched very actively, in both academic and private fields like game development, CAD, CGI, robotics, and others. For anyone interested, here's a quick aside on collision detection. The goal of this discussion isn't to offer a detailed tutorial on collision detection algorithms (this .plan is getting long enough already). Rather, I hope to give a feel for how some common collision schemes work, so you can see a context for T2D's collision detection, if you aren't already familiar with these algorithms.&lt;br&gt;&lt;br&gt;... &lt;a href='http://public.garagegames.com/joshw/T2D/plan_resources/colldet_algos.html' target=_blank&gt;Read more!&lt;/a&gt; ... this one is about 1.5 pages long, so it's broken out separately.  Very briefly talks about the usual kinds of narrow-phase collision detection schemes: feature-oriented (Linn-Canny), simplex-oriented (GJK), and methods more appropriate for dealing with less strenuous CD constraints.&lt;br&gt;&lt;hr height=1 noshade&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;font size=1&gt;Quote:&lt;br&gt;&lt;hr height=1 noshade&gt;Aside: Network-ready collision detection:&lt;br&gt;---------------------------------------------------------------&lt;br&gt;What's so hard about networked collision detection anyway? If you haven't thought about it much yet, read this quick aside and see why preparing for the inevitable move to networked simulation was so important for T2D.&lt;br&gt;&lt;br&gt;... &lt;a href='http://public.garagegames.com/joshw/T2D/plan_resources/colldet_networking.html' target=_blank&gt;Read more!&lt;/a&gt;... this one is about 1.5 pages long as well, so it's broken also out separately.  Offers a high-level overview of the problems associated with network simulation in general and as applied to collision detection in particular.&lt;br&gt;&lt;hr height=1 noshade&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;font size=1&gt;Quote:&lt;br&gt;&lt;hr height=1 noshade&gt;Aside: A brief development history of T2D's collision detection system&lt;br&gt;------------------------------------------------------------------------------------&lt;br&gt;See how we got where we are today.  Torque 2D originally had a very simplistic collision detection system, which Melv created just as a temporary placeholder.  It used simple bounding box checks for collision detection and checked only for overlaps, in discrete time (see the aside above for a simple discussion on why this doesn't work too well in general, and especially not in networked games).&lt;br&gt;&lt;br&gt;... &lt;a href='http://public.garagegames.com/joshw/T2D/plan_resources/colldet_devhistory.html' target=_blank&gt;Read more!&lt;/a&gt;... Another 1.5 pager, also broken out.  Get the inside scoop!&lt;br&gt; &lt;hr height=1 noshade&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;Alright, we now have a pretty good understanding of how T2D's collision detection system works.  It meets all the goals we set for it, including being highly configurable.  It's capable of handling lots and lots of objects at once, yet returns accurate collisions against detailed collision polys, thanks both to the two-phase systems used and the speed of the actual code Melv wrote.  And, it's got a headstart on networking.  &lt;br&gt;&lt;br&gt;For those of you who weren't already familiar with the subjects, I hope the asides on collision detection were somewhat interesting.  Now, let's move on and look at T2D's collision response system, and its implementation of rigid-body physics.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Physics&lt;/b&gt;&lt;br&gt;Okay, we've looked at collision detection in T2D, so let's look at the other side of the coin: collision response.  &lt;br&gt;&lt;br&gt;T2D defines a totally customizable and overridable collision response system.  The basic tenant was to first assume that individual developers will want the ability to create their own collision response schemes, either in C++, or in script.  So, we tried to design the physics so that customization or replacement would be as simple as possible.  For developers that don't want to implement their own collision response system though, we planned out a robust default system.  T2D's default collision response system utilizes an impressive rigid-body physics model, which any object can plug into.  And again, developers have the ability to leverage the default rigid body dynamics system to meet their own needs, by extending and customizing the default behavior (even just with scripts, using T2D's collision callback).&lt;br&gt;&lt;br&gt;Before we go into more detail about implementing custom collision response, let's take a detailed look at T2D's default system.  For all the talk above about how cool it is that T2D makes it easy for you to define your own collision response systems, or to extend the default system, I think one of the very best features of T2D now is its default rigid body physics capabilities.  It feels great that all kinds of 3D engines this year are bragging about their rigid body physics... and here is T2D, starting to catch up with 'em, in one less dimension. ;)&lt;br&gt;&lt;br&gt;&lt;i&gt;Rigid-Body Dynamics in T2D&lt;/i&gt;:&lt;br&gt;Torque 2D's rigid body dynamics simulation models all the standard bells and whistles, including inertia, linear velocity, angular velocity, friction, restitution, relaxation, and damping, and has an easy method for applying impulse-forces and torque.  If you aren't a pro with rigid body physics, check out the breakout section below for an overview of rigid body dynamics in general, and their simulation in games in particular.  If you are already a pro (or just don't care to read all the junk in the breakout), skip over and continue on to read more about T2D's physics system.&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;font size=1&gt;Quote:&lt;br&gt;&lt;hr height=1 noshade&gt;Aside: Rigid-body dynamics, real-time simulations, and Torque 2D:&lt;br&gt;---------------------------------------------------------------------------------------------------&lt;br&gt;This discussion offers a simple overview of the common algorithms used in real-time rigid-body dynamics simulations, and relates them to the physics system in Torque 2D.&lt;br&gt;&lt;br&gt;...&lt;a href='http://public.garagegames.com/joshw/T2D/plan_resources/rigidbody.html' target=_blank&gt;Read more!&lt;/a&gt;... this one is about 6 pages long, needed to break it out.  Sub-sections:&lt;br&gt;&lt;br&gt;Introduction&lt;br&gt;Methods of real-time rigid-body simulation&lt;br&gt; -Approaches for constraint and contact handling&lt;br&gt; -Integrators&lt;br&gt;Closing&lt;br&gt;References&lt;br&gt;&lt;hr height=1 noshade&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;Torque 2D's rigid-body system simulates Newtonian physics.  Below is another breakout very briefly defining the physics terms used to describe T2D's simulation capabilities.&lt;br&gt;&lt;br&gt;&lt;blockquote&gt;&lt;font size=1&gt;Quote:&lt;br&gt;&lt;hr height=1 noshade&gt;Aside: Brief definition of physics terms:&lt;br&gt;---------------------------------------------------------------&lt;br&gt;Here are quickie definitions of the terms used to describe T2D's simulation of Newtonian rigid body physics. (For physics buffs and sim nuts, I'm just using commonsensical definitions here, not scientifically or pedagogically satisfactory ones)&lt;br&gt;&lt;br&gt;Linear velocity - The speed and direction an object is moving at&lt;br&gt;Angular velocity - The speed and direction an object is rotating at&lt;br&gt;Friction - Resistance to moving or rotating&lt;br&gt;Restitution - Bounciness&lt;br&gt;Relaxation - Returning to a balanced state after a disturbance  &lt;br&gt;Damping - Loss of energy over time&lt;br&gt;&lt;hr height=1 noshade&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;Configuring objects for use in T2D's rigid-body dynamics is very simple.  You just need to enable automatic collision response for the object (see below), and set-up the object's physics parameters.  These parameters include friction, restitution, relaxation, damping, density, and a force scaling factor.  The parameter naming is obvious: the first four are the coefficients used to model the object's physics properties (see definitions above), density is used to calculate the object's mass based on the area of its collision poly, and force scaling is used, as you might expect, to lessen or heighten the net force applied to the object at any time.&lt;br&gt;&lt;br&gt;Note as well that T2D once again leverages datablocks to make the process of setting up physics properties as simple and quick as possible for developers.  T2D defines the fxCollsionMaterialDatablock, which contains the six parameters above.  Multiple objects can share the same datablock, so using collision material datablocks can be a real development time-saver.&lt;br&gt;&lt;br&gt;There are additional physics parameters which can be used.  For instance, objects can be configured with maximum and minimum linear and angular velocities.  They can also be affected by an individual, constant gravitation force, or be set-up to automatically rotate at a given pace.  These additional parameters are part of the core fxSceneObject2D definition, and the corresponding datablock can be used to set-up these properties too.  &lt;br&gt;&lt;br&gt;&lt;i&gt;Customizing physics&lt;/i&gt;:&lt;br&gt;So, T2D's default collision response system is pretty darn impressive.  But, you're not forced to use it.  Similarly to how collisions work, any object in T2D can have its ability to send or receive updates to/from the default physics system turned on or off.  For more information on &amp;quot;sending&amp;quot; and &amp;quot;receiving&amp;quot; collision-related information in T2D, see the discussion on the subject in the collision detection section above.  &lt;br&gt;&lt;br&gt;For a T2D object which you want to be fully a part of the default physics simulation, you'd enable both sending and receiving of physics.  For an object which you didn't want to part of the physics simulation at all, you'd disable both.  If you wanted an object to be able to cause automated physical reactions in other objects, but not be affected by default physics itself, you'd enable the ability to send physics, and disable the ability to receive.  You'd do the opposite if you wanted an object which could react to other objects using the default physics system, but that wouldn't initiate default physical responses with other objects itself.&lt;br&gt;&lt;br&gt;In this way, you can completely (or partially) detach any object from T2D's default physics system.  You are then totally free to implement your own collision response system, in C++ or even just in script.  Or, you could customize the existing system, again, either in C++, or in script.&lt;br&gt;&lt;br&gt;Should also note that the ability to turn default physics off is independent of whether collision detection on an object is enabled or disabled (though they are obviously related... turning off collision sending and receiving but turning on physics won't get you far).&lt;br&gt;&lt;br&gt;All in all, besides having a great built-in physics simulation, T2D makes it easy for you to develop your own collision response / physics, if you so choose!  &lt;br&gt;&lt;br&gt;And that's a quick look at T2D's collision response!  Pretty nitty-gritty details on how the physics system itself works can be found on the page linked in that aside.  Now, with collision detection and response out of the way, all the hugely-long and boring sections of this .plan are done with.  There are lots of other nice T2D systems to discuss, but they don't require very long-winded explanations.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Mounting&lt;/b&gt;&lt;br&gt;Torque 2D allows you to mount objects to other objects.  A &amp;quot;mount&amp;quot; is an attachment between two objects.  When you mount one object to another, the two objects can automatically move around together (more information on how mounted movement can be controlled below).&lt;br&gt;&lt;br&gt;Now, &lt;i&gt;any&lt;/i&gt; object can be mounted to &lt;i&gt;any&lt;/i&gt; other object in T2D.  As Melv mentioned in my last .plan, that means that you could even mount a tile layer to a particle.  :)  This is pretty cool, especially once you start considering all the neat stuff you can do with mounts.&lt;br&gt;&lt;br&gt;It's really fast setting up mounts and you can have multiple objects attached to another.  And any of those mounted objects can have one or more objects mounted to them.  And those secondarily mounted objects can have other objects attached to them.  And so on. :)  So, it's easy to create long chains and big webs of mounted objects.&lt;br&gt;&lt;br&gt;Besides that, you can mount objects to any point on another object. So, mounted objects need not be attached at the center of an object, and mounted objects needn't be spaced out evenly around their parent's perimeter or anything.&lt;br&gt;&lt;br&gt;In addition, you can specify whether a mount should be rigid (such that the mounted object always stays the same distance from its parent), or use mount forces.  With a mount force, you can dictate that a mounted object should move with its parent after the specified force is being exerted on the mount connection.  When the parent object moves, a mounted object with a mount force will lag behind the parent's movement, catching up if/when the parent comes to rest.  &lt;br&gt;&lt;br&gt;For example, you can create a long chain of mounted objects, each with a mount force defined.  Then, you can the parent object, move it horizontally and start shaking it up and down.  If you've got your mount forces configured correctly, you'll see the chain begin to &amp;quot;slither&amp;quot; like a snake, with each object in the chain eventually moving sideways, and bouncing up and down.  You can change the mount forces at any time too, so you could easily make parts of the chain whip quickly into position next to their parents, or stretch further behind.  Or, if you'd had the same long chain of mounted objects and had specified that each mount be rigid, when the parent object started moving, the whole chain would move simultaneously.  It'd be a straight line of objects, following the parent's movement exactly.&lt;br&gt;&lt;br&gt;And that's not all... you can also do fancy mount rotations.  For example, you can tell a mounted object to adhere to its parent's rotation, so that when the parent rotates, the mounted object will too (and rotations are controlled in the same way, via rigid or force-based connections).  Or, you could tell the mounted object &lt;i&gt;not&lt;/i&gt; to follow the parent's rotation, so that the parent object might be spinning away, but the mounted object isn't affected at all.  Or, you can rotate the &lt;i&gt;mount&lt;/i&gt; itself.  In this scenario, the parent object might not be rotating, and the mounted object might not be rotating itself either, but the mounted object's position would be rotating about the parent object (so the mounted object is orbiting the parent).  Neat!  You can even set-up automatic rates of rotation for all these things.&lt;br&gt;&lt;br&gt;Well the possibilities are endless here.  In no time, you could set-up a boss with a bunch of mounted shields rotating around him that the player has to blast off or shoot between.  Note as well that you can assign mounted objects to different collision groups, so it'd be easy even to do stuff like have a &amp;quot;fire shield&amp;quot;, &amp;quot;ice shield&amp;quot;, &amp;quot;water shield&amp;quot;, etc that you had to hit with particular kinds of weapons.  &lt;br&gt;&lt;br&gt;I don't know... I'm just not a good game designer, but there's obviously tons of cool stuff you can do with this system.  There are lots of creative people around here, so I'm sure you're already brewing up neat gameplay ideas that could take advantage this functionality.  Also, mounted objects + physics = fun, believe me.  :)  This is another neat little system that T2D provides out of the box, and it makes it easy to pull off all kinds of fun pieces of gameplay.&lt;br&gt;&lt;br&gt;Oh, almost forgot... there is also a &amp;quot;link&amp;quot; system in T2D.  Link nodes / points can be set-up exactly like mount points, however links don't imply a relationship with another object.  Rather, links can be used to track a specific point on an object.  Say you have a spaceship with a big rotating gun... you could set-up a link point on the tip of the gun, and use it to spawn a projectile from the correct spot at any time.  Very handy.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Layers and Groups&lt;/b&gt;&lt;br&gt;We've already discussed layers and groups a little in the collision detection section.  But layers and groups are useful for more than just customizing and speeding up collision detection.&lt;br&gt;&lt;br&gt;Objects can be assigned to layers, and you can specify that layers be sorted for rendering.  In fact, the sort order for layers can be changed at will, and objects can be re-assigned to different layers at any time.  Also, objects on the same layer can be assigned intra-layer z-ordering, and this ordering can be changed at any time.  In this way, T2D gives you very fine-grained control over the z-ordering and rendering of your objects, &lt;br&gt;&lt;br&gt;Unlike many 2D APIs / libraries, T2D doesn't limit you to using a small number of rendering layers.  So, T2D makes it easy, for example, to set-up very nice-looking parallaxed backgrounds with lots and lots of layers.&lt;br&gt;&lt;br&gt;And groups are a handy tool all around.  You can use groups not only as a nice way to set-up collidable collections, but to help keep track of and manipulate logical classes of objects.  &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Object picking&lt;/b&gt;&lt;br&gt;There are many utilities in T2D that were put in to help developers handle common game problems.  One thing that comes up a lot in games is object picking.  Sometimes, you want players to be able to click on particular objects and select them.  Or, if you were making a 2D RTS, you'd want to be able to let your players click-drag a box around units and select them all.&lt;br&gt;&lt;br&gt;These are common object picking problems, and T2D has a nice picking interface.  There are routines to pick objects that intersect with a point (mouse click), line, or area within the world.  Picking is basically a collision detection test, and Torque 2D performs accurate picking against object collision polygons.  This also means that it's easy to specify that a pick should only return objects in certain layers or groups.  Again, if you were making an RTS, you might have a player's units in a group, so it'd be easy to pick just the player's units.  &lt;br&gt;&lt;br&gt;Also, it's possible to have custom pick functions.  Tile maps, for example, have a special pick function which can return the logical tile(s) that intersect with a pick query.&lt;br&gt;&lt;br&gt;This is just one example of the neat utilities T2D provides.  Again, the goal throughout T2D's development has been &amp;quot;hey, let's make it easy for people to make 2D games!&amp;quot;  So, we've tried to provide a bunch of stuff like this.  Credit to Melv for caring so much about indie developers and wanting to put in the time and effort it takes to create all these functions, even though they're not the most fun things to implement.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;World limits&lt;/b&gt;&lt;br&gt;The term &amp;quot;world limit&amp;quot; is a bit of a bad descriptor for what this particular system actually does.  &amp;quot;World limits&amp;quot; in T2D are used to define the region in which a particular object can move around.  Probably a better term would be &amp;quot;movement regions&amp;quot; or some such.&lt;br&gt;&lt;br&gt;Regardless, world limits are a nice little feature of T2D.  They allow you to set, on a per-object basis, the rectilinear area in which an object can exist in.  &lt;br&gt;&lt;br&gt;The world limit system is turned off by default-- T2D objects don't have world limits unless you explicitly turn them on for it-- because using world limits has a (small) performance penalty.  Of course, performance was &lt;b&gt;extremely&lt;/b&gt; important to us during T2D's design and development, so world limits were turned off by default.  &lt;br&gt;&lt;br&gt;When world limits are on though, you can do several neat things.  Besides defining a valid area for an object to exist and move around in, you can also utilize various built-in world-limit collision-responses.  By calling the setWorldLimit(...) method, you can specify what kind of response the object should have when it collides with a world limit.&lt;br&gt;&lt;br&gt;The first world limit collision mode is &amp;quot;null&amp;quot;, which tells T2D not to do anything special to the object when it collides with its world limit.  Next is &amp;quot;rigid&amp;quot;, which tells T2D to use the normal rigid-body dynamics system to handle world limit collision.  Next is &amp;quot;bounce&amp;quot;, which will bounce the object back from the world limit by perfectly reflecting the angle of incidence and maintaining the object's incoming speed.  Next, &amp;quot;clamp&amp;quot; zeroes the object's perpendicular velocity component (colliding against a side wall of the world limit will result in the x component of the object's velocity being zeroed immediately).  &amp;quot;Sticky&amp;quot; results in the object coming to rest against the world limit edge it hit.  And &amp;quot;kill&amp;quot; results in the object being deleted once it reaches a world limit.&lt;br&gt;&lt;br&gt;As with all collisions in T2D, world limit contacts are detected accurately against an object's collision poly.&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;b&gt;Scenegraph&lt;/b&gt;&lt;br&gt;Torque 2D is a scenegraph-driven framework.  (I'm assuming anyone who's read this far into the overview is already familiar with scenegraphs.  If you're not, there are many good descriptions available online.) &lt;br&gt;&lt;br&gt;We've already indirectly discussed many aspects of T2D's scenegraph in the sections on collision detection, physics, and layers here, and I won't re-tread.  T2D's scenegraph uses a bin system to divide space and store locality information for scene objects.  As per usual, this information is used to cull and optimize rendering, collision detection, etc.  The scenegraph provides a great interface for initializing, querying and updating the scene, and you'll see many examples of how it can be used below.&lt;br&gt; &lt;br&gt;The scenegraph is used to run the overall game simulation, and can be used to specify scenegraph-wide simulation parameters.  For example, with one simple call to a scenegraph's setConstantForce(...) method, you can apply a global force to all objects in the scene which adhere to the default physics system.  One obvious use for this functionality is to set-up (or modify) gravity for a scene.  You can also pause the scene time at any moment, and resume it whenever you like.&lt;br&gt;&lt;br&gt;The camera system in T2D is really flexible.  You can set windows to cover a given area of the scene with a specific zoom level, and you can zoom, rotate, and pan the view any time.  Also, you can give the view window a target position or area and have it move there smoothly over time from its current position.  From there, you can undo / revert the view's move, returning to the old position.  In fact, the last 64 view target calls are stored in T2D, so you can revert / undo up to 64 view moves.  There are lots of cool possibilities with this system, and with just a little extension, you could define a nice easy interface for creating complex camera paths and scenes.&lt;br&gt;&lt;br&gt;Man, so many other features. Check it out:&lt;br&gt;&lt;br&gt;-&lt;i&gt;Camera Mounts&lt;/i&gt;: the view window can be mounted to any object, and the mount can work identically to any other mount.  So, you can make the camera follow an object (like the player avatar) with a rigid or force-based connection.&lt;br&gt;&lt;br&gt;-&lt;i&gt;Special effects&lt;/i&gt;: effects like camera shaking are easy. In fact, camera shakes are implemented specifically out of the box, and you can specify a shake period and intensity, as in Torque's own default camera.  This is great for stuff like providing feedback when a player gets hit.    &lt;br&gt;&lt;br&gt;-&lt;i&gt;Multiple scenes, multiple views!&lt;/i&gt; You can have multiple scenegraphs running at the same time, and multiple windows on any scenegraph.  So, you can have multiple separate scenes, and/or multiple views of the same scene.  (Nintendo DS, anyone? ;)&lt;br&gt;&lt;br&gt;-&lt;i&gt;Render filtering&lt;/i&gt;: You can dynamically filter what kinds of objects should be rendered at any given time.&lt;br&gt;&lt;br&gt;-&lt;i&gt;Scene saving a loading!&lt;/i&gt; The entire scene state can be serialized and saved at any time.  Likewise, saved scene data can be loaded, and simulation can pick up right where it left off.  Or, you can load a scene, pause time, and re-set any properties of the scene or its objects that you like.  &lt;br&gt;&lt;br&gt;Finally, the scenegraph is capable of detailed debug and performance reporting.  You'll see in some forthcoming screenshots how nifty this system is.  The collision poly, oriented-bounding box, and axis-aligned bounding box for all scene objects can be visualized at any time.  And you can turn on automatic reports for all kinds of information, including: the total object count in the scene, the current FPS, the number of objects which are potentially going to be rendered (those which haven't been culled from the current view), the number of potential collisions, the number of current collision contact points, the percentage of objects currently colliding with each other, and the time it took to process physics for the current frame, amongst other information.  Of course, you can also customize the debug and performance queries to provide whatever other information you'd like to have.  These reporting tools are very helpful when it comes to debugging and optimizing a game!&lt;br&gt;&lt;br&gt;The T2D scenegraph is really slick, and just having a hardware-accelerated, scenegraph-driven 2D engine is impressive in and of itself.  Between this and the preceding sections on collision detection, physics, and layers, you should have a pretty good feel for what T2D's scenegraph is capable of.  The scenegraph is basically the central system of T2D, which is saying a lot, considering all that T2D can do.  So, it would take many pages to fully describe all of what the scenegraph can do and how it all works.  Suffice it to say, the scenegraph + the base fxSceneObject2D class form the very core of Torque 2D, and the two provide an extremely powerful basis to build from, as I hope has been indicated by the discussion so far.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Torque integration&lt;/b&gt;&lt;br&gt;Torque 2D, of course, integrates with the overall Torque platform.  Specifically, T2D takes advantage of Torque's cross-platform support, GUI system, scripting, and sound.  &lt;br&gt;&lt;br&gt;That's a lot of stuff to cover, but I assume folks here are familiar with these already, so I won't go into detail about them.  But, one of T2D's biggest advantages overall is that it is built on all these great core Torque technologies.  Just because it's built on Torque, T2D almost automatically becomes one of the only cross-platform 2D engines, and with Torque's system, it's set-up to go to even more platforms.  It also gets to use a full-fledged scripting language and powerful console command processing capabilities.  T2D gets a great GUI system for free (which is undergoing a major overhaul here at the office, btw, you'll see Ben and the rest of us talking about that more in the future), and the GUI editor to go along with it.  Also, T2D gets to use Torque's audio functionality, so it has good sound support.&lt;br&gt;&lt;br&gt;Just taking those things right there... even if T2D had just a normal rendering system, physics, etc, it'd still be one of the best engines around.  Now, it's just insane.  :)&lt;br&gt;&lt;br&gt;Quick note: you've no doubt noticed that networking isn't part of the list of Torque technologies which T2D takes advantage of.  That's true, for now.  For the Early Adopter release, we've implemented a temporary networking solution.  Essentially, you can use CommandToServer() and CommandToClient() calls to do many kinds of networked games.  For example, T2D ships with an example networked multiplayer checkers game.  &lt;br&gt;&lt;br&gt;However, full-on, Torque-style networking isn't a part of T2D just yet.  It will be very soon after the initial Early Adopter release though, and that'll be another outstanding system T2D gets to leverage for free.  &lt;br&gt;&lt;br&gt;The reason we didn't include full networking in this initial release is that we didn't want T2D objects to take on the overhead associated with deriving from Torque's GameBase class.  For T2D, we'll be splitting out tick processing (similar to the work Pat has done recently) and implementing networking from there.  That said, all of T2D's systems have been designed with networking in mind.  Collision and physics are the stickiest things to get networked, and Melv and I were &lt;i&gt;extremely&lt;/i&gt; mindful of the need to network those systems in the future when we were designing them.  &lt;br&gt;&lt;br&gt;Getting networking in won't be a difficult task, but we wanted to get T2D out into people's hands as soon as possible.  It's already an outstanding solution for most games.  Even people who have fast-paced multiplayer games in mind can pick up T2D now and begin learning to use it, knowing full-well that robust, highest-quality networking support as is standard with the Torque platform is on the way.&lt;br&gt;&lt;br&gt;&lt;br&gt;And with that, we've covered each of T2D's major core systems.  Woo!  &lt;br&gt;&lt;br&gt;Of course, it's also important to note that you'll be able to get the full C++ source code for T2D (details on how you get it will be announced very soon).  The code is all structured to be as clean to read and understand as possible, and one of the main design goals for the entire T2D architecture was to make it easy to customize and extend.  &lt;br&gt;&lt;br&gt;In addition, T2D ships with about 100 pages of detailed documentation (and that's not counting source-code comments).  This documentation includes a tutorial in which a small game is built from the ground up, a detailed technical overview (a stripped-down and cleaned-up version of these .plans), and an object reference.  So, you'll be covered when you start learning how to use and/or customize this sweet 2D engine.  :)&lt;br&gt;&lt;br&gt;Okay, thanks to everyone for reading.  It was fun writing this .plan and I'm sorry it took me longer to get started on it than I hoped.  But, I guess the upside there is that I was able to get lots done on T2D in the mean time!  Hopefully some of you found this an interesting read.&lt;br&gt;&lt;br&gt;Catch you all around, and watch this space for more T2D info in the very near future!  Launch sequence starting in...</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/20592/7092">
		<dc:format>text/html</dc:format>
		<dc:date>2005-02-01T01:25:55+00:00</dc:date>
		<dc:creator>Josh Williams</dc:creator>
		<title>Tuesday Feb 1 1:25</title>
		<link>http://www.garagegames.com/blogs/20592/7092</link>
		<description>Exposing the seedy underbelly of T2D&lt;br /&gt;&lt;br /&gt;In this .plan, I'm taking a first-pass at a technical overview for T2D.  I'm hoping there are some crazy fools out there like me who can't seem to get enough details about cool technologies like T2D.  So, hopefully somebody will find this (long and boring) .plan interesting (despite it's long and boring nature).   (&lt;b&gt;Update&lt;/b&gt;: this .plan covers T2D's core classes, read the &lt;a href='http://www.garagegames.com/blogs/20592/7164'&gt;next .plan&lt;/a&gt; to read about it's core systems![/url]&lt;br&gt;&lt;br&gt;I'm sure this .plan won't answer all your questions about T2D, but it should end up being a nice overview. I promised to do something like this in my last .plan, so here we go!&lt;br&gt;&lt;br&gt;To start off, for most of us here, all I really need to say about T2D is that it's developed by Melv May.  :)  For anyone that knows the guy, it is immediately possible to conclude with a high degree of confidence that T2D must, technically speaking, friggin rock.  Melv has been working on T2D like a madman, and it is a quality product of outstanding engineering.  &lt;br&gt;&lt;br&gt;All told, T2D represents about 9 months of dedicated, impassioned work on Melv's part, and by us here at GG for the past 6 months or so.  I know how much thought and effort has been poured into T2D, because I've been right there for most of the ride.  I've already got great memories of late-night chats with Melv where we approached every design decision from a hundred angles, trying to make sure we'd end up with the best 2D game engine out there.&lt;br&gt;&lt;br&gt;I'm very proud of Torque 2D.  I think every day we get closer to achieving our goal for this engine, and by the end of this year, I do expect T2D will be far and away the best 2D game engine around.  I love being a part of its creation.  &lt;br&gt;&lt;br&gt;Even at this point, as we push to finalize T2D for its Early Adopter release, the engine already has numerous advantages over other 2D engines.  It'll be very exciting to see what the early adopters do with all this power, especially as the year goes on and we add easy to use editors and more core technology.&lt;br&gt;&lt;br&gt;Okay, if I were reading this .plan right now, I'd be skimming ahead to get to the juicy parts, so let's just have at.  :) &lt;br&gt;&lt;br&gt;Below, you'll find a pretty detailed technical write-up on T2D's core feature set.  It's &lt;i&gt;long&lt;/i&gt;, and it's &lt;i&gt;dry&lt;/i&gt;, so most people will probably just want to skip or skim this one.  But for those of you out there like me who love reading this kind of stuff... enjoy!&lt;br&gt;&lt;br&gt;&lt;i&gt;&lt;b&gt;T2D Technical Overview&lt;/b&gt;&lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Overview&lt;/b&gt;&lt;br&gt;Torque2D is a platform for 2D game development, built on top of the Torque Game Engine.  This means T2D gets to leverage Torque's scripting, sound, platform, GUI, and other core systems.  T2D implements its own scenegraph-driven, hardware-accelerated 2D rendering and game world systems.&lt;br&gt;&lt;br&gt;In addition to the systems provided by TGE's core, Torque 2D's custom systems include everything you want in a 2D engine: sprites, tiles, particles, collision, physics, advanced camera capabilities, object mounting, parallax scrolling, rendering layering, object picking, and more.  Each system is designed for power, ease of use, performance, and to be as readily customizable and extendable as possible.  Scene saving and loading, multiple viewports, debug rendering and easy to visualize performance statistics, along with about 100 pages of tutorial and reference documentation round out the package, with many time-saving editors on the way.&lt;br&gt;&lt;br&gt;Let's look at the primary classes T2D defines:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Core object  fxSceneObject2D&lt;/b&gt;&lt;br&gt;T2D defines a base class from which every other major class is derived, the fxSceneObject2D. fxSceneObject2D provides:&lt;ul&gt;&lt;li&gt;Extendible, efficient swept-polygon collision detection&lt;br&gt;&lt;li&gt;Rigid-body physics&lt;br&gt;&lt;li&gt;Unlimited, hierarchical object mounting&lt;br&gt;&lt;li&gt;Assignment to rendering layers&lt;br&gt;&lt;li&gt;Object picking with points, lines, and areas&lt;br&gt;&lt;li&gt;Individual world-limit definition, clamping and collision response&lt;br&gt;&lt;li&gt;Object scaling, rotation, and automated / fixed rotation&lt;br&gt;&lt;li&gt;Object serialization&lt;br&gt;&lt;li&gt;Scriptable interface and callbacks&lt;br&gt;&lt;li&gt;Debug and performance reporting&lt;br&gt;&lt;li&gt;Customizability and extendability for simple creation of custom objects&lt;/ul&gt;fxSceneObject2D has no rendering overhead, and since all of the performance-heavy functions (eg collision detection and response) it does implement can easily be disabled, it is a perfect core class on which to build other, more specialized classes.  Since all of T2D's primary classes are built on the fxSceneObject2D, every object in T2D inherits the powerful capabilities listed above.  &lt;br&gt;&lt;br&gt;Each of these capabilities and systems will be described in more detail later.  First, we'll cover the fxSceneObject2D subclasses.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Sprites  fxStaticSprite2D, fxChunkedSprite2D, fxAnimatedSprite2D&lt;/b&gt;&lt;br&gt;T2D has a very impressive sprite system.  Sprite rendering in T2D is ultra-fast and sprites, like all T2D objects, can be scaled and rotated in graphics hardware.  Sprites are divided into two main kinds: those with complex animation capabilities, and those without.&lt;br&gt;&lt;br&gt;&lt;i&gt;fxStaticSprite2D&lt;/i&gt;&lt;br&gt;The fxStaticSprite2D is a general-purpose sprite, allowing you to place (and move) renderable shapes in your scene that don't require complex animation sequences.  The &amp;quot;static&amp;quot; in the name refers to the animation frames, as opposed to the object's ability to move around in the scene.  Static sprites are perfectly free to move about the scene, and their rendering frames can even be changed, but they don't have a powerful animation interface.&lt;br&gt;&lt;br&gt;fxStaticSprite2D uses an &amp;quot;image map&amp;quot;, defined as an fxImageMapDatablock2D, to identify it's graphics frames.  More information on image maps can be found below, but the basic idea is that image maps are used to load a sheet of images for use by sprites (and scrollers, tiles, and particles).&lt;br&gt;&lt;br&gt;fxStaticSprite2D objects can be moved around the scene, and can have full collision, physics, etc.  Again, these objects, like all the core objects in T2D, derive from fxSceneObject2D which provides a very powerful base to build from.&lt;br&gt;&lt;br&gt;Related to the fxStaticSprite2D is the fxChunkedSprite2D.  These sprites are very similar to static sprites, but are better for handling very large imagery.  In particular fxChunkedSprite2D uses the fxChunkedImageDatablock2D, which is capable of loading imagery from non-power-of-two textures.  More information on the fxChunkedImageDatablock2D can be found in the appropriate sub-section below.  Ultimately, this interface for loading imagery from non-power-of-two sources will be simplified even further, but for now, T2D makes it easy to load images from any source by using these chunked resource capabilities.  The fxChunkedSprite2D is also capable of tiling sprite imagery across its surface, according to parameters you can set.&lt;br&gt;&lt;br&gt;&lt;i&gt;fxAnimatedSprite2D&lt;/i&gt;&lt;br&gt;The fxAnimatedSprite2D provides very powerful tools for creating, playing, and managing animated sprites.  Animated sprites (and animated tiles and particles) rely on animation datablocks and animation controllers in order to play animations.  In order to get a grasp of the fxAnimatedSprite2D, we must first examine these systems:&lt;br&gt;&lt;br&gt;The fxAnimationDatablock2D datablock class can load frames from an image map and define an animation as a chain of frames.  The animation datablock can then define the play time of the animation, and set whether the animation cycles, and even whether the animation should start playing with a random frame.&lt;br&gt;&lt;br&gt;The fxAnimationController2D is a utility class used by fxAnimatedSprite2D (as well as by animated tiles and animated particles) to control and play animations.  &lt;br&gt;&lt;br&gt;The fxAnimationDatablock2D and fxAnimationController2D abstract the process of defining, setting up, playing, and manipulating animations.  Since there are multiple kinds of animated objects in T2D, this is very convenient, as each animated class can utilize the same functionality.  This encapsulation of behavior is also nice because it allows you to easily define your own custom animated classes by leveraging the functionality provided by the standard animation classes.&lt;br&gt;&lt;br&gt;Now, with all the animation functionality provided by the animation datablocks and controllers, creating animated sprites is a fairly simple matter.  fxAnimatedSprite2D::playAnimation(name) is used to play a particular animation, as defined and controlled by the sprite's animation controller.  fxAnimatedSprite2D also defines a callback function, onAnimationEnd(), so you can perform some custom actions when an animation ends.&lt;br&gt;&lt;br&gt;Note that static sprites have none of the animation overhead incurred by the fxAnimatedSprite2D.  Thus, while all sprites could really be animated sprites with no animations defined or played, it was decided to create the specialized static sprite class, just for that added bit of specialization and efficiency.  Structuring things this way also makes it easier for people to get a grip on sprites-- making it as simple as possible for people to set-up basic sprites, without worrying about any extra calls or functionality, is a good thing.&lt;br&gt;&lt;br&gt;That's the overview of sprites in T2D.  Sprites are pretty much the core of most any 2D game, so Melv was careful to treat 'em right, and we've all been careful about suggested modifications to these core classes.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Setting basic properties and loading images datablocks, and image maps&lt;/b&gt;&lt;br&gt;Torque2D makes heavy use of datablocks.  (If you aren't familiar with Datablocks, I encourage you to read the scripting documentation here on the site).  Every object in T2D has a datablock associated with it, which can be used to configure its initial or static properties.&lt;br&gt;&lt;br&gt;&lt;i&gt;Image maps&lt;/i&gt;&lt;br&gt;Image maps, or the fxImageMapDatablock2D, are some of the most important and most used datablocks in T2D.  As described above, image maps can be used to load imagery from a sheet of frames.  Image maps essentially read textures and then extract image frames from the texture.  These image frames can be extracted in one of three ways: single frame, color-keyed, or celled.&lt;br&gt;&lt;br&gt;Using single frame extraction will result in an entire texture being loaded as a single frame. &lt;br&gt;&lt;br&gt;To use color-keyed extraction, the source image must be separated by lines of a particular color-- each image to be extracted must boxed-in by straight lines of this particular color, and the color must not be used anywhere else in the image.  Often, people use pure black, pure green, or bright pink for this key color.  When in color-keyed extraction mode, the image map reads the upper-left texel on a texture and sets that as the color-key.  Note that this is the same system used to define image maps for GUI controls in standard TGE.  &lt;br&gt;&lt;br&gt;Celled extraction means that the source image is split into a regular grid of equally-sized cells, and that each cell should be loaded as a separate image frame.  You specify the size of each grid, and the number of grids, and the image map can load any frame from the source texture.&lt;br&gt;&lt;br&gt;Image maps, again, abstract and encapsulate the process of loading graphics frames from source imagery.  This way, multiple objects can extract renderable frames from a source image without having to do the actual loading work themselves.  This architecture also means that multiple objects (even of different types) can use the same image map to load their particular animations.  This can end up saving texture memory usage, by decreasing the need to define redundant animation frames in separate textures.  Once again, this functionality also makes it easy to define your own custom, renderable objects by utilizing the image map's frame loading functionality.&lt;br&gt;&lt;br&gt;Besides the normal fxImageMapDatablock2D, there is also the fxChunkedImageDatablock2D, as mentioned above.  This datablock is similar to the normal image map, but allows for loading from non-power-of-two sources.  Again, the interface for handling non-power-of-two source imagery will be simplified soon after the initial Early Adopter release of T2D, but this system provides the baseline functionality needed to allow people to load from irregular sources.&lt;br&gt;&lt;br&gt;Okay, now we've got some basic ideas about T2D down... we know a little about the high-level features provided to all T2D objects by the fxSceneObject2D, we know about T2D's sprite capabilities and animation system, and we have an understanding of T2D's architecture for loading images.  &lt;br&gt;&lt;br&gt;Next, we'll continue digging into each of the objects provided in T2D, and then we'll go over the major processing systems provided by default in T2D and the core fxSceneObject2D.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Scrolling backgrounds  fxScroller2D&lt;/b&gt;&lt;br&gt;T2D provides a really simple way to get scrolling backgrounds in your game.  There is a more powerful methodology for backgrounds in T2D, (..tile maps, which are discussed below) but the fxScroller2D provides a very simple, efficient way to use scrolling backgrounds.&lt;br&gt;&lt;br&gt;fxScroller2D loads its image using the image map interface (and can only have one frame).  This image is then scrolled, according to parameters set either in the fxScrollerDatablock2D, or by calling the setScrollMode(mode, dx, dy) method.  Mode is a boolean parameter specifying whether the scroller should scroll or remain static, and dx and dy define the scrolling speed, in world units per second, to be used.&lt;br&gt;&lt;br&gt;Regarding world units, T2D has a nice system for handling coordinates in your game world.  Whether working with the game world itself, with background scrollers, tiles, sprites, or anything else, you don't need to worry about the actual pixel size of anything-- T2D does all the translation for you, and you can simply work in world coordinates.  This kind of functionality is standard in 3D engines, but (surprisingly) some 2D engines out there don't provide this nice level of abstraction.  Scrollers are one area where this consistent coordinate system is very useful.&lt;br&gt;&lt;br&gt;Again, the main advantage of fxScroller2D objects is that they are very easy to set-up, and very performance-friendly.  They can also be used to get parallax-scrolling up and running in no time.  By defining multiple scrolling backgrounds, you can easily sort and assign them to different rendering layers (more info on this later), and assign different scrolling speeds.  Thus, scrollers in the far background can scroll slowly, while those in the foreground scroll by rapidly.  This creates the cool, pseudo-3D &amp;quot;parallax&amp;quot; scrolling effect common in many 2D games, and it's incredibly easy to get going with Torque 2D.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Tiles&lt;/b&gt;&lt;br&gt;I've looked very thoroughly at &lt;i&gt;a lot&lt;/i&gt; of 2D engines out there, especially the major, well-known ones, and I am happy to say that T2D is well on it's way to having the most powerful and flexible tile system around.  It took us quite a bit of wrestling to figure out the best way to handle tiles, lots of lunch discussions with Pat and Alex here at GG, and many more late night design sessions with Melv, but we finally ended up with an outstanding system.  There's still more work to do on tiles, but the core system is in place, and I'm very happy with it.  Let's check it out:&lt;br&gt;&lt;br&gt;One impressive feature of T2D's tiles is their integration with the physics system.  Objects can collide with tiles, and these collisions can generate full physics responses (on the objects).  Given how powerful T2D's collision and physics system is, this is a very nice, and uniquely powerful, feature of the tiles.  It was also a tough one to get in, let alone to make performant.  After some long conversations about how to handle the tiles, Melv and I came up with an excellent plan for them, and Melv knocked the implementation out of the park.  The tile interaction in T2D is really great (and we're not done yet ;)&lt;br&gt;&lt;br&gt;Overall, there are three kinds of tiles in T2D: static, animated, and &amp;quot;active&amp;quot;.  Static and animated tiles are very similar to their sprite counterparts, and they use the same encapsulated sub-objects to manage their imagery and animations.  The cool thing to note here is that T2D supports richly animated tiles, should you wish to use them!  Not all 2D engines do.  :)&lt;br&gt;&lt;br&gt;Active tiles are a different animal.  Active tiles define a skeleton which you can use to create tiles which actively affect the world.  One example that's been talked about before is creating turrets as active tiles in your tilemap.  This has some efficiency advantages versus creating a tile layer and associating a stand-alone turret object with it.  There are lots of creative ways to take advantage of this functionality.  We (probably) won't ship the Early Adopter version of T2D with a good example of an active tile, but soon afterward, we should produce some.  Eventually, we both expect that there'll be libraries of active tiles out there people can use and customize.&lt;br&gt;&lt;br&gt;Another neat feature of T2D's tile system is that each tile object can have an associated script which runs once the tile is displayed.  Again, this is a cool little feature that allows you to more easily create really dynamic tiled environments.&lt;br&gt;&lt;br&gt;T2D tilemaps can also be panned, in any direction (with a little bit of set-up work)&lt;br&gt;&lt;br&gt;Object picking also works for tiles-- you can, for example, determine exactly what tile (if any) currently lies directly beneath a current screen or world-space point.&lt;br&gt;&lt;br&gt;Those are some of the big features of T2D tiles.  Now, here's how the system works in general:&lt;br&gt;&lt;br&gt;T2D stores tiles, at the highest level, in a tile map-- fxTileMap2D.  fxTileMap2D objects create, maintain, and destroy fxTileLayer2D objects, which in turn handle the virtual tile objects.  fxTileMap2D can load and save maps from and to disk.&lt;br&gt;&lt;br&gt;The fxTileLayer2D object is the meat of the tile system.  Where the fxTileMap2D class provides some high-level loading and management routines, fxTileLayer2D actually does the dirty tile work.  Tiles are simply defined as a grid in the tile layer, and the tile layer can control any individual tile, determining whether the tile is static, animated, or active, setting the tile's script callback, changing the tile, etc.  &lt;br&gt;&lt;br&gt;The tile map can set-up the tile layer's actual dimensions, and how many individual tiles it contains.&lt;br&gt;&lt;br&gt;The tile layer has some convenient features: for example it has a layer clear, which will remove all the information on the layer's grid.  Also, there are fine-grained animation controls on the tile layer, for example, you can force an animated tile to be &amp;quot;unique&amp;quot;, which means it will use it's own instance of an animation controller, so as not to be affected by potential changes to a central controller (non-uniquely animated tiles are animated together, and save some memory overhead and cpu overhead, as they all rely on the same instance of an animation controller).  Tile layers can also be panned, and can be set-up to for auto-panning at a  fixed rate.  Tile layers can be wrapped as well-- in fact, you can control wrapping behavior independently along both major axes.&lt;br&gt;&lt;br&gt;Another important consequence of the tile layer's structure is that individual tiles can be deleted (cleared) and changed at any time.  So getting some truly dynamic and active tile maps is easy in T2D, you're not simply confined to static backgrounds and collision imagery.&lt;br&gt;&lt;br&gt;That's where things stand at the moment.  We have even more plans for tiles in T2D, but we'll wait until after the Early Adopter release to go into them in more detail.  One thing I will say now though is that we'll have support for non-rectilinear tiles as soon as possible.  For now, we just wanted to get the core backbone of the tiling system up and running.  We achieved much more than we originally set out to achieve with the tile system, I think.  And with this infrastructure in place, adding in new tile types won't be very difficult.&lt;br&gt;&lt;br&gt;Great.  So, there's all this awesome tile support in T2D.  But, how do you load tiles?  It'd be a royal pain to have to set-up tile maps all by hand in script.  Thus, T2D will ship with an FMP loader, meaning you can load tile sets created in the well-known (and cross-platform) Mappy tile editor.  Then, you can take advantage of T2D-specific tile functionality via script setup.  In the future, we'll either be creating our own tile editor, or extending an existing editor (perhaps Mappy).&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Particles&lt;/b&gt;&lt;br&gt;Okay, I'm going fanboy mode here, I can't help it: &lt;br&gt;&lt;br&gt;Particles are incredible in T2D.  In my opinion, T2D has the most impressive real-time particle system in any engine.  Once we get a finalized, user-friendly particle editor in, I know T2D owners are going to lose hours and hours of time just creating pretty particle effects.  I love this system, and I have to give all props to Melv for coming up with it.&lt;br&gt;&lt;br&gt;So, how's it work?&lt;br&gt;&lt;br&gt;There are three layers to the particle system: effects, and emitters, and particles themselves.  Effects contain an unlimited (virtually) collection of particle emitters, and control these emitters over time.  Particle emitters spew particles in a fine-grain controllable, time-dependent manner. Particles themselves are like very lightweight, efficiently rendered animated sprites as they can utilize animation controllers to change their rendered frame over time.&lt;br&gt;&lt;br&gt;&lt;i&gt;fxParticleEffect2D&lt;/i&gt;&lt;br&gt;Particle effects are essentially a large collection of specific fields and particle emitter sub-objects which are used to define a particle effect.  The effect's fields can be split into two groups: those which change over time, and those which are static.&lt;br&gt;&lt;br&gt;Fields which change over time are controlled via a time-graph system, meaning that you specify time and key-value pairs for these fields.  For each field, the effect will interpolate between the currently adjacent key-values, arriving at the proper values at the specified time.  &lt;br&gt;&lt;br&gt;For example, the quantity_scale is a time-dependent particle effect field.  This field, like many effect fields, specifies a value by which to multiply the particle emission quantity specified in the effect's particle emitter objects themselves.  Essentially, this provides particle effects the ability to override their sub-object emitters' settings, inducing effect-wide changes in emitters.  &lt;br&gt;&lt;br&gt;In this example, we might specify that we want all emitters that are a part of this effect to begin spewing particles faster and faster after two seconds, peaking at twice their normal rate after two more seconds, and then ramping down to their normal emission rate after another second.  To do so, we'd specify time and key-value pairs for this field: (time, key-value) : (2.0, 1.0), (4.0, 2.0), (5.0, 1.0).  In script, assume we have a whole particle effect set-up, then applying this change to the effect would work like so:&lt;br&gt;&lt;br&gt;%exampleEffect.selectGraph(&amp;quot;quantity_scale&amp;quot;);&lt;br&gt;%exampleEffect.addDataKey(2.0, 1.0);&lt;br&gt;%exampleEffect.addDataKey(4.0, 2.0);&lt;br&gt;%exampleEffect.addDataKey(5.0, 1.0);&lt;br&gt;&lt;br&gt;This tells the effect that we want it to ramp up all of its particle emitter's particle emission quantities to twice their normal rate between seconds two and four of the effect, and to be back to normal by the fifth second the effect plays.&lt;br&gt;&lt;br&gt;An example of a non-time-dependent field is the effect's timeRepeat, which is accessed via getTimeRepeat() and setTimeRepeat(scale). This field affects the timescale of all emitters that are a part of the effect.&lt;br&gt;&lt;br&gt;&lt;i&gt;fxParticleEmitter2D&lt;/i&gt;&lt;br&gt;Emitters are actually very similar to effects, they utilize a similar system of fields, and whereas effects spawn emitters, emitters spawn particles.  Emitters define a long list of fields which can be used to control particle emission behavior.  These fields are also split into two groups: time-graph controlled, dynamic fields which are interpolated over an unlimited chain of time / key value pairs, and static flags which parameterize the emitter's general behavior.  &lt;br&gt;&lt;br&gt;Examples of dynamic emitter fields include particlelife_base and particlelife_variation.  These two fields are used to determine the lifetime of each particle spawned by the emitter.  The base component defines the default particle lifetime, while the variation component defines a range [-variation, variation] of deviance from the base value.  This variation is randomly distributed, using a standard linear random generator.&lt;br&gt;&lt;br&gt;Emitters use this base / variation concept for many of their dynamic fields.  The particle emission quantity, particle size, particle speed, emission force, and other fields all use this dual base / variation time-graph controlled paradigm.  Other fields don't use it, for example, visibility_life  is time-graph controlled but has no variance.  This field controls the length of time for which each particle is visible.&lt;br&gt;&lt;br&gt;Now, all this leads to a very powerful, highly flexible particle effect system.  But it'd be awfully nasty if you had to control it all via scripting.  Luckily, T2D Early Adopter comes with a (very basic!) particle editor.  This saves you from ever having to script any particle effects.  The Early Adopter particle editor isn't at all the prettiest or most user-friendly tool ever made, but it is fully functional and you can do anything with it that you can in script.&lt;br&gt;&lt;br&gt;Emitters efficiently handle particle spawning and control, keeping a particle pool handy to minimize memory allocs.  Particle rendering is quite efficient as well, though there are still some important optimizations to make after the Early Adopter release.&lt;br&gt;&lt;br&gt;Emitters also provide a rich interface for querying their current field values, and include debug rendering information.&lt;br&gt;&lt;br&gt;What's more, particle effects can be saved to disk, for later re-use.&lt;br&gt;&lt;br&gt;Very cool.  And that's not all... like all of the standard objects in T2D, particle effects are derivatives of fxSceneObject2D.  That means effects can be manipulated like any other object.. they can be moved, mounted, scaled, assigned to groups and layers, and even have physics interaction!  &lt;br&gt;&lt;br&gt;I don't think even Melv fully realizes how cool this system is.  And if he does, then he's way the hell too humble about it.  By all rights, he should be out screaming his head off about what a badass he is for creating it.  :)  In all honesty, I'd pay just for a real-time particle effects system like this.  There are particle systems without as much power (let alone being real-time!) as this system out there that people pay pretty big bug bucks for, for use in film, scientific visualization, etc.&lt;br&gt;&lt;br&gt;Once we have a polished particle editor, I bet all kinds of people will produce dazzling particle effects, and I'm sure we'll all while away hours just sitting around staring at them.  Mmm.. shiny.&lt;br&gt;&lt;br&gt;&lt;i&gt;Note:&lt;/i&gt; the T2D reference documentation contains a complete list of every script-accessible field and method for particle effects and emitters, as it does for all objects in T2D.&lt;br&gt;&lt;br&gt;&lt;i&gt;Further Note:&lt;/i&gt; presently, T2D interpolates over time-graphs only linearly, but in the future other common interpolators will be implemented.&lt;br&gt;&lt;br&gt;&lt;i&gt;Scoop:&lt;/i&gt; just a couple weeks ago I was contacted by two experienced engineers who are interested in porting this particle system up to Torque (and TSE).  So, no promises, but watch this space for more details.  :)&lt;br&gt;&lt;br&gt;&lt;br&gt;With that, we've covered the basic objects found in Torque 2D.  Between the core scene object, sprites, scrollers, tile maps, and particle effects, you have all you need to make every kind of 2D game.  &lt;br&gt;&lt;br&gt;I'm just realizing that this .plan is almost ten full pages long already.  If I'm lucky, maybe two or three people out there actually read the whole thing.  It's still not done yet, but it'd probably be best to split this technical overview up into two pieces.  This .plan covered the core objects in the engine, so watch for &lt;b&gt;Episode II: Attack of the Core Systems&lt;/b&gt; tomorrow! (Or very soon afterward, depending on how much sleep I'm willing to deprive myself of tonight).  You can see the outline for tomorrow's .plan below.  (&lt;b&gt;Update&lt;/b&gt;: &lt;a href='http://www.garagegames.com/blogs/20592/7164'&gt;the next .plan is out&lt;/a&gt; :)&lt;br&gt;&lt;br&gt;Thanks for reading.  If you made it straight-through the whole thing, with its utter lack of pictures or funny personal anecdotes or really any redeeming qualities of any sort, hats off to you, friend.  You are indeed a hardcore technophile.  ... You pervert.&lt;br&gt;&lt;br&gt;&lt;b&gt;Collision&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Physics&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Layers and Groups&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Mounting&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Object picking&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;World limits&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Camera&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Scenegraph&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Torque integration&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;C++ source available&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Detailed documentation&lt;/b&gt;&lt;br&gt;&lt;br&gt;(continued in the &lt;a href='http://www.garagegames.com/blogs/20592/7164'&gt;next .plan&lt;/a&gt;</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/20592/6984">
		<dc:format>text/html</dc:format>
		<dc:date>2005-01-12T13:16:56+00:00</dc:date>
		<dc:creator>Josh Williams</dc:creator>
		<title>Wednesday Jan 12 13:16</title>
		<link>http://www.garagegames.com/blogs/20592/6984</link>
		<description>Torque2D!&lt;br /&gt;&lt;br /&gt;Well, this is a .plan I've been anxious to write for quite some time: &lt;b&gt;&lt;i&gt;Torque 2D&lt;/i&gt; is almost here!&lt;/b&gt;  &lt;br&gt;&lt;br&gt;As we speak, T2D is out for what should be the last major testing cycle it needs.   We can't wait to see what everyone is going to do with it... this is going to be a fun year. &lt;br&gt;&lt;br&gt;T2D is coming out under the Early Adopter program, at a reduced price, and it'll be released very soon!  We want to bring you all on the inside early again, as with TSE.  Early Adopter means you get your hands on the technology as soon as possible, and get an inside line as we develop more tech, tools and editors.  &lt;br&gt;&lt;br&gt;Work will continue on T2D until it's the best little game maker ever.  :)  Of course, it feels like we're practically to that point already, so I'm very glad T2D's launching sooner rather than later.  The technology in T2D is way beyond &amp;quot;Early Adopter&amp;quot;, more than stable enough to use in serious game development, and we can't wait to get equally powerful tools into everyone's hands.&lt;br&gt;&lt;br&gt;&lt;img src='http://public.garagegames.com/joshw/T2D/plan_screenshots/fantasy_anim_1.jpg'  alt=&quot;&quot;&gt; &lt;img src='http://public.garagegames.com/joshw/T2D/plan_screenshots/fantasy_anim_2.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;Shots from a T2D IGC demo, thanks to Alex Swanson and Pat Wilson.&lt;/i&gt;&lt;br&gt;&lt;br&gt;Torque 2D is all about rapid development.  It takes care of the technology, and let's you focus on gameplay and art.  &lt;br&gt;&lt;br&gt;Bleh, that probably sounds like marketing-speech.  Look... let me be honest, I don't know what to say other than... I have a &lt;b&gt;very&lt;/b&gt; hard time not asking Jeff if I can go on a 3 month sabbatical and just make a game with T2D.  Seriously, I get to work with it &lt;i&gt;a lot&lt;/i&gt;at least a little every single daybut not enough. I would like nothing better than to make a T2D game.  It's that good.  This thing is Melv's baby, so I can brag on it without being too pompous... it is amazing .  I'm proud to be a part of the development, and of Melv for doing such an outstanding job.&lt;br&gt;&lt;br&gt;Check out the features:&lt;ul&gt;&lt;li&gt;&lt;b&gt;Sprites&lt;/b&gt; (static and animated)&lt;br&gt;&lt;li&gt;&lt;b&gt;Tiles&lt;/b&gt; (static, animated, dynamic, script-executable, unlimited layers, import from popular formats, fully scrollable)&lt;br&gt;&lt;li&gt;&lt;b&gt;Collision&lt;/b&gt; (swept-poly collision, highly optimized, returns rich info: contact points, normals, time of impact, etc, collision with individual tiles)&lt;br&gt;&lt;li&gt;&lt;b&gt;Physics&lt;/b&gt; (full rigid-body dynamics: linear and angular velocity, mass, inertia, friction, torque, etc)&lt;br&gt;&lt;li&gt;&lt;b&gt;Particles&lt;/b&gt; (well... wow... watch the &lt;a href='http://www.subreal.net/vids/t2d_demo.zip' target=_blank&gt;video&lt;/a&gt;)&lt;br&gt;&lt;li&gt;&lt;b&gt;Documentation&lt;/b&gt; (tutorial, demo mission, and complete reference guide)&lt;br&gt;&lt;li&gt;&lt;b&gt;Complete C++ Source&lt;/b&gt;&lt;br&gt;&lt;li&gt;Beginnings of editors: particle, animation... sprite, tile, and much more coming&lt;br&gt;&lt;li&gt;Tons more... too much to mention really... parallax scrolling, mounted objects, statistics / performance HUD, object debug rendering, flexible camera, object picking, scene saving / loading, fully scriptable, Torque integration, much more!&lt;/ul&gt;In my next .plan, I'll go over all these features in detail, and watch for more info from Melv soon too.&lt;br&gt;&lt;br&gt;And did you catch that?  &lt;i&gt;C++ source&lt;/i&gt;... T2D was going to be binary only, but we decided that we had to see what people could do with the source in-hand.  Torque SDK owners will be able to purchase the full T2D source code.  Going to be fun seeing all the crazy stuff people do with it.&lt;br&gt;&lt;br&gt;In the end, there simply isn't a more powerful 2D engine out there.  We're very, very excited to launch T2D.&lt;br&gt;&lt;br&gt;Speaking of which, we'd love to roll out with some great demos, and if you'd like to help out, we'd be glad to give you a free copy.  Watch the forums in the next couple days for more details!&lt;br&gt;&lt;br&gt;&lt;img src='http://public.garagegames.com/joshw/T2D/plan_screenshots/mars_scroller_1.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;Shot from a T2D IGC demo, thanks to Alex Swanson and Pat Wilson.&lt;/i&gt;&lt;br&gt;&lt;br&gt;On a final note, and I don't mean to get too mushy here but... Melv May is an absolutely incredible guy.  T2D is his baby (besides his new, beautiful daughter), and it's got his mark all over it.  It's phenomenally well engineeredif you look at T2D and really consider all the design, production, and implementation decisions, you quickly realize how truly smart Melv is.  Moreover, he is incredibly easy to work with, and one of the nicest guys I've met.  One of the things I like most about my job here as GG's &amp;quot;3rd Party Development Director&amp;quot; is getting to work closely with guys like &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=8341'&gt;Dave Wyand&lt;/a&gt;, the crew over at &lt;a href='http://www.bravetree.com' target=_blank&gt;BraveTree&lt;/a&gt;, &lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=2311'&gt;Ed Maurina&lt;/a&gt;, &lt;a href='http://www.garagegames.com/my/home/view.profile.php?qid=5261'&gt;Ken Finney&lt;/a&gt;, Melv, and many more.  All these guys are shining examples of indie developers.. and more than that, they're indie developers who are just as passionate about helping other indies out as we are here at GG.  Melv, it's been a pleasure working with you bud.  :)&lt;br&gt;&lt;br&gt;Just had to spout a bit and give Melv proper credit for all his hard work... he's been working like a machine (despite my encouragements to take a break, once in a while at least). I hope he is very proud of T2D, I certainly am.&lt;br&gt;&lt;br&gt;I'd also like to say thanks to Pat Wilson for helping out with T2D.  Pat took on the task of implementing some of the less fun pieces of code we needed to write in order to make T2D a great product, and he, as always, did an excellent job.  I know Melv and I both would like to thank him for the hard work.  Alex Swanson helped put together a couple cool-looking IGC demos too, and it's always fun to see Alex show off his art skills.&lt;br&gt;&lt;br&gt;Thanks for reading everyone... this was probably a bit dry, what with the relative lack of pictures and all, but watch for more next time.  In my next .plan, I'm going to bore some people (and probably interest some others very, very much), and dig deep into some of the technical features of T2D.  Melv will be doing some cool .plans as well, so watch the page!&lt;br&gt;&lt;br&gt;(&lt;a href='http://www.garagegames.com/index.php?sec=mg&amp;amp;mod=resource&amp;amp;page=view&amp;amp;qid=6859'&gt;Previous T2D .plan&lt;/a&gt; (from Melv))</description>
	</item>
	<item rdf:about="http://www.garagegames.com/blogs/20592/6896">
		<dc:format>text/html</dc:format>
		<dc:date>2004-12-20T22:59:36+00:00</dc:date>
		<dc:creator>Josh Williams</dc:creator>
		<title>Monday Dec 20 22:59</title>
		<link>http://www.garagegames.com/blogs/20592/6896</link>
		<description>Despite rumors to the contrary, Santa &lt;i&gt;does&lt;/i&gt; exist... and his name is Dave Wyand.&lt;br /&gt;&lt;br /&gt;If you've already bought presents for your game dev teammates, return 'em.  The Torque ShowTool Pro is shipping for the holidays, and anything you got for your comrades is just gonna seem cheesy next to it.  ;)&lt;br&gt;&lt;br&gt;Dave Wyand and some of us here at the office have been pushing hard to get the Torque ShowTool Pro (the program formerly known as Looking Glass) out before the holidays.  Looks like it'll happen... which means it should be a very merry Christmas for all of us Torque devs!  If you've seen anything about the new ShowTool, you know exactly what I mean.  &lt;br&gt;&lt;br&gt;Dave's done a truly incredible job with TST Pro... it's going to be a huge boon to any Torque team who is wise enough to pick it up.  &lt;br&gt;&lt;br&gt;Well, pictures speak louder than words.  Witness the badass-ness: &lt;br&gt;&lt;br&gt;&lt;b&gt;View a shape's material detail, and mesh: &lt;/b&gt;&lt;br&gt;&lt;img src='http://www.alexswanson.com/torque/images/tstpro/render_materials_and_mesh.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Inspect a shape's nodes and joint structure: &lt;/b&gt;&lt;br&gt;&lt;img src='http://www.alexswanson.com/torque/images/tstpro/render_nodes_and_linebones.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;View shape solid-shaded, to verify lighting and shading:&lt;/b&gt;&lt;br&gt;&lt;img src='http://www.alexswanson.com/torque/images/tstpro/render_shaded_solid.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;View mesh sorting for objects with transparencies: &lt;/b&gt;&lt;br&gt;&lt;img src='http://www.alexswanson.com/torque/images/tstpro/render_sorted_mesh.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;(Lighter shades of grey are drawn last)&lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Analyze a shape's performance set-up by visualizing triangle faces and strips:  &lt;/b&gt;&lt;br&gt;&lt;img src='http://www.alexswanson.com/torque/images/tstpro/render_tristrips_and_mesh.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;(Triangles on the same tristrip are the same color)&lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Examine a shape's bone structure in detail:  &lt;/b&gt;&lt;br&gt;&lt;img src='http://www.alexswanson.com/torque/images/tstpro/render_ghost_solidbones_ortho.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;(Viewed with orthographic projection)&lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Inspect collision meshes:  &lt;/b&gt;&lt;br&gt;&lt;img src='http://www.alexswanson.com/torque/images/tstpro/render_boundingbox_and_details.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Investigate the shape hierarchy: &lt;/b&gt;&lt;br&gt;&lt;img src='http://www.alexswanson.com/torque/images/tstpro/DTS_hierarchy.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;View shapes with the &lt;a href='http://www.garagegames.com/pg/product/view.php?id=36'&gt;Lighting Pack&lt;/a&gt;:&lt;/b&gt;&lt;br&gt;&lt;img src='http://www.alexswanson.com/torque/images/tstpro/lightcontrol_and_lightingpack.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Dynamically examine Level-of-Detail: &lt;/b&gt;&lt;br&gt;&lt;img src='http://www.alexswanson.com/torque/images/tstpro/LODs.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Dynamically examine mip-mapping: &lt;/b&gt;&lt;br&gt;&lt;img src='http://www.alexswanson.com/torque/images/tstpro/mip_levels.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Simple to use Mounts interface: &lt;/b&gt;&lt;br&gt;&lt;img src='http://www.alexswanson.com/torque/images/tstpro/mounts.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;i&gt;(Loading a weapon to a shape's mount point)&lt;/i&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Animation control: &lt;/b&gt;&lt;br&gt;&lt;img src='http://www.alexswanson.com/torque/images/tstpro/animation_control.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Detailed animation thread information: &lt;/b&gt;&lt;br&gt;&lt;img src='http://www.alexswanson.com/torque/images/tstpro/animation_detailed_info.jpg'  alt=&quot;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;And all I can say is.... &lt;b&gt;wow&lt;/b&gt;.  And that's not even half of what this thing can do.  You can see why I'm so excited about it.  In fact, we've all been excited about it for monthsevery Release Candidate we received was more solid than most retail software I've seen.  Dave kept on polishing and polishing away though, and I think we can all learn something from his outstanding commitment to quality.  For example, look at the TST Pro &lt;a href='http://www.alexswanson.com/torque/downloads/tst_pro_manual.pdf' target=_blank&gt;manual&lt;/a&gt;...  that's 80 pages of detailed tutorial and reference information, all very nicely laid out and easy-to-read.&lt;br&gt;&lt;br&gt;It's obvious that Dave has put a mountain of thought and care into this project.  That's partly why it's been so great working with him... it's pretty inspiring and enjoyable working with such a talented, dedicated guy.  I hope Dave is proud of his workwe certainly are here at GG.  We're also proud that this entire tool is written in Torque.  I hope to see many more Torque-based applications and tools in Torque next year!&lt;br&gt;&lt;br&gt;Dave has done a pretty wide beta test with this, and everyone I've talked to absolutely gushes about how much more efficient they are using the new ShowTool.  Seriously, check out some of the quotes:&lt;br&gt;&lt;br&gt;&lt;i&gt;&amp;quot;The Torque ShowTool Pro is the best thing to happen to the Torque art pipeline...ever.  Every tools programmer in the industry should study TST Pro...this is how it's done. If ShowTool Pro were any simpler or more intuitive you'd think an artist wrote it!&amp;quot;&lt;/i&gt; --Weston Tracy, FFDigital&lt;br&gt;&lt;br&gt;&lt;i&gt;&amp;quot;Everyone who uses Torque should own this tool, whether an SDK owner or not. If you are an artist, this will let you see what the coder sees. If you're a coder, this will let you inspect those problem shapes and instantly see why they are crashing in your game. Why does that vertex go crazy when your model animates? Open up Dave's fantastic tool and you'll quickly see exactly what's wrong.&amp;quot;&lt;/i&gt; --Clark Fagot, BraveTree Productions&lt;br&gt;&lt;br&gt;&lt;i&gt;&amp;quot;I have been fortunate enough to work with the Torque ShowTool Pro for a number of months now and it's surpassed my every expectation. As such, I don't think of TST Pro just as an enhanced version of the existing show tool but as the full realization of 'Torque for Artists'&amp;quot;&lt;/i&gt; --Logan Foster, MaxGaming&lt;br&gt;&lt;br&gt;&lt;i&gt;&amp;quot;Torque ShowTool Pro is simply the *best* tool for any Torque artist. Besides all the incredible features, Mac support is a huge plus. With TST Pro, I can just keep the icon in my Dock and launch it whenever I need to view shapes and animations-- just launch and go. Best of all, I can keep all of my art production completely on my Mac.&amp;quot;&lt;/i&gt; --Danny Ngan&lt;br&gt;&lt;br&gt;&lt;i&gt;&amp;quot;Dave approached us during alpha to give feedback, and we requested a lot of features, some that we thought were a little outlandish.  He implemented EVERY ONE of our feature requests, and some that we did not think of.  A great deal of thought and work went into making this tool, and there are tons of hidden goodies that make this a must have for anyone using the Torque Game Engine. For artists, it is a full featured art preview tool that has everything you will ever need to get your shapes ready for a TGE-based game.  For programmers, there are tons of extras in there that help with shape debugging. &lt;br&gt;&lt;br&gt;For the asking price, this purchase is a no-brainer. You will instantly save 10 times the cost of purchase in increased productivity.&amp;quot;&lt;/i&gt;  --Joe Maruschak, BraveTree Productions&lt;br&gt;&lt;br&gt;Dave listened to beta feedback intently throughout TST Pro's development.  Guys like Joe Maruschak, Logan Foster, Danny Ngan, Weston Tracy, Clark Fagotsome of the most respected members of the indie game dev communityalong with others offered expert opinions and advice during the process.  From what they all say, Dave pretty much granted every wish and feature request they came up with.&lt;br&gt;&lt;br&gt;Launching TST Pro is part of a continuing effort to improve Torque's art pipeline here at GG.  A little while ago, Dave started talking about his new ShowTool.  As always, we were very interested in improving the art pipeline for Torque, so it was natural to team up.  It's worked out wonderfully, and in the coming months, we'll be pushing very hard to improve every aspect of the art pipeline.&lt;br&gt;&lt;br&gt;Dave's work represents the first major step in that direction, and we are very excited to continue working with Dave and other developers to make the Torque art pipeline as simple to use and powerful as possible.  We've set some lofty goals, and with all the talent of so many people in this community, we can work together to accomplish them.&lt;br&gt;&lt;br&gt;Well, with all this talk of art pipelines, it probably sounds like TST Pro is just for artists.  Heck no.  Jay has always been very excited about Dave's ShowTool, but a few weeks ago he got more excited than ever about it (which if you know Jay... he's pretty full of energy, so seeing him get &lt;i&gt;really&lt;/i&gt; excited about something can actually be a little scary. ;)  This was the result of a conversation Jay had with Clark Fagot, BraveTree's lead programmer.  Clark was saying how he used TST Pro every day and really couldn't get by without it now that he'd gotten used to it.  Once Jay realized how invaluable TST Pro's shape inspection features are to the development and debugging process, pretty much all I heard for two weeks was &amp;quot;Let's ship this puppy!! Let's ship this puppy!!&amp;quot; :)  Of course, that echoed the feelings of the entire team here.&lt;br&gt;&lt;br&gt;I really don't need to hype this thing up any more though.  When TST Pro is released, you won't have to take my word for how good it is.  Like Clark, and every other programmer or artist I've talked to about it, once you start using TST Pro, y