<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Eddie on Games</title>
	
	<link>http://www.eddiescholtz.com/blog</link>
	<description />
	<lastBuildDate>Thu, 10 Dec 2009 03:27:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/eddiescholtz" /><feedburner:info uri="eddiescholtz" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>eddiescholtz</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Upcoming Perforce Command: shelve</title>
		<link>http://feedproxy.google.com/~r/eddiescholtz/~3/eU43C9U49uw/283</link>
		<comments>http://www.eddiescholtz.com/blog/archives/283#comments</comments>
		<pubDate>Thu, 10 Dec 2009 03:27:12 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.eddiescholtz.com/blog/?p=283</guid>
		<description><![CDATA[Today Perforce announced an upcoming feature in their next release: the shelve command. It will allow users to cache files on the server without checking them in. Meaning...
- You can shelve changes so someone else can review the code (on their own computer) before it gets checked in.
- You can use shelve to move in-progress work [...]]]></description>
			<content:encoded><![CDATA[<p>Today Perforce <a href="http://blog.perforce.com/blog/?p=1872">announced</a> an upcoming feature in their next release: the <strong>shelve</strong> command. It will allow users to cache files on the server without checking them in. Meaning...</p>
<p>- You can shelve changes so someone else can review the code (on their own computer) before it gets checked in.</p>
<p>- You can use shelve to move in-progress work from one computer to another. This makes it easier to test changes on various OSes and hardware. It also allows you to hand off an in-progress task to someone else on the team.</p>
<p>- You can use shelve to save progress on one task and start working on another task (that may touch the same files), allowing you to keep the change lists separate.</p>
<p>These are most of the features I've wished for since I started using Perforce. Now if they just added google-style full text indexing and search...</p>
<img src="http://feeds.feedburner.com/~r/eddiescholtz/~4/eU43C9U49uw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.eddiescholtz.com/blog/archives/283/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eddiescholtz.com/blog/archives/283</feedburner:origLink></item>
		<item>
		<title>AI Panel – Boston Post Mortem</title>
		<link>http://feedproxy.google.com/~r/eddiescholtz/~3/IzA6UfmfAtM/247</link>
		<comments>http://www.eddiescholtz.com/blog/archives/247#comments</comments>
		<pubDate>Thu, 19 Nov 2009 22:11:19 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.eddiescholtz.com/blog/?p=247</guid>
		<description><![CDATA[The AI panel discussion at last night's Boston Post Mortem was a good one. The panelists were: John Abercrombie (BioShock, SWAT 4), Damián Isla (Halo 2, Halo 3), and Jeff Orkin (No One Lives Forever 2, F.E.A.R.).  If you do the math, I think those games average to a 92 metacritic score. Impressive.
Here are some of [...]]]></description>
			<content:encoded><![CDATA[<p>The AI panel discussion at last night's <a href="http://www.bostonpostmortem.org/">Boston Post Mortem</a> was a good one. The panelists were: John Abercrombie (BioShock, SWAT 4), Damián Isla (Halo 2, Halo 3), and <a href="http://web.media.mit.edu/~jorkin/">Jeff Orkin</a> (No One Lives Forever 2, F.E.A.R.).  If you do the math, I think those games average to a 92 metacritic score. Impressive.</p>
<p>Here are some of the main points I remember (this is not verbatim, no guarantees on accuracy):</p>
<p>- <strong>Strongly consider using middleware whenever possible.</strong> It sucks spending 2 years implementing a navmesh generator for the Nth time, especially during your programming prime.</p>
<p>- <strong>Keep it simple.</strong> Complicated AI programming models never handle all of the edge cases properly. And when they fail it is very difficult to figure out what is going wrong. Simple approaches make it much easier to understand why things are happening.</p>
<p>- <strong>Each year, solving the same AI problems becomes more challenging.</strong> (e.g. Technology improves = games can handle more complex geometry and more dynamic physics objects = pathfinding becomes a harder problem to solve)</p>
<p>- You can never afford enough raycasts.</p>
<p>- A great AI engineer notices small hiccups and inconsistencies, digs into the code, figures out why they are happening, and fixes them. At the same time, he prioritizes these fixes in terms of what is most important for the overall experience.</p>
<p>- <strong>An AI engineer's chief responsibility is creating fun gameplay.</strong></p>
<p>- In many ways, the AI engineer becomes the defender of the design. He forces the design team to concretely describe the types of encounters they want and holds them to it. If designs are vague, contradictory, or incomplete, the AI engineer forces clarification.</p>
<p>- Rather than giving designers a scripting system or ability to define custom behaviors, it's usually better to let them layout and tag levels. AI characters are treated as black boxes and the designer drops them in using spawn points.</p>
<p>- <strong>Having awesome animators goes a long way towards creating believable AI characters.</strong></p>
<p>- <strong>Is "emergent" AI a real solution? No</strong>. Most of the time you end up with emergent crap. Although John mentioned a story about setting a character on fire, waiting for them to jump in the water, and then shocking the water. Jeff mentioned two examples. The first was a case where his AI character corrected a human using incorrect grammar. (The simulation involved text chat.) In his second example, a bug allowed the AI waiter to place a plate on the floor rather than a table. However, the waiter learned to say "oops" whenever he did it. This raised the interesting concept of using AI to cover up bugs in your game.</p>
<p>- <strong>In the next 10 years, offline data mining is probably going to become fairly important for implementing realistic AI.</strong> Many new methods of gameplay can be learned by watching humans play. No engineer is capable of thinking of all gameplay behaviors, yet alone implementing them.</p>
<p>- The industry already "data mines" for most AI animations. We use motion capture that gets cleaned up rather than having animators create animations from scratch.</p>
<p>- <strong>One of the big challenges in AI is communicating the character's intent.</strong> In real life, if you train with your buddy to breach and clear a room full of terrorists, you have a good understanding of how he is going to behave and why he is going to perform certain actions. Replace your buddy with an AI character and most of the time you can't predict what he is going to do or why he is going to do it. A related example was: compare playing Left 4 Dead with AI teammates and with human teammates.</p>
<p>- <strong>Many times, small cues can go a long way toward communicating intent and thus fun gameplay.</strong> Example: In F.E.A.R., when the player climbed into certain vents, there were triggers that caused AI soldiers to say "he's in the vents!".  Even though the soldiers couldn't climb into the vents, it went a long way towards inducing FEAR. (sorry, I couldn't resist...)</p>
<p>- Most of the big AAA titles can't afford to take significant risks on experimenting with new AI areas/techniques. Indie teams can afford to take more risk and might benefit from building a game centered around a new/specific type of AI. Suggestion: just open an AI textbook, you could build a game around almost any individual technique described (it might only have a few minutes of game play but that doesn't mean it won't be interesting).</p>
<p><strong>What are they up to now?</strong></p>
<p>John Abercrombie is finishing up development of BioShock 2.</p>
<p>Damián Isla cofounded <a href="http://www.moonshotgames.com/">Moonshot Games</a>, where he is working on a downloadable game with AAA production values.</p>
<p>Jeff Orkin is finishing his PhD at MITs Media Lab. He is researching the use of machine learning on game data collected from human players. Be sure to check out his <a href="http://web.media.mit.edu/~jorkin/restaurant/">Restaurant Game</a>.</p>
<img src="http://feeds.feedburner.com/~r/eddiescholtz/~4/IzA6UfmfAtM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.eddiescholtz.com/blog/archives/247/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eddiescholtz.com/blog/archives/247</feedburner:origLink></item>
		<item>
		<title>Comic: Measuring Code Quality</title>
		<link>http://feedproxy.google.com/~r/eddiescholtz/~3/5jA2HpfMa3A/212</link>
		<comments>http://www.eddiescholtz.com/blog/archives/212#comments</comments>
		<pubDate>Fri, 23 Oct 2009 04:54:34 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.eddiescholtz.com/blog/?p=212</guid>
		<description><![CDATA[When you need to evaluate a project for code quality in 30 seconds or less...

* Be sure to check the "Use Regular Expressions" box...
** I think Jeff Atwood would agree.
]]></description>
			<content:encoded><![CDATA[<p>When you need to evaluate a project for code quality in 30 seconds or less...</p>
<p><img class="noline" style="border: 0px initial initial;" title="Google is still working on the CodeRank algorithm but I think it looks something like (Matched Lines / Total Lines) + (Matched Files / Total Files) + ..." src="http://www.eddiescholtz.com/wp-content/uploads/2009/10/code-quality.jpg" alt="Code Quality" width="556" height="693" /></p>
<pre>* Be sure to check the "Use Regular Expressions" box...</pre>
<pre>** I think Jeff Atwood <a href="http://www.codinghorror.com/blog/archives/000878.html">would agree</a>.</pre>
<img src="http://feeds.feedburner.com/~r/eddiescholtz/~4/5jA2HpfMa3A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.eddiescholtz.com/blog/archives/212/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eddiescholtz.com/blog/archives/212</feedburner:origLink></item>
		<item>
		<title>October Double Feature</title>
		<link>http://feedproxy.google.com/~r/eddiescholtz/~3/VBvHZX62lOc/196</link>
		<comments>http://www.eddiescholtz.com/blog/archives/196#comments</comments>
		<pubDate>Fri, 23 Oct 2009 00:48:48 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.eddiescholtz.com/blog/?p=196</guid>
		<description><![CDATA[I had the opportunity to work on two games that shipped this past month. The first was Rock Band Metal Track Pack (I was responsible for the PS3 version). And the other was Borderlands (I briefly worked on the arena mode). Be sure to check 'em out!
 
]]></description>
			<content:encoded><![CDATA[<p>I had the opportunity to work on two games that shipped this past month. The first was Rock Band Metal Track Pack (I was responsible for the PS3 version). And the other was Borderlands (I briefly worked on the arena mode). Be sure to check 'em out!</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-198" style="border: 1px solid black;" title="Rock_Band_Metal_Track_Pack" src="http://www.eddiescholtz.com/wp-content/uploads/2009/10/rock_band_metal_track_pack.jpg" alt="Rock_Band_Metal_Track_Pack" width="333" height="418" /> <img class="alignnone size-full wp-image-197" style="border: 1px solid black;" title="Borderlands" src="http://www.eddiescholtz.com/wp-content/uploads/2009/10/borderlands_box_art.jpg" alt="Borderlands" width="315" height="400" /></p>
<img src="http://feeds.feedburner.com/~r/eddiescholtz/~4/VBvHZX62lOc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.eddiescholtz.com/blog/archives/196/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eddiescholtz.com/blog/archives/196</feedburner:origLink></item>
		<item>
		<title>Navigation Mesh Construction</title>
		<link>http://feedproxy.google.com/~r/eddiescholtz/~3/8O8EgDoJfNc/191</link>
		<comments>http://www.eddiescholtz.com/blog/archives/191#comments</comments>
		<pubDate>Fri, 14 Aug 2009 03:57:40 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.eddiescholtz.com/blog/?p=191</guid>
		<description><![CDATA[If you've ever had an interest in pathfinding or computational geometry, you should check out Mikko Mononen's Recast project. It's open source and comes with a prebuilt demo capable of loading .obj files, building navigation meshes based on numerous tweakable parameters, and finding shortest paths. It's a good followup to the Game/AI post Fixing Pathfinding [...]]]></description>
			<content:encoded><![CDATA[<p>If you've ever had an interest in pathfinding or computational geometry, you should check out Mikko Mononen's <a href="http://code.google.com/p/recastnavigation/">Recast project</a>. It's open source and comes with a prebuilt demo capable of loading .obj files, building navigation meshes based on numerous tweakable parameters, and finding shortest paths. It's a good followup to the Game/AI post <a href="http://www.ai-blog.net/archives/000152.html">Fixing Pathfinding Once and For All</a>.</p>
<img src="http://feeds.feedburner.com/~r/eddiescholtz/~4/8O8EgDoJfNc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.eddiescholtz.com/blog/archives/191/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eddiescholtz.com/blog/archives/191</feedburner:origLink></item>
		<item>
		<title>Rock Band Country Track Pack</title>
		<link>http://feedproxy.google.com/~r/eddiescholtz/~3/QopNDt0Pulc/179</link>
		<comments>http://www.eddiescholtz.com/blog/archives/179#comments</comments>
		<pubDate>Wed, 22 Jul 2009 23:22:30 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.eddiescholtz.com/blog/?p=179</guid>
		<description><![CDATA[Rock Band Country Track Pack came out yesterday. I had the opportunity to work on it (specifically the PS3 version). Y'all should check it out!

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rockband.com/games/country">Rock Band Country Track Pack</a> came out yesterday. I had the opportunity to work on it (specifically the PS3 version). Y'all should check it out!</p>
<p style="text-align: center;"><img class="size-full wp-image-180  aligncenter" title="Rock Band Country" src="http://www.eddiescholtz.com/wp-content/uploads/2009/07/rbcountry.jpg" alt="Rock Band Country" width="358" height="438" /></p>
<img src="http://feeds.feedburner.com/~r/eddiescholtz/~4/QopNDt0Pulc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.eddiescholtz.com/blog/archives/179/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eddiescholtz.com/blog/archives/179</feedburner:origLink></item>
		<item>
		<title>Perforce Changelist Search 0.2 Released</title>
		<link>http://feedproxy.google.com/~r/eddiescholtz/~3/FJIHYWciTjo/164</link>
		<comments>http://www.eddiescholtz.com/blog/archives/164#comments</comments>
		<pubDate>Mon, 08 Jun 2009 07:51:28 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.eddiescholtz.com/blog/?p=164</guid>
		<description><![CDATA[In this release, I added graphing and support for syncing to a specific depot directory. On larger repositories the graph UI will probably hang for a few seconds during generation. Just be patient. I'm in the process of setting of the source code for release in Google Code.
Perforce Changelist Search 0.2


]]></description>
			<content:encoded><![CDATA[<p>In this release, I added graphing and support for syncing to a specific depot directory. On larger repositories the graph UI will probably hang for a few seconds during generation. Just be patient. I'm in the process of setting of the source code for release in Google Code.</p>
<p style="text-align: center;"><a href="http://www.eddiescholtz.com/downloads/p4search-0.2.zip">Perforce Changelist Search 0.2</a></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-166" title="sync" src="http://www.eddiescholtz.com/wp-content/uploads/2009/06/sync.jpg" alt="sync" width="340" height="245" /></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-165" title="graphs" src="http://www.eddiescholtz.com/wp-content/uploads/2009/06/graphs.jpg" alt="graphs" width="500" height="414" /></p>
<img src="http://feeds.feedburner.com/~r/eddiescholtz/~4/FJIHYWciTjo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.eddiescholtz.com/blog/archives/164/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.eddiescholtz.com/blog/archives/164</feedburner:origLink></item>
		<item>
		<title>This Week’s Link Roundup</title>
		<link>http://feedproxy.google.com/~r/eddiescholtz/~3/dl48mhSAVKY/143</link>
		<comments>http://www.eddiescholtz.com/blog/archives/143#comments</comments>
		<pubDate>Sat, 30 May 2009 03:14:41 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.eddiescholtz.com/blog/?p=143</guid>
		<description><![CDATA[E3 is next week, finally returning in its old form. The hype, previews, rumors, buzz, and predictions have been building all week. I'm really looking forward to seeing what comes out of it.
It would be interesting to see Apple enter the ring with a game console, as some have predicted. Would they announce it at [...]]]></description>
			<content:encoded><![CDATA[<p>E3 is next week, finally returning in its old form. The <a href="http://www.gametrailers.com/video/e3-09-dantes-inferno/49820" target="_blank">hype</a>, <a href="http://kotaku.com/5272421/first-look-at-bethesdas-brink" target="_blank">previews</a>, <a href="http://games.slashdot.org/story/09/05/27/0511211/Sony-Rumored-To-Be-Debuting-Wiimote-Like-Controller-At-E3" target="_blank">rumors</a>, <a href="http://kotaku.com/5272382/kojima-updates-site-yet-again-with-familiar-face-hidden-mystery-mask" target="_blank">buzz</a>, and predictions have been building all week. I'm really looking forward to seeing what comes out of it.</p>
<p>It would be interesting to see Apple enter the ring with a game console, <a href="http://kotaku.com/5271466/ubisoft-ceo-predicts-new-apple-gaming-hardware" target="_blank">as some have predicted</a>. Would they announce it at E3 or at WWDC which is the following week? An Apple console would probably target the same market segment as the Wii, with the same simplicity and user experience that Apple products are known for. All in all? Unlikely.</p>
<p>Speaking of Apple, the iPhone App Store <a href="http://www.gamasutra.com/view/feature/4038/persuasive_games_i_want_my_99_.php" target="_blank">has reached a weird point in it's evolution</a>. Average prices are dropping fast, yet the consumer psychology behind spending 99 cents on an app is a lot different than the psychology behind spending the same amount of money or more on a drink or magazine.</p>
<p>Many developers have also complained that the iPhone App approval process could be better, saying it's slow and rejection feedback is vague. This <a href="http://daringfireball.net/2009/05/diary_of_an_app_store_reviewer" target="_blank">satire piece</a> tells the story from the Apple side of things.</p>
<p>One final link in the Apple department, Carmack <a href="http://www.idsoftware.com/iphone-doom-classic-progress/" target="_blank">has been working on Doom for iPhone</a>. I wish he'd stop veering off on side projects and give us Rage and id Tech 5 already!</p>
<p>From the engineering department, Intel talks about <a href="http://software.intel.com/en-us/blogs/2009/05/29/agile-best-practice-3-of-10-measure-and-frequently-repay-technical-debt/" target="_blank">dealing with Technical Debt</a>. As <a href="http://www.codinghorror.com/blog/archives/001230.html" target="_blank">others have discussed</a>, sometimes it is necessary to sacrifice quality in order to meet short term deadlines. But make sure your hacks don't go unfixed for too long.</p>
<p>Every once in a while, I think it's a good idea to remind yourself of what <a href="http://coliveira.net/2009/05/how-to-become-a-better-developer-in-30-days/" target="_blank">other developers consider best practices</a>. You might not agree with all of them, but constantly working on methods of self improvement can never hurt.</p>
<p>The World of Goo guys <a href="http://2dboy.com/2009/05/27/rapid-prototyping-framework/" target="_blank">released a game prototyping framework</a>. Apparently it lacks documention, which would probably be very important to the type of people that want to use it. But I guess something is better than nothing. Maybe someone else will document it for them?</p>
<p>More and more small developers are funding development by <a href="http://www.naturalselection2.com/buy" target="_blank">selling early access</a> to their game. I think this is a great idea since it also provides early feedback from the people who care most about your game. Give your users what they want! (And get free QA at the same time.)</p>
<p>Some more <a href="http://www.gossipgamers.com/starcraft-2-details-fansite-summit-screens-and-more/" target="_blank">Starcraft 2 details</a>. (drool)</p>
<p>Finally, a somewhat humorous <a href="http://farrarfocus.blogspot.com/2009/05/bad-industry-humor.html" target="_blank">rant on the state of the industry</a>.</p>
<img src="http://feeds.feedburner.com/~r/eddiescholtz/~4/dl48mhSAVKY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.eddiescholtz.com/blog/archives/143/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eddiescholtz.com/blog/archives/143</feedburner:origLink></item>
		<item>
		<title>Perforce Changelist Search 0.1 Released</title>
		<link>http://feedproxy.google.com/~r/eddiescholtz/~3/xsmqWFFebS8/130</link>
		<comments>http://www.eddiescholtz.com/blog/archives/130#comments</comments>
		<pubDate>Fri, 08 May 2009 05:37:34 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.eddiescholtz.com/blog/?p=130</guid>
		<description><![CDATA[You can now download and tryout Perforce Changelist Search for yourself. Be sure to check out the demo video if you haven't already. Keep in mind that the initial sync may take a few minutes, depending on the size of your repository, so please be patient. I am happy to hear any feedback, questions, comments, [...]]]></description>
			<content:encoded><![CDATA[<p>You can now <a href="http://www.eddiescholtz.com/downloads/p4search-0.2.zip" target="_self">download</a> and tryout Perforce Changelist Search for yourself. Be sure to check out the demo <a href="http://www.eddiescholtz.com/blog/archives/99" target="_self">video</a> if you haven't already. Keep in mind that the initial sync may take a few minutes, depending on the size of your repository, so please be patient. I am happy to hear any feedback, questions, comments, feature requests, and bug reports, so please comment below or email me at eddie@eddiescholtz.com.</p>
<p style="text-align: center;"><a href="http://www.eddiescholtz.com/downloads/p4search-0.2.zip" target="_self">Perforce Changelist Search 0.1</a></p>
<p>Updates and source code release are already in the works so be sure to check back soon!</p>
<img src="http://feeds.feedburner.com/~r/eddiescholtz/~4/xsmqWFFebS8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.eddiescholtz.com/blog/archives/130/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://www.eddiescholtz.com/blog/archives/130</feedburner:origLink></item>
		<item>
		<title>Perforce Changelist Search</title>
		<link>http://feedproxy.google.com/~r/eddiescholtz/~3/lqhb1lWEKnA/99</link>
		<comments>http://www.eddiescholtz.com/blog/archives/99#comments</comments>
		<pubDate>Tue, 14 Apr 2009 04:12:59 +0000</pubDate>
		<dc:creator>Eddie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.eddiescholtz.com/blog/?p=99</guid>
		<description><![CDATA[Several months ago, I found myself in a situation where I wanted to search Perforce changelist descriptions. After exploring the UI, talking to coworkers, and asking the internet, I came to the conclusion that it simply wasn't possible using P4V or P4Win. There are ways to do this using the command line (run p4 changes and redirect [...]]]></description>
			<content:encoded><![CDATA[<p>Several months ago, I found myself in a situation where I wanted to search Perforce changelist descriptions. After exploring the UI, talking to coworkers, and asking the internet, I came to the conclusion that it simply wasn't possible using P4V or P4Win. There are <a href="http://stackoverflow.com/questions/134103/" target="_blank">ways</a> to do this using the command line (run p4 changes and redirect the output to a text file, then use grep) or p4sql, but neither solution is simple and elegant. This turned out to be one of those little things that most people brush off but for some reason I couldn't forget about it. After all, if you're working with good, disciplined developers, the changelist description is usually the juiciest part of a commit. It should contain a brief description of the feature the developer added, the bug she fixed, or the content she changed. If you're like me, software annoyances such as this one occasionally turn into pet programming projects. After a month or two, this is what I ended up with:</p>
<p>(I recommend watching the HD <a href="http://vimeo.com/4100687" target="_blank">version</a> and exanding it to fullscreen so you can actually see what's going on. Turn up your volume for my voice-over.)</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="270" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=4100687&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="480" height="270" src="http://vimeo.com/moogaloop.swf?clip_id=4100687&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>In short, the program allows you to sync all of the changes in a Perforce repository and search them locally. Just for fun, you can also view graphs of changes over time. I wrote it in Python, using wxPython for the user interface. Changes are stored in an sqlite database which makes searching fairly easy. The graphing is done using matplotlib and to bundle everything into a .exe I used py2exe. (Note: I wasn't able to cleanly pack the required matplotlib modules into the executable. If you have experience with this and can offer advice, please share.) Finally, to interface with Perforce I'm using P4Python. Although developers seem to have their fair share of complaints about P4V and P4Win, Perforce certainly does a great job of providing API's for several languages (C/C++, Perl, Python, Ruby). And from what I've heard, many companies use the API's to integrate their tools with perforce or add a layer on top of Perforce with custom behavior. However, it doesn't make sense for everyone to be writing the same custom tools (especially for things like version control). If Perforce were to add a good plugin architecture, that allowed you to insert features in the UI as first-class citizens, common tools could be written once and shared. This would especially help small and medium sized companies that might not have their own tools teams.</p>
<p><strong>Update (5/8/09): </strong>Perforce Changelist Search 0.1 has been <a href="http://www.eddiescholtz.com/blog/archives/130">released</a>.</p>
<img src="http://feeds.feedburner.com/~r/eddiescholtz/~4/lqhb1lWEKnA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.eddiescholtz.com/blog/archives/99/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://www.eddiescholtz.com/blog/archives/99</feedburner:origLink></item>
	</channel>
</rss>
