<?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; Revision Control</title>
	<atom:link href="http://thetoolsmiths.org/category/programming/revision-control/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>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>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>Sharing code with p4share</title>
		<link>http://thetoolsmiths.org/2009/07/26/sharing-code-with-p4share/</link>
		<comments>http://thetoolsmiths.org/2009/07/26/sharing-code-with-p4share/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 03:52:26 +0000</pubDate>
		<dc:creator>Geoff Evans</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Revision Control]]></category>
		<category><![CDATA[Teams]]></category>

		<guid isPermaLink="false">http://toolssig.wordpress.com/?p=303</guid>
		<description><![CDATA[Recently Insomniac Games has expanded to include a second studio in Durham, NC. Durham has their own Perforce server instance to support engineering and asset production for their titles. While the Core Team (engine and tools engineering) is still located in Burbank, Durham has a small group that add features and improvements to help get [...]]]></description>
			<content:encoded><![CDATA[<p>Recently Insomniac Games has expanded to include a second studio in Durham, NC.  Durham has their own Perforce server instance to support engineering and asset production for their titles.  While the Core Team (engine and tools engineering) is still located in Burbank, Durham has a small group that add features and improvements to help get their games done.  Until recently we got by okay with Durham taking code drops from Burbank, but we needed something better.  We needed a way to share code bidirectionally.</p>
<p>Unfortunately Perforce was not designed as a distributed revision control system, so we needed to come up with our own solution.  We needed to allow sharing code across Perforce server instances.  p4share is a Perl script I wrote to help solve this problem without involving a huge list of complicated manual steps.</p>
<p>To get the job done it does a lot of deleting, syncing, and copying of files on the local client&#8230; nothing too exciting.  I was however able streamline the process in a interesting way given Perforce&#8217;s ability to open a file for edit at the client have revision (as opposed to the head revision).  When you open a file for edit at the client have revision then all of the changes that have been made in subsequent revisions must be resolved into your edits before you submit your changes.  This resolve step is only necessary when your have revision does not equal the head revision when checking out a file, or the file in question allows for multiple checkout and someone edited and submit changes before you can submit.</p>
<p>Given the ability of Perforce to open a historical revision for edit, I was able to make p4share less likely to loose edits on files that have changed on both servers.  p4share uses a label to store the revision at which each file was last shared.  When sharing happens again in the future, the client is synced back to the revision that was submitted the last time files were shared.  The files are then opened for edit at that historical revision and overwritten with files from the other server.  In this state any file that had changed on both sides will require resolution to submit, but the resolving mechanics of Perforce has all the information it needs to do automatic resolution (two versions of a file and a base revision&#8230; which in this case is the revision labeled during the last share session).</p>
<p>Using this technique is a win because it removes the possibility of stomping files and losing changes on either side when manually merging changes from both servers.</p>
<p>You can find p4share on <a href="http://nocturnal.insomniacgames.com">Nocturnal Initiative</a>&#8216;s Perforce server: nocturnal.insomniacgames.com:1666 at //Source/Trunk/p4share/p4share.pl, and via p4web <a href="http://nocturnal.insomniacgames.com:8080/@md=d&amp;cd=//Source/Trunk/p4share/&amp;cdf=//Source/Trunk/p4share/p4share.pl&amp;c=nvd@//Source/Trunk/p4share/p4share.pl?ac=22">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://thetoolsmiths.org/2009/07/26/sharing-code-with-p4share/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Perforce Search Tool</title>
		<link>http://thetoolsmiths.org/2009/04/20/perforce-search-tool/</link>
		<comments>http://thetoolsmiths.org/2009/04/20/perforce-search-tool/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 21:59:20 +0000</pubDate>
		<dc:creator>Jeff Ward</dc:creator>
				<category><![CDATA[Revision Control]]></category>

		<guid isPermaLink="false">http://toolssig.wordpress.com/?p=215</guid>
		<description><![CDATA[Today, we have an interesting tool writen by Toolsmiths reader Eddie Schooltz.  The tool, which he wrote about on his blog, is for searching for Perforce change sets, and I can see how it would be incredibly useful (provided you have good changelist descriptions) when searching for when things changed. Eddie says he&#8217;ll be posting [...]]]></description>
			<content:encoded><![CDATA[<p>Today, we have an interesting tool writen by Toolsmiths reader Eddie Schooltz.  The tool, which he <a href="http://www.eddiescholtz.com/blog/archives/99">wrote about on his blog</a>, is for searching for Perforce change sets, and I can see how it would be incredibly useful (provided you have good changelist descriptions) when searching for when things changed.</p>
<p>Eddie says he&#8217;ll be posting the source to the tool, and we&#8217;ll keep you updated about when that happens.</p>
]]></content:encoded>
			<wfw:commentRss>http://thetoolsmiths.org/2009/04/20/perforce-search-tool/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
