<?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; Six Reasons</title>
	<atom:link href="http://thetoolsmiths.org/tag/six-reasons/feed/" rel="self" type="application/rss+xml" />
	<link>http://thetoolsmiths.org</link>
	<description></description>
	<lastBuildDate>Mon, 23 Aug 2010 18:22:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Reason 3 of 6 &#8211; Leveraging the Wrong Technology</title>
		<link>http://thetoolsmiths.org/2010/08/21/reason-3-of-6-leveraging-the-wrong-technology/</link>
		<comments>http://thetoolsmiths.org/2010/08/21/reason-3-of-6-leveraging-the-wrong-technology/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 15:00:25 +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=523</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. At one company I worked for, we wrote our level design tool, as well as a cinematic tool on top of Maya.  The idea was that Maya already had an interface [...]]]></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>At one company I worked for, we wrote our level design tool, as well as a cinematic tool on top of Maya.  The idea was that Maya already had an interface for drawing 3D objects and moving them around in the scene using well known controls.  Unfortunately, the design staff, many of which never used Maya, didn&#8217;t really get any benefit from a tool that was well understood by 3D artists. </p>
<p>With the number of interface elements visible in Maya, to a designer or even a programmer, it can seem overly complex and cluttered.  Add to that the fact that we added additional interface for the design tool itself, and you&#8217;ve got something completely unwieldy for the Maya novice.</p>
<p>In addition, as levels became more complex, load times in the tool became longer and longer, and the responsiveness when doing the simplest operations became slower and slower.  In order for the tool to be usable, everything except what you were interacting with had to be turned off, the management of which became another task that slowed down the users.  One programmer on the game team actually refused to ever open the tool, so when testing of a feature or fixing a design bug was required, he&#8217;d get someone else to do it for him.</p>
<p>I&#8217;ve been in other situations where building a level design tool inside of an art package was a consideration.  In those cases, it&#8217;s often recommended as a stop-gap solution.  The argument goes that getting something up and running in an interface that is well known and already supports certain features will be quicker than writing the tool from scratch.  Saving time is usually the best policy, but thinking that time will actually be saved by this method is a fallacy, and stop-gap solutions often become permanent ones.</p>
<p>Time saved on initial development of a 3D viewport with picking and move controls is wasted figuring out how to cram every new feature required by the design team into a limited interface.  The designers&#8217; time is wasted navigating an overly complex tool with buttons and menu options they will never use, nor understand. </p>
<p>In this situation, we eventually learned our lesson.  The next level design tool was a stand-alone program, but that was for the next project&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://thetoolsmiths.org/2010/08/21/reason-3-of-6-leveraging-the-wrong-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>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>The 6 Reasons Your Game Development Tools Suck</title>
		<link>http://thetoolsmiths.org/2009/01/27/the-6-reasons-your-game-development-tools-suck/</link>
		<comments>http://thetoolsmiths.org/2009/01/27/the-6-reasons-your-game-development-tools-suck/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 04:37:36 +0000</pubDate>
		<dc:creator>Dan Goodman</dc:creator>
				<category><![CDATA[Tool Design]]></category>
		<category><![CDATA[Usabilty]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[Six Reasons]]></category>

		<guid isPermaLink="false">http://toolssig.wordpress.com/?p=26</guid>
		<description><![CDATA[There are many reasons game development tools fail.  Perhaps not all of these apply to you, but every game studio I&#8217;ve seen has had one or more of the following problems. 1. Design as you go All too often, game companies are in too much of a hurry to allow proper upfront design of tools.  [...]]]></description>
			<content:encoded><![CDATA[<p>There are many reasons game development tools fail.  Perhaps not all of these apply to you, but every game studio I&#8217;ve seen has had one or more of the following problems.</p>
<p><strong>1. Design as you go</strong><br />
All too often, game companies are in too much of a hurry to allow proper upfront design of tools.  As a result, programmers end up designing the tools, anyway.  Unfortunately, since they have to continually show progress, the tools are designed as they are coded, which doesn&#8217;t really save any time at all, and leads to a host of problems.  As tool development gains inertia, the earlier code becomes more and more difficult to change without breaking the entire system.  When given a choice between rewriting code  and creating a workaround, the least expensive of the two (in the short run) is generally preferred.  Major changes to support new features or a more desirable workflow become more and more difficult as the code becomes too brittle to support it&#8217;s own weight.</p>
<p><strong>2. The system model of design</strong><br />
When programmers design interfaces, they tend to expose the underlying data structures directly.  That is the most logical method for someone who understands the inner workings of the system, and often gives the most flexibility the the users.  The end user, however, has a different view of the system based on his his own goals.  He doesn&#8217;t need to know the underlying implementation details, just the end result. The system model can give the desired effect, but may seem overly complicated or downright illogical to the user.</p>
<p><strong>3. Leveraging the wrong technology</strong><br />
A lot of us, especially with engineering backgrounds, cringe at the thought of “reinventing the wheel.” Recreating something that already exists somewhere else goes against everything we&#8217;ve learned, but taking a tool designed for one thing and turning it into something it was never destined to be, will cost more time in the long run than just writing a new tool from scratch.  Often, the remains of the old tool clutter the interface or drag down the performance.</p>
<p><strong>4. Complicating the interface</strong><br />
“The simpler, the better,” should be every tool designer&#8217;s motto.  The more interface the user has to deal with, the more difficult it is to use the tool. Focusing on the goals of the end user, should make apparent what interface items should be readily available, and which should be hidden away in a menu somewhere.  The most common operations should be the most accessible and easiest to use.</p>
<p><strong>5. Extraneous features</strong><br />
Often, the tool designers aren&#8217;t communicating with the tool users, which always leads to a handful of features that just aren&#8217;t used.  They probably seemed really important during design (at least in the programmer&#8217;s mind), but time constraints or misunderstanding on the part of the users keep them from fully utilizing these features.  The time wasted on such things should have been used to improve the most commonly used functionality.  Instead, they clutter the interface or add additional steps to a process that should have been much simpler.</p>
<p><strong>6. Designing for advanced users</strong><br />
Let&#8217;s face it, there are some people in your company that are more technically skilled than others, and I&#8217;m not talking about programmers.  Often, the more technical designers (the ones with scripting or programming backgrounds) are the ones who are able to use the internally developed tools more effectively, leaving the rest of the design staff to struggle.  This is also true of other disciplines, but design has it the worst, in most cases.  Game development tools should target the average user, with advanced functionality neatly tucked away where the more technically savvy users can find it, if necessary, while the more common functionality should be out in plain sight, easily accessible and understandable.</p>
<p>All of these issues lead to one overarching problem &#8212; low usability.  Tools that are unusable, do little good to anyone, and higher usability leads to happier and more productive employees.  Every minute that an employee spends fighting with the tools is a minute that could have been spent making a better, more polished game, something every game company struggles to achieve, and addressing problems like the ones above will help tremendously.  I&#8217;ll talk more about these and other issues more in-depth in future blog posts.</p>
]]></content:encoded>
			<wfw:commentRss>http://thetoolsmiths.org/2009/01/27/the-6-reasons-your-game-development-tools-suck/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
