<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Toolsmiths &#187; LinkedIn</title>
	<atom:link href="http://thetoolsmiths.org/tag/linkedin/feed/" rel="self" type="application/rss+xml" />
	<link>http://thetoolsmiths.org</link>
	<description></description>
	<lastBuildDate>Fri, 07 May 2010 01:34:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Reason 2 of 6 – The System Model of Design</title>
		<link>http://thetoolsmiths.org/2010/03/24/reason-2-of-6-%e2%80%93-the-system-model-of-design/</link>
		<comments>http://thetoolsmiths.org/2010/03/24/reason-2-of-6-%e2%80%93-the-system-model-of-design/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 15:30:56 +0000</pubDate>
		<dc:creator>Dan Goodman</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tool Design]]></category>
		<category><![CDATA[Usabilty]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[Six Reasons]]></category>

		<guid isPermaLink="false">http://thetoolsmiths.org/?p=393</guid>
		<description><![CDATA[This ongoing series delves more deeply into each of the “six reasons your game development tools suck” as argued in my very first post. Two of the most important concepts in software engineering are abstraction and modularity.  Abstraction allows us to categorize problems and write general code to handle all problems within a group, while modularity [...]]]></description>
			<content:encoded><![CDATA[<p>This ongoing series delves more deeply into each of the “<a href="http://toolssig.wordpress.com/2009/01/27/the-6-reasons-your-game-development-tools-suck/" target="_self">six reasons your game development tools suck</a>” as argued in my very first post.</p>
<p>Two of the most important concepts in software engineering are abstraction and modularity.  Abstraction allows us to categorize problems and write general code to handle all problems within a group, while modularity allows us to combine disparate abstract components to create unique solutions for a particular problem.  These two concepts give us the ability to write elegant, yet powerful systems that can solve many problems at once.</p>
<p>These systems often rely heavily on data, which is the glue that holds the abstract techniques together.  Data is used to configure which components plug into one another and how they behave. </p>
<p>As programmers, it makes a lot of sense to us to expose the raw data in the tool to the people responsible for making something useful with it.  After all, not only is this the easiest implementation, it&#8217;s also difficult to see another implementation that would not constrict the end user&#8217;s ability to get the full benefit of the system&#8217;s power.</p>
<p>If the tool was in our own hands, or even in the hands of another programmer, this would all be true.  Unfortunately, this is usually not the case.  The end users have to figure our very clever system out for themselves, often with no knowledge of our intention, the underlying data structures, or even basic software engineering or programming concepts.</p>
<p>Instead of empowering the end users with our uber-system that can handle any problem, we&#8217;ve saddled them with a system so intricate and burdensome, that they can&#8217;t wrap their minds around it, let alone do anything useful with it.</p>
<p>Training can help to a degree, but that turns into one-on-one training with every user for any one person to understand.  Documentation also helps, but often ignored, in reading as well as in writing/updating.  Usually, one person ends up being the expert that everyone relies on, but when only one person can use a tool, you know that it&#8217;s doomed to failure.</p>
<p>The answer is simple, yet hard to swallow.  The tool interface can not be designed around the data structures used by the underlying system.  The tool must be designed around the users, and the very specific things they want to do with it. </p>
<p>That will probably handle about 90% of the problems the system was designed to solve.  Most users will get along happily with that, and even find their own clever ways of getting some of the additional 10%.  They&#8217;ll be much happier with a tool that is easy to use than one that is all-powerful.</p>
]]></content:encoded>
			<wfw:commentRss>http://thetoolsmiths.org/2010/03/24/reason-2-of-6-%e2%80%93-the-system-model-of-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XSLT as a Development Tool</title>
		<link>http://thetoolsmiths.org/2010/01/22/xslt-as-a-development-tool/</link>
		<comments>http://thetoolsmiths.org/2010/01/22/xslt-as-a-development-tool/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 13:00:53 +0000</pubDate>
		<dc:creator>Dan Goodman</dc:creator>
				<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tool Design]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://thetoolsmiths.org/?p=403</guid>
		<description><![CDATA[Some time ago, I decided to write a small C# &#8220;wizard&#8221; tool for enemy encounters and other level design patterns.  The idea was to create pattern types, that designers could define with a small amount of data (different for each type of pattern) that could be exported into a much more complex xml format that could describe when [...]]]></description>
			<content:encoded><![CDATA[<p>Some time ago, I decided to write a small C# &#8220;wizard&#8221; tool for enemy encounters and other level design patterns.  The idea was to create pattern types, that designers could define with a small amount of data (different for each type of pattern) that could be exported into a much more complex xml format that could describe when to spawn what enemies, what behaviors and properties to give them, etc. in order to make each instance of a pattern unique. </p>
<p>The properties set by the designers were stored internally as an XML document, since XML in C# is incredibly easy to manipulate, and since the data would be different for each level design pattern.  It was easy enough to save out the raw XML data as it was stored internally, but the problem was how to transform this data into the format that would be read into the game. Enter XSLT.</p>
<p>C# has the functionality to transform data internally with an external XSLT file.  It&#8217;s easy enough to associate a XSLT file with a specific pattern, apply it at run time, and then simply write out the result.  At this point, it&#8217;s simply a matter of providing the designers with the data files necessary to generate their data.</p>
<p>The advantages here are great.  Putting the complex structure and syntax in an external file, and separating it from the designer&#8217;s view, allows them to concentrate on what&#8217;s  actually important.  The downside is that someone has to craft these XSLT files, which is a format that is a bit obtuse for someone used to functional languages.  Additionaly, XSLT has little to no debugging capability.</p>
<p>Now, more recently, I&#8217;ve had the challenge of writing an exporter from OpenOffice Calc, which also uses XSLT as filters for importing and exporting.  All OpenOffice documents are are stored as XML.  In fact, if you simply rename an .ODS file to a .ZIP file, you can explore the format, which is spread over several files inside the .ZIP, the most interesting of which is called content.xml.  This is the data that needs to be transformed in order to get the information out of OpenOffice into your own format.</p>
<p>What we wanted was a way to store properies of all enemies in a single table, so designers could tweak values easily.  The data then needed to be exported into a proprietary text format (not XML).  This is also relatively easy with XSLT, but as with anything, exporting from Calc with XSLT had its pitfalls.</p>
<p>It&#8217;s easy enough to access individual cells in a row in Calc.  Unfortunately, for some reason, they decided that if adjacent cells in a single row have the same value, it would only be stored in the first cell and an attribute on that cell would indicate the value repeats for n-number of cells.</p>
<p>With XSLT, there are no variables that can change their values, only constants within a single template (the XSLT equivalent of a function).  Consequently, there are no &#8220;for loops&#8221; in the traditional sense.  The way to get around this with XSLT is to use recursion.  In my script, I basically have every cell recursively calling the template on the next cell in the row, or on itself in the case of repeated cells, and track the cell heading (the first row of the table) separately.  Just thinking about it gives me nightmares.</p>
<p>At any rate, more and more data is being stored as XML, and consequently XSLT is probably here to stay.  It&#8217;s another tool that should be available in the game developer&#8217;s toolbox, but must be used with care.  To learn more, there are tons of resources on the web, but your best bet for a good introduction is the W3 schools site at <a href="http://www.w3schools.com/xsl/">http://www.w3schools.com/xsl/</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://thetoolsmiths.org/2010/01/22/xslt-as-a-development-tool/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Building on the Cloud</title>
		<link>http://thetoolsmiths.org/2009/10/05/building-on-the-cloud/</link>
		<comments>http://thetoolsmiths.org/2009/10/05/building-on-the-cloud/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 12:43:52 +0000</pubDate>
		<dc:creator>Dan Goodman</dc:creator>
				<category><![CDATA[Builds]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Revision Control]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://thetoolsmiths.org/blog/?p=368</guid>
		<description><![CDATA[Over the past few years, cloud computing has become the next big thing for enterprise software.  The ability to easily scale resources to meet the needs of the end users cheaply is very attractive.  Amazon, Sun, Google and now Mictrosoft (among others) are all offering cloud computing solutions.  I&#8217;ve recently been playing around with the AWS (Amazon [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past few years, cloud computing has become the next big thing for enterprise software.  The ability to easily scale resources to meet the needs of the end users cheaply is very attractive.  Amazon, Sun, Google and now Mictrosoft (among others) are all offering cloud computing solutions.  I&#8217;ve recently been playing around with the AWS (Amazon Web Services) to see what you can do with this technology, and I can already see a few ways it could be applied to games.</p>
<p>Running games on the cloud is an obvious use of these resources.  Need a game server accessable from anywhere in the world?  Start one up on a virtual server.  The ability to build machine images (AMIs on Amazon), complete with your own software running on operating systems like Linux, OpenSolaris, or even Microsoft Windows Server gives you that possibility for pennies a day.</p>
<p>But, where cloud computing could really come in handy is in game development.  Imagine starting a build distributed across the cloud, in which thousands of virtual machines simultaneously start processing individual bits data.  You might see builds going from minutes or hours to just a few sconds.</p>
<p>And the cloud isn&#8217;t just for processing either.  Some companies offer services for managing data that would traditionally reside in a relational database, and as well as file storage services.  You could even use your own machine image running some flavor of SQL.  With that capability, why not store assets in the cloud?  An asset control vendor could use the software as service (SAS) model for asset control, supplying developers with web and client based views into an asset database on the cloud itself.</p>
<p>The big problem here is that we&#8217;re trading bandwidth for processing power and flexibility.  The build process may take a few seconds, but retrieving the results to local machines may eat up every bit of build-time savings and then some.  We may see overnight builds turn into overnight downloads, and that&#8217;s no savings at all. </p>
<p>Bittorrent file serving (available on AWS) may be useful as a build distribution model, but with most users on a single network, it doesn&#8217;t seem likely to make a difference.  Limiting the download process to necessary files only is simply the flipside of building necessary files only, so may also offer little in the way of savings.  Doing a bit by bit comparrison of files built on the cloud, and downloading just the file differences, may be a way to reduce the download time, assuming there are chunks of data in a binary file that remain constant between builds.  Other optimiztions almost certainly exist.</p>
<p>All in all, it could be a big win, but until someone proves it, we can&#8217;t know for sure.</p>
]]></content:encoded>
			<wfw:commentRss>http://thetoolsmiths.org/2009/10/05/building-on-the-cloud/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Reason 1 of 6 &#8211; Design As You Go</title>
		<link>http://thetoolsmiths.org/2009/08/24/reason-1-of-6-design-as-you-go/</link>
		<comments>http://thetoolsmiths.org/2009/08/24/reason-1-of-6-design-as-you-go/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 12:30:49 +0000</pubDate>
		<dc:creator>Dan Goodman</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tool Design]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[Six Reasons]]></category>

		<guid isPermaLink="false">http://toolssig.wordpress.com/?p=336</guid>
		<description><![CDATA[This ongoing series delves more deeply into each of the &#8220;six reasons your game development tools suck&#8221; as argued in my very first post. Many game companies struggle with delivering tools quickly and cheaply.  Money is always an issue wherever you go.  After all, the bottom line is what keeps a company afloat and it&#8217;s employees [...]]]></description>
			<content:encoded><![CDATA[<p>This ongoing series delves more deeply into each of the &#8220;<a href="http://toolssig.wordpress.com/2009/01/27/the-6-reasons-your-game-development-tools-suck/" target="_self">six reasons your game development tools suck</a>&#8221; as argued in my very first post.</p>
<p>Many game companies struggle with delivering tools quickly and cheaply.  Money is always an issue wherever you go.  After all, the bottom line is what keeps a company afloat and it&#8217;s employees employed.  No one wants their company to fail, to lose their jobs, or to lay off their workers.</p>
<p>Game companies are in an especially difficult position.  Attempting to balance a workforce spread over multiple disciplines &#8212; art, design, programming and production &#8212; is hard enough, but when you consider that those disciplines have their own specialties within each one, the task is even more difficult.</p>
<p>The obvious solution is to cut corners wherever possible, and that oftentimes falls squarely on the shoulders of  the tools team.  Why?  Because most game companies don&#8217;t make money selling tools.  Tools programmers serve in a support role, and therefore (in the minds of most game execs) are less valuable than those working directly on the games.</p>
<p>Tools teams very rarely get the full support of management, and game teams can&#8217;t be stalled waiting for tools to be completed.  The unfortunate sentiment among those in power is that there&#8217;s no time for tool design.  Get it done and get it done now.</p>
<p>There is no time for design, so the thinking seems to go, but what does that really mean?  Does that mean that the programmer implementing the tool charge blindly into development without thinking about how the tool needs to function?  Of course not. </p>
<p>The programmer has a vague idea of what to do, and without ever writing it down or validating his thoughts with the end users in any formal way, begins to implement the design from his own mind.   He still thinks about it a great deal.  Perhaps 75% of his time is spent thinking and only 25% is spent typing.  There are probably still many  unanswered questions, but as the tool begins to take shape, some answers may start to become more obvious one by one.  The tool seems to practically design itself, but in reality, design is going on quite informally.</p>
<p>But wait!  What if one of those unanswered questions causes a serious problem?  What if the best answer to that question requires a rewrite of major portions of current code-base?   What if the other possible answers are so undesirable, that the rewrite actually appears to be the best option.  Because the design had been postponed until the code was in the process of being written, redesign is now very expensive.  Code that has been written will go to waste, and new effort must be exerted to replace it.</p>
<p>If the programmer takes this problem to a (non-technical) manager, concerned with cost and speed of developing the tool, the manager may come to the very justifiable conclusion that a rewrite is not the way to go.  Instead, just make a work-around for this one problem, in other words, a hack. </p>
<p>As long as that&#8217;s the end of the story, then that&#8217;s probably okay.  Unfortunately, more issues may arise, with similar outcomes.  Also, once delivered, the end users will likely have feedback.  After all, without any formal design process, many of their needs/wants/concerns went unheard.  And now the real fun begins.</p>
<p>It&#8217;s already been established that the quickest solution is more desirable than better architecture and code, and so as feature requests are delivered to the programmer from the users, more and more workarounds are put into place to deliver a new tool quickly.  This leads to code that is difficult to maintain and potentially very buggy.</p>
<p>The end users are now saddled with a tool that does basically what they want but perhaps has stability or performance problems.  The difficulty  to fix those issues increases as time goes on as the code becomes more brittle and spaghetti-like.  Fixing one thing breaks something else, leading to a never-ending maintenance cycle that really makes no net improvement whatsoever.</p>
]]></content:encoded>
			<wfw:commentRss>http://thetoolsmiths.org/2009/08/24/reason-1-of-6-design-as-you-go/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rethinking Asset Control</title>
		<link>http://thetoolsmiths.org/2009/08/03/rethinking-asset-control/</link>
		<comments>http://thetoolsmiths.org/2009/08/03/rethinking-asset-control/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 14:00:41 +0000</pubDate>
		<dc:creator>Dan Goodman</dc:creator>
				<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Revision Control]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://toolssig.wordpress.com/?p=322</guid>
		<description><![CDATA[Many of the available source control solutions out there are great if you are a programmer.  Both Subversion and Perforce adequately handle the storing of assets, but neither is very friendly to creative types.  How often do &#8220;bad checkins&#8221; happen because some new and obscure file created on the user&#8217;s machine didn&#8217;t get added?  Or maybe [...]]]></description>
			<content:encoded><![CDATA[<p>Many of the available source control solutions out there are great if you are a programmer.  Both Subversion and Perforce adequately handle the storing of assets, but neither is very friendly to creative types.  How often do &#8220;bad checkins&#8221; happen because some new and obscure file created on the user&#8217;s machine didn&#8217;t get added?  Or maybe the user didn&#8217;t get latest, merge the data, build the game and test it one last time before checking everything in. </p>
<p>Team sizes are increasing.  So are the assets, themselves.  The more users stressing the system, the more fragile it becomes.</p>
<p>NxN had the right idea with Alienbrain but never really got anywhere due to serious technical issues with their back-end.   It&#8217;s been a few years since I used it last, so they may have fixed a lot of those problems.   Anyway, it also had some very nice features you don&#8217;t get in other source control solutions.  You could easily redesign the whole interface (it was mostly html and javascript as I recall), and they included a feature that was very art-centric.  Previews.</p>
<p>You could generate previews of assets and view them right in the Alienbrain interface.  It was a very slick feature and a selling point of the software.  Finally, a user could see a preview of a model or texture (and many other asset types) without doing a get and opening the files in Maya or Photoshop, etc.  That&#8217;s a real time-saver if you don&#8217;t remember the filename that was used for a specific asset.  You have the chance to browse all the assets of that type and find the one you want pretty easily.</p>
<p>Like I said, though, NxN had its share of troubles.  Still, I believe we can do better than the source control status-quo.  I imagine an asset database solution that integrates with every asset generating tool, as well as the build process, generates a preview for each asset (even if it&#8217;s a bitmap that says &#8220;Preview Not Available&#8221;), and is searchable by its meta-data, including tags, creator, last modified, and so on. </p>
<p>The classic view of assets as a collection of files inside of folders, with users having to know exactly what files need to be checked in and out of source control when changes are made seems a little antiquated.  Instead of searching through folders ten layers deep, how about using a tag cloud to find assets instead?</p>
<p>I imagine being able to open a web-based interface, searching for an animated character from an old project and clicking a button to copy it to a new project, including all of it&#8217;s vertex, texture and animation data and using it as the starting point for a brand new character, or maybe just as a placeholder until a new character is created.  How many walk cycles does one studio need to recreate every time a new project is started, anyway?  Why not take something you have and modify it to fit a new character in a completely different game?</p>
<p>I really beieve that asset databases are the wave of the future for game development.  When the Xbox360 and PS3 came along, team sizes doubled, and assets got bigger and more complex.  What&#8217;ll happen next time there&#8217;s a hardware revolution?  We need to streamline the way we manage assets, or else, it&#8217;s going to bite us in the ass&#8230; even more.</p>
]]></content:encoded>
			<wfw:commentRss>http://thetoolsmiths.org/2009/08/03/rethinking-asset-control/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Indie Game Tools</title>
		<link>http://thetoolsmiths.org/2009/07/20/indie-game-tools/</link>
		<comments>http://thetoolsmiths.org/2009/07/20/indie-game-tools/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 14:00:18 +0000</pubDate>
		<dc:creator>Dan Goodman</dc:creator>
				<category><![CDATA[Middleware]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://toolssig.wordpress.com/?p=268</guid>
		<description><![CDATA[A lot of what gets talked about in the &#8220;professional&#8221; game development sphere is the high-end high-priced tools or those that were developed internally by a dedicated programmer or team of programmers.  Where does this leave the smaller groups that are popping up now, those that are developing primarily for the iPhone or the web? [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of what gets talked about in the &#8220;professional&#8221; game development sphere is the <span style="text-decoration:line-through;">high-end</span> high-priced tools or those that were developed internally by a dedicated programmer or team of programmers.  Where does this leave the smaller groups that are popping up now, those that are developing primarily for the iPhone or the web?</p>
<p>Luckily, there is a lot of great software out there that is either open source or very cheap, and the very best solutions have risen to the top.  Most of us have heard of Blender, Gimp, the Torque Engine and Unity (which includes a $200 &#8220;indie&#8221; version), and there are a great deal more.  Check out <a href="http://indiegametools.com/">IndieGameTools.com</a> for a good list of the best stuff.</p>
<p>While some of these tools are really great, there will always be a need for custom tools, that aren&#8217;t very useful to other developers.  Smaller developers should consider partnering with a small tools development company or individual contractor.  there are a few people out there who are doing this sort of work and banding together can be mutually beneficial.  Getting someone experience to help out in this area can give a leg up on the competition, after all, the better the tools, the easier it is to make a great game.</p>
]]></content:encoded>
			<wfw:commentRss>http://thetoolsmiths.org/2009/07/20/indie-game-tools/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>When to Throw in the Towel</title>
		<link>http://thetoolsmiths.org/2009/07/02/when-to-throw-in-the-towel/</link>
		<comments>http://thetoolsmiths.org/2009/07/02/when-to-throw-in-the-towel/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 14:00:28 +0000</pubDate>
		<dc:creator>Dan Goodman</dc:creator>
				<category><![CDATA[Production]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://toolssig.wordpress.com/?p=257</guid>
		<description><![CDATA[I got an email recently asking for my advice on bug fixing vs. completly rewriting a broken tool.  The email described  the complexity of the tool in question being caused by the addition of new features on top of an already shakey starting point.  This sort of problem always comes down to time and money.  The perception among [...]]]></description>
			<content:encoded><![CDATA[<p>I got an email recently asking for my advice on bug fixing vs. completly rewriting a broken tool.  The email described  the complexity of the tool in question being caused by the addition of new features on top of an already shakey starting point. </p>
<p>This sort of problem always comes down to time and money.  The perception among management may be that this is going to waste time.  After all, why rewrite something that seems to work fine, and if there are issues, isn&#8217;t it easier (and cheaper) to fix a few bugs than to write something from scratch?</p>
<p>Well, that may be true, but not necessarily.  After all, buggy tools waste the time of everyone using them.  If ten people waste just ten minutes per day, over the course of a single project that lasts a year, then you&#8217;ve lost  over 10 weeks worth of work during that project.  The actual amount of time may be much greater of course.  I&#8217;ve worked in some studios where tools were so slow and buggy, it wasn&#8217;t uncommon for individuals to lose several hours in a single day.</p>
<p>I knew a programmer who would write almost every piece of code twice.  He would completely scrap the first implementation in favor of his second try.  The first was basically a learning experience, and once he figured out how to solve the problem, he could do it much more cleanly on the second go.</p>
<p>Rewriting a better tool may be much faster than the initial implementation.  The team has learned from their mistakes and may have a much clearer vision for how the tool should be designed and implemented.  There may also be some re-usable code, so not everything needs to be wasted; individual modules may be able to be salvaged.</p>
<p>Now comes the real decision point though.  Does a rewrite make sense for the current project or should it be put off for a later time? If you&#8217;re in beta, rewriting a tool now isn&#8217;t going to help you get your game done.  Consider how long a rewrite will take in man-days and calender days.  If you can get the new and improved tool into the hands of your developers fast enough to save them more time than it took to develop it, then I say, go ahead.</p>
]]></content:encoded>
			<wfw:commentRss>http://thetoolsmiths.org/2009/07/02/when-to-throw-in-the-towel/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Usability Usability Usability</title>
		<link>http://thetoolsmiths.org/2009/05/27/usability-usability-usability/</link>
		<comments>http://thetoolsmiths.org/2009/05/27/usability-usability-usability/#comments</comments>
		<pubDate>Wed, 27 May 2009 22:32:29 +0000</pubDate>
		<dc:creator>Dan Goodman</dc:creator>
				<category><![CDATA[Tool Design]]></category>
		<category><![CDATA[Usabilty]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://toolssig.wordpress.com/?p=245</guid>
		<description><![CDATA[Some of you may have read my recent Gamasutra article, Game Tools Tune-Up: Optimize Your Pipeline Through Usability but I wanted to discuss something that writing that article has really brought to the forefront of my mind.  As an industry, we aren&#8217;t very reflective on the methodologies we use regarding the development of tools.  This blog [...]]]></description>
			<content:encoded><![CDATA[<p>Some of you may have read my recent Gamasutra article, <span><a href="http://www.gamasutra.com/view/feature/4016/game_tools_tuneup_optimize_your_.php">Game Tools Tune-Up: Optimize Your Pipeline Through Usability</a> but I wanted to discuss something that writing that article has really brought to the forefront of my mind.  As an industry, we aren&#8217;t very reflective on the methodologies we use regarding the development of tools.  This blog as well as other sources may be bringing about a change in that regard, but it is progressing very slowly.  There are techniques in use in other industries that have significantly increased the usability of software, and many have been around for many years.</span></p>
<p><span>While at GDC this year, the idea of usability came up at the Tools Round Table.  Now, I&#8217;m pretty sure John had included the topic at the round table, in part because he had gotten a very early preview (and several revisions) of my article before it went up on Gamasutra.  I appreciated the effort on his part, but I was a little surprised at the total lack of response from the group.  When asked who was using what techniques for usability, the room was completely silent.  I expected that if anyone in the industry was doing anything at all with usability, surely this was the group.</span></p>
<p><span>Although it was a bit disheartening, it illuminated a real issue in game development that most of us have known in our hearts for quite a while.  Very few people are serious about making game development tools accessible to their users.  Artists, designers and even programmers spend a great deal of time dealing with tool issues for the length of every new project.  The tools developers wonder why they have so much trouble, without ever realizing that there are techniques in existence that could answer that very question and could help them make better tools that got fewer complaints and more work done.</span></p>
<p><span>I recommend every tool developer out there take a look at these resources:</span></p>
<p><span><a href="http://www.upassoc.org/">The Usability Professionals&#8217; Association website</a></span></p>
<p><span> <a href="http://www.measuringusability.com/">Jeff Sauro&#8217;s Measuring Usability website</a></span></p>
<p><span>Also, read Alan Cooper&#8217;s excellent books on usability:</span></p>
<p><span><a href="http://www.amazon.com/About-Face-Essentials-Interaction-Design/dp/0470084111/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1243462940&amp;sr=8-1">About Face</a> </span></p>
<p><span>and </span></p>
<p><span><a href="http://www.amazon.com/Inmates-Are-Running-Asylum-Products/dp/0672326140/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1243462940&amp;sr=8-2">The Inmates Are Running the Asylum</a></span></p>
<p><span> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://thetoolsmiths.org/2009/05/27/usability-usability-usability/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Power of Compositing</title>
		<link>http://thetoolsmiths.org/2009/04/28/the-power-of-compositing/</link>
		<comments>http://thetoolsmiths.org/2009/04/28/the-power-of-compositing/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 14:00:45 +0000</pubDate>
		<dc:creator>Dan Goodman</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tool Design]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://toolssig.wordpress.com/?p=109</guid>
		<description><![CDATA[Several years ago, I developed an effects tool at High Voltage Software.  I was rewriting the effects system we had used on Hunter: The Reckoning and a couple of follow-up titles while creating the tool.  The original system had given us some really great results for our first generation Xbox titles and the company wanted to reuse [...]]]></description>
			<content:encoded><![CDATA[<p>Several years ago, I developed an effects tool at High Voltage Software.  I was rewriting the effects system we had used on Hunter: The Reckoning and a couple of follow-up titles while creating the tool.  The original system had given us some really great results for our first generation Xbox titles and the company wanted to reuse it in an otherwise new codebase.  However, the original programmer had left the company and the code itself was kind of a mess.  Also, there was no tool for creating the effects, just a text definition file that few knew the intricacies of. </p>
<p>So, I set about creating a system that, at the bare minimum, should have a cleaner implementation than the original, would be capable of recreating all the effects from the Hunter games, and have a GUI for doing so.  The results were excellent.  We used the new system and tool on Dual Masters and Leisure Suit Larry.  The Dual Masters Team was able to take my initial implementation and add some additional features, like keyframing, to create not only all of their effects, but also their very cinematic battle scenes.  On Larry we used it for all of our in-game pickups, censor boxes, and other random effects throughout the game.</p>
<p>This tool was much more than a particle tool, although the particle tool existed within the same interface, and switching between the two was relatively easy.  This was a compositing tool, allowing artists to combine particles, animated models, lighting, and other simple objects together to create stunning visual effects.  Every object could be attached to every other, with offsets, if necessary.  Particle systems could be attached to animated skeletons, models could be attached to individual particles, and new effects could spawn on particle collision.  It was very powerful.</p>
<p>The tool was written in C++ using MFC (that&#8217;s how long ago it was), and had a window running the game engine inside the tool, so that the effects could be viewed in real-time while being edited.  The tool was still in use years after I left the company, so I consider it a great success.</p>
<p>We use compositing tools all the time, perhaps without even thinking about it.  Level design tools are compositing tools.  A designer takes prefab objects like enemies, traps, pickups, etc. and drops them in a level (with art created by an environment artist).  The result is a composite of all the level design and art elements with instance data for each.</p>
<p>The power of compositing comes from the ability to combine simple objects to create extremely complex ones whose sum are greater than their respective parts, so to speak.  With the proper tools, these complex game objects can be easily created by the content team.  The possibilities are limitless.  Cinemas, UI, behavior, and countless game-specific systems are all candidates for compositing tools.  It&#8217;s a very powerful, easy to use pattern.</p>
]]></content:encoded>
			<wfw:commentRss>http://thetoolsmiths.org/2009/04/28/the-power-of-compositing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Is My Middleware in Perpetual Beta?</title>
		<link>http://thetoolsmiths.org/2009/04/07/why-is-my-middleware-in-perpetual-beta/</link>
		<comments>http://thetoolsmiths.org/2009/04/07/why-is-my-middleware-in-perpetual-beta/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 14:00:15 +0000</pubDate>
		<dc:creator>Dan Goodman</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Production]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://toolssig.wordpress.com/?p=199</guid>
		<description><![CDATA[When I was in college I was a double major &#8212; computer science and English.  I know, I know, strange combination.  Anyway, of the few things that people have said over the years that have really stuck with me, one such pearl of wisdom came from an English professor.  He said that a piece of [...]]]></description>
			<content:encoded><![CDATA[<p>When I was in college I was a double major &#8212; computer science and English.  I know, I know, strange combination.  Anyway, of the few things that people have said over the years that have really stuck with me, one such pearl of wisdom came from an English professor.  He said that a piece of writing can be written and rewritten and edited over and over again forever, but at some point you just have to stop and go with what you have.  Eventually, a piece of writing stops getting better regardless of your effort.  It&#8217;s what Economists call the law of dininishing returns.  As additional production effort is applied to a system the output gained from each unit of effort dininishes.  It is sometimes more beneficial to stop the current effort and apply what has been learned to something completely new.  It&#8217;s a lesson the game industry should learn.</p>
<p>Middleware companies sell complete packages for AI, physics, UI, animation, you-name-it, but what constitutes a &#8220;complete package&#8221; anymore?  What a lot of middleware companies deliver seems no where near complete, even for the subset of game development technology of which they are supposed to be the leading industry experts.  They release new versions monthly that game studios have to integrate to get lastest features and bug fixes.  Are we game developers, or simply beta testers for middleware companies? </p>
<p>Many of these companies have great customer service.  They offer support tickets so developers can submit bugs and feature requests, but at this point, they&#8217;ve gone from middleware provider to service provider.  They customize a solution intended for the masses to the needs of individual companies, when what they should really be doing is applying the effort spent on maintenance of the current version on developing the next version.  After all, once a few games have shipped on the current product, its viability has been proven.  STOP DEVELOPMENT!  Give us what you have right now and put your development effort into making the next version that much better.</p>
<p>Sure, those companies that shipped games probably needed workarounds.  And the other companies out there with games in development have workarounds too.  Some of the currently supported features have unexpected results, or just don&#8217;t give you what you want. But do you really want to wait around for the &#8220;fix&#8221; anyway?  Waiting around holds up your production.  You have to remember that you are not their only customer.  It may be months.  It may never come.  It could be the fix that breaks everything else in your game.</p>
<p>You can&#8217;t rely on it.</p>
<p>So what can game developers do?  Well, the next time you&#8217;re shopping for a middleware solution for your project, and the salesperson tells you about the cool new features coming in the next or upcoming release, don&#8217;t plan on getting them in your lifetime.  If you can live without a feature, design your game without it.  If it isn&#8217;t there now, and you really need it, shop for another solution.  I don&#8217;t want to be a beta tester any more.  Neither should you.</p>
]]></content:encoded>
			<wfw:commentRss>http://thetoolsmiths.org/2009/04/07/why-is-my-middleware-in-perpetual-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
