<?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>Intelligent Artifice &#187; Programming</title>
	<atom:link href="http://www.intelligent-artifice.com/category/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://www.intelligent-artifice.com</link>
	<description>Games &#38; interactive entertainment: design, production, industry and related topics</description>
	<lastBuildDate>Sun, 03 Mar 2013 10:03:07 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>How to filter out common unwanted characters in Python</title>
		<link>http://www.intelligent-artifice.com/2010/02/how-to-filter-out-common-unwanted-characters-in-python.html</link>
		<comments>http://www.intelligent-artifice.com/2010/02/how-to-filter-out-common-unwanted-characters-in-python.html#comments</comments>
		<pubDate>Sun, 14 Feb 2010 13:15:18 +0000</pubDate>
		<dc:creator>Jurie</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.intelligent-artifice.com/?p=1282</guid>
		<description><![CDATA[I did a fair amount of programming last year and among other things I wrote a Python program that takes Word documents and transforms them to game data. One of the things it had to do is take a text that uses characters we didn&#8217;t support in the engine (on Nintendo DS) and replace them [...]]]></description>
				<content:encoded><![CDATA[<p>I did a fair amount of programming last year and among other things I wrote a Python program that takes Word documents and transforms them to game data. One of the things it had to do is take a text that uses characters we didn&#8217;t support in the engine (on Nintendo DS) and replace them with other characters. Like so:</p>
<p>
<pre>character_replacements = [
    ( u'\u2018', u"'"),   # LEFT SINGLE QUOTATION MARK
    ( u'\u2019', u"'"),   # RIGHT SINGLE QUOTATION MARK
    ( u'\u201c', u'"'),   # LEFT DOUBLE QUOTATION MARK
    ( u'\u201d', u'"'),   # RIGHT DOUBLE QUOTATION MARK
    ( u'\u201e', u'"'),   # DOUBLE LOW-9 QUOTATION MARK
    ( u'\u2013', u'-'),   # EN DASH
    ( u'\u2026', u'...'), # HORIZONTAL ELLIPSIS
    ( u'\u0152', u'OE'),  # LATIN CAPITAL LIGATURE OE
    ( u'\u0153', u'oe')   # LATIN SMALL LIGATURE OE
]<br />
    for (undesired_character, safe_character) in character_replacements:
        text = text.replace(undesired_character, safe_character)
</pre>
</p>
<p>This code is not hard to write, but building the character replacement list can take some time. The bulk consists of characters that Word will automatically insert when appropriate, but that game typefaces often don&#8217;t support or that are cumbersome for other reasons. As you can see. those characters are basically all kinds of quotation marks, plus a dash and the ellipsis. All of these are replaced by old school 7-bit ASCII characters or character sequences.</p>
<p>(Last year, while I was working on this tool, I read Robert Bringhurst&#8217;s <a href="http://en.wikipedia.org/wiki/The_Elements_of_Typographic_Style" target="_blank">&#8220;Elements of Typographic Style&#8221;</a>. So as I was learning why it makes sense to use different types of dashes and quotation marks, I was also writing code to strip them out. Given the time constraints, this was the pragmatic approach. Still, I&#8217;d love to write a better text display engine sometime.)</p>
<p>Some time later I ran into trouble with the French &#8216;œ&#8217; (as used in &#8216;œuvre&#8217;), so I added that too since the mapping is uncontroversial. Our typeface supported German umlauted vowels, so we left those.</p>
<p>In case it wasn&#8217;t clear: the comments give the official Unicode names for each character.</p>
<p>The list is far from complete, and depending on your situation you may want to add some kind of additional black- or white-listing mechanism to make sure other unsupported characters don&#8217;t slip through. But this simple list worked very well for the 13 multilingual Nintendo DS games we developed last year. If I could have found a reasonable and well-documented list like this, I could have saved a few hours of time. I hope that by publishing this snippet here someone else will be able to do that.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.intelligent-artifice.com/2010/02/how-to-filter-out-common-unwanted-characters-in-python.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joerg Plewe and Flying Guns</title>
		<link>http://www.intelligent-artifice.com/2007/09/joerg-plewe-and-flying-guns.html</link>
		<comments>http://www.intelligent-artifice.com/2007/09/joerg-plewe-and-flying-guns.html#comments</comments>
		<pubDate>Wed, 26 Sep 2007 14:08:36 +0000</pubDate>
		<dc:creator>Jurie</dc:creator>
				<category><![CDATA[Indie]]></category>
		<category><![CDATA[Other Web Sites]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[physics]]></category>

		<guid isPermaLink="false">http://www.intelligent-artifice.com/2007/09/joerg-plewe-and-flying-guns.html</guid>
		<description><![CDATA[Joerg Plewe currently is a senior Java and GUI developer and has been in many areas of IT ranging from embedded programming to bioinformatics and games. Joerg has studied physics and used to work with languages like C/C++, Forth, Lisp, Assembly and others in all kinds of environments. That may be so, but I know [...]]]></description>
				<content:encoded><![CDATA[<blockquote><p>Joerg Plewe currently is a senior Java and GUI developer and has been in many areas of IT ranging from embedded programming to bioinformatics and games. Joerg has studied physics and used to work with languages like C/C++, Forth, Lisp, Assembly and others in all kinds of environments.</p></blockquote>
<p>That may be so, but I know Joerg Plewe as the programmer I used to work with over 10 years ago at Blue Byte Software. He is a very serious programmer, and almost talked me into developing an interest in FORTH. The world might have been very different if he had succeeded.</p>
<p>He has a blog over at java.net where he mainly talks about Java (duh), but also about <a href="http://weblogs.java.net/blog/herkules/archive/2007/09/index.html" target="_blank">physics/dynamics stacks</a> and <a href="http://weblogs.java.net/blog/herkules/archive/2006/10/index.html" target="_blank">cloud rendering</a>.</p>
<p>He is also one of the key people behind <a href="http://www.flyingguns.com/" target="_blank">Flying Guns</a>, an open source distributed 3D simulation framework (aka 3D action flight sim). It is based on a <a href="http://drts.sourceforge.net/fg/headquarter/index.html" target="_blank">framework for distributed simulations</a>, all written in Java. Pretty impressive!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.intelligent-artifice.com/2007/09/joerg-plewe-and-flying-guns.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seam Carving for Content-Aware Image Resizing</title>
		<link>http://www.intelligent-artifice.com/2007/09/seam-carving-for-content-aware-image-resizing.html</link>
		<comments>http://www.intelligent-artifice.com/2007/09/seam-carving-for-content-aware-image-resizing.html#comments</comments>
		<pubDate>Wed, 05 Sep 2007 08:10:17 +0000</pubDate>
		<dc:creator>Jurie</dc:creator>
				<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.intelligent-artifice.com/2007/09/seam-carving-for-content-aware-image-resizing.html</guid>
		<description><![CDATA[Here is a SIGGRAPH 2007 presentation by Shai Avidan and Ariel Shamir on a novel way of resizing images. Arbitrarily resize an image while keeping important parts whole. It&#8217;s quite impressive, until the baby is squished. Can also be used to eliminate people from your pictures, Stalin-style. Coming soon to your Photoshop.]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.youtube.com/watch?v=vIFCV2spKtg" target="_blank">Here</a> is a SIGGRAPH 2007 presentation by Shai Avidan and Ariel Shamir on a novel way of resizing images. Arbitrarily resize an image while keeping important parts whole. It&#8217;s quite impressive, until the baby is squished. Can also be used to eliminate people from your pictures, Stalin-style. Coming soon to your Photoshop.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.intelligent-artifice.com/2007/09/seam-carving-for-content-aware-image-resizing.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Checkers has been &#8216;solved&#8217;</title>
		<link>http://www.intelligent-artifice.com/2007/07/checkers-has-be.html</link>
		<comments>http://www.intelligent-artifice.com/2007/07/checkers-has-be.html#comments</comments>
		<pubDate>Fri, 20 Jul 2007 16:34:34 +0000</pubDate>
		<dc:creator>Jurie</dc:creator>
				<category><![CDATA[Game Design]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://intelligent-artifice.dreamhosters.com/2007/07/20/checkers-has-been-solved/</guid>
		<description><![CDATA[New Scientist reports that Checkers has been solved and joins the ranks of Tic Tac Toe and, apparently, Connect 4. Computer games expert (in a different sense than usual within the context of this blog) and spoilsport Jonathan Schaeffer worked on the problem for 18 years! (Via BoingBoing.)]]></description>
				<content:encoded><![CDATA[<p>New Scientist reports that <a href="http://www.newscientisttech.com/article/dn12296-checkers-solved-after-years-of-number-crunching.html" target="_blank">Checkers has been solved</a> and joins the ranks of Tic Tac Toe and, apparently, Connect 4. Computer games expert (in a different sense than usual within the context of this blog) <del>and spoilsport</del> <a href="http://www.cs.ualberta.ca/~jonathan/" target="_blank">Jonathan Schaeffer</a> worked on the problem for 18 years!</p>
<p>(Via <a href="http://www.boingboing.net/" target="_blank">BoingBoing</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.intelligent-artifice.com/2007/07/checkers-has-be.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Electronic Arts&#8217; STL Implementation</title>
		<link>http://www.intelligent-artifice.com/2007/07/electronic-arts.html</link>
		<comments>http://www.intelligent-artifice.com/2007/07/electronic-arts.html#comments</comments>
		<pubDate>Thu, 12 Jul 2007 16:48:42 +0000</pubDate>
		<dc:creator>Jurie</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://intelligent-artifice.dreamhosters.com/2007/07/12/electronic-arts-stl-implementation/</guid>
		<description><![CDATA[If you&#8217;re into hard-core C++ programming for games, you might be interested in reading about Electronic Arts&#8217; STL Implementation. They wrote their own implementation of one of the most intricate C++ libaries known to man. Back when I was into hard-core C++, STL was not well supported by Microsoft&#8217;s C++ compiler (Visual C++ 4.2, at [...]]]></description>
				<content:encoded><![CDATA[<p>If you&#8217;re into hard-core C++ programming for games, you might be interested in reading about <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html#TR1" target="_blank">Electronic Arts&#8217; STL Implementation</a>. They wrote their own implementation of one of the most intricate C++ libaries known to man.</p>
<p>Back when I was into hard-core C++, STL was not well supported by Microsoft&#8217;s C++ compiler (Visual C++ 4.2, at the time), so I rolled some container and string libaries of my own while dreaming of one day being able to use the much more advanced STL. That day never came somehow as I moved away from C++ and programming.</p>
<p>My gut reaction to anyone announcing they are going to rewrite the STL would be to create as much distance as possible between me and the unfortunate fool (preferrably by ejecting said fool from the building). But this paper by EA makes a good case for why they felt it was necessary (and what makes game programming, specifically on consoles, different from other kinds of programming). The programmers at EA seem to know what they&#8217;re doing.</p>
<p>Nevertheless, I am glad that these days I can use programming languages that come with all of this stuff built in. Programming C++ is like making bricks from clay and melting steel for beams when you want to build a house. Sometimes having this extreme amount of control over your building materials is great and allows you to do things you couldn&#8217;t otherwise do. But more often this is how it&#8217;s done because that&#8217;s how it&#8217;s done.</p>
<p>(Via Tobi.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.intelligent-artifice.com/2007/07/electronic-arts.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AIIDE 2007 proceedings</title>
		<link>http://www.intelligent-artifice.com/2007/06/aiide_2007_proc.html</link>
		<comments>http://www.intelligent-artifice.com/2007/06/aiide_2007_proc.html#comments</comments>
		<pubDate>Wed, 06 Jun 2007 16:40:47 +0000</pubDate>
		<dc:creator>Jurie</dc:creator>
				<category><![CDATA[Game Design]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://intelligent-artifice.dreamhosters.com/2007/06/06/aiide-2007-proceedings/</guid>
		<description><![CDATA[As someone with a background in technology and game design, AI programming excites me like few other subjects, and it is a continuous source of surprise and frustration to me that I have done so little of it. Somehow, by the time gaming hardware was capable of serious AI I was already on my way [...]]]></description>
				<content:encoded><![CDATA[<p>As someone with a background in technology and game design, AI programming excites me like few other subjects, and it is a continuous source of surprise and frustration to me that I have done so little of it. Somehow, by the time gaming hardware was capable of serious AI I was already on my way to becoming a producer.</p>
<p>Nevertheless I get an itchy feeling in my fingers when I read about the proceedings of the Artificial Intelligence and Interactive Digital Entertainment Conference, which starts today in Stanford, California, in <a href="http://aigamedev.com/coverage/aiide-2007-papers" target="_blank">this blog post on AiGameDev</a>.</p>
<p>Interactive storytelling using player modelling? Player-specific stories via automatically generated events? Dynamic generation of dilemma-based interactive narratives? Maybe I should try those polyphasic sleep techniques so I can get more done each day.</p>
<p>(Thanks, Alex!)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.intelligent-artifice.com/2007/06/aiide_2007_proc.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>LOLCODE</title>
		<link>http://www.intelligent-artifice.com/2007/05/lolcode.html</link>
		<comments>http://www.intelligent-artifice.com/2007/05/lolcode.html#comments</comments>
		<pubDate>Wed, 30 May 2007 07:31:54 +0000</pubDate>
		<dc:creator>Jurie</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://intelligent-artifice.dreamhosters.com/2007/05/30/lolcode/</guid>
		<description><![CDATA[LOLCODE. Yes. Programming in kitten pidgin, like so: HAI CAN HAS STDIO? I HAS A VAR IM IN YR LOOP &#160;&#160;&#160;&#160;&#160;&#160;&#160;UP VAR!!1 &#160;&#160;&#160;&#160;&#160;&#160;&#160;VISIBLE VAR &#160;&#160;&#160;&#160;&#160;&#160;&#160;IZ VAR BIGGER THAN 10? KTHXBYE IM OUTTA YR LOOP KTHXBYE Call me easily amused, but I love it. I HAS A VAR, lol. A compiler can&#8217;t be far behind. Bonus [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://lolcode.com/" target="_blank">LOLCODE</a>. Yes. Programming in <a href="http://www.intelligent-artifice.com/2007/04/kitty_pidgin.html" target="_blank">kitten pidgin</a>, like so:</p>
<blockquote><p>HAI<br />
CAN HAS STDIO?<br />
I HAS A VAR<br />
IM IN YR LOOP<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UP VAR!!1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VISIBLE VAR<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IZ VAR BIGGER THAN 10? KTHXBYE<br />
IM OUTTA YR LOOP<br />
KTHXBYE</p></blockquote>
<p>Call me easily amused, but I love it. I HAS A VAR, lol.</p>
<p>A compiler can&#8217;t be far behind. Bonus points if it works with Microsoft&#8217;s CLR or DLR.</p>
<p>(Via <a href="http://boingboing.net" target="_blank">Boing Boing</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.intelligent-artifice.com/2007/05/lolcode.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Making sense</title>
		<link>http://www.intelligent-artifice.com/2003/03/making_sense.html</link>
		<comments>http://www.intelligent-artifice.com/2003/03/making_sense.html#comments</comments>
		<pubDate>Wed, 26 Mar 2003 08:35:35 +0000</pubDate>
		<dc:creator>Jurie</dc:creator>
				<category><![CDATA[Game Design]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://intelligent-artifice.dreamhosters.com/2003/03/26/making-sense/</guid>
		<description><![CDATA[Gamasutra has an article up written by Tom Leonard, accompanying his talk at this year&#8217;s GDC. It&#8217;s called &#8220;Building an AI Sensory System: Examining The Design of Thief: The Dark Project&#8221;. I recommend it, it&#8217;s good. It goes into some of the software / game design aspects of AI sensory systems.]]></description>
				<content:encoded><![CDATA[<p>Gamasutra has <a href="http://www.gamasutra.com/gdc2003/features/20030307/leonard_01.htm" target="_Blank">an article</a> up written by Tom Leonard, accompanying his talk at this year&#8217;s GDC. It&#8217;s called &#8220;Building an AI Sensory System: Examining The Design of Thief: The Dark Project&#8221;. I recommend it, it&#8217;s good. It goes into some of the software / game design aspects of AI sensory systems.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.intelligent-artifice.com/2003/03/making_sense.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Article on independent game development</title>
		<link>http://www.intelligent-artifice.com/2003/02/independent_gam.html</link>
		<comments>http://www.intelligent-artifice.com/2003/02/independent_gam.html#comments</comments>
		<pubDate>Sun, 23 Feb 2003 18:38:29 +0000</pubDate>
		<dc:creator>Jurie</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Indie]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://intelligent-artifice.dreamhosters.com/2003/02/23/independent-game-development/</guid>
		<description><![CDATA[O&#8217;Reilly&#8217;s ONLamp.com has an article on independent game development. It discusses Garage Games, the Torque engine, the Independent Game Developers Conference, open source middleware, the independent game business strategy, and scripting languages.]]></description>
				<content:encoded><![CDATA[<p>O&#8217;Reilly&#8217;s ONLamp.com has <a href="http://www.onlamp.com/pub/a/onlamp/2002/12/23/indiegames.html" target="_Blank">an article on independent game development</a>. It discusses Garage Games, the Torque engine, the Independent Game Developers Conference, open source middleware, the independent game business strategy, and scripting languages.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.intelligent-artifice.com/2003/02/independent_gam.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Battle of Helm&#8217;s Deep: game technology</title>
		<link>http://www.intelligent-artifice.com/2002/12/battle_of_helms.html</link>
		<comments>http://www.intelligent-artifice.com/2002/12/battle_of_helms.html#comments</comments>
		<pubDate>Fri, 20 Dec 2002 06:41:12 +0000</pubDate>
		<dc:creator>Jurie</dc:creator>
				<category><![CDATA[Game Design]]></category>
		<category><![CDATA[Other Media]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://intelligent-artifice.dreamhosters.com/2002/12/19/battle-of-helms-deep-game-technology/</guid>
		<description><![CDATA[I have recently been reading about Massive, the technology used to create the climactic Battle of Helm&#8217;s Deep segment in Lord of the Rings: The Two Towers, and I was struck by the similarity with game technology. Massive, which stands for Multiple Agent Simulation System In Virtual Environment, was developed by Stephen Regelous for the [...]]]></description>
				<content:encoded><![CDATA[<p>I have recently been reading about Massive, the technology used to create the climactic Battle of Helm&#8217;s Deep segment in Lord of the Rings: The Two Towers, and I was struck by the similarity with game technology.</p>
<p>Massive, which stands for Multiple Agent Simulation System In Virtual Environment, was developed by Stephen Regelous for the Lord of the Rings movie trilogy. It is now available (more or less) as an independent product.</p>
<p>Rather than simulating crowds as simple particles &#8211; the state of the art until now &#8211; Massive uses a relatively sophisticated AI model to determine the actions of each individual crowd member, and then selects and blends motion-captured animations to display these actions. It also simulates both melee and ranged combat and movement on non-boring terrain, among other things.</p>
<p>The parallels with game technology are obvious: games have done, or tried to do, similar things for many years. However, that does not mean Massive is inferior to game technology. My impression is that it is superior to the AI in many games, although of course it does not have to perform in real-time, nor does it have to deal with irritations such as interactivity, fun, and 18 month development cycles.</p>
<p>One implication of this technology may be more interaction between animation software developers and entertainment software developers, in terms of people, know-how and actual technology. However, I don&#8217;t think there is a general consensus on how to effectively use this kind of technology in games, although Take Two&#8217;s State of Emergency and Electronic Arts&#8217; Lord of the Rings: The Two Towers give some indication of what can be done.</p>
<p>And yes, there are now three entertainment-related software development companies called Massive-something-or-other.</p>
<p>Links:<br />
<a href="http://www.popsci.com/popsci/science/article/0,12543,390918-1,00.html" target="_Blank">An article in Popular Science.</a><br />
<a href="http://www.heise.de/ct/02/26/034/" target="_Blank">An article in c&#8217;t (in German).</a><br />
<a href="http://www.wired.com/news/digiwood/0,1412,56778,00.html" target="_Blank">An article on Wired News.</a><br />
<a href="http://www.massivesoftware.com/" target="_Blank">The official homepage of Massive Software</a>, containing links to other material.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.intelligent-artifice.com/2002/12/battle_of_helms.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
