<?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>Brainfold</title>
	<atom:link href="http://www.brainfold.org/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.brainfold.org/blog</link>
	<description>On Python, game development and everything</description>
	<lastBuildDate>Wed, 17 Mar 2010 22:38:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='www.brainfold.org' port='80' path='/blog/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>More types and results</title>
		<link>http://www.brainfold.org/blog/2010/03/18/more-types-and-results/</link>
		<comments>http://www.brainfold.org/blog/2010/03/18/more-types-and-results/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 22:38:43 +0000</pubDate>
		<dc:creator>Jussi Lepistö</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[pyeigen]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.brainfold.org/blog/?p=221</guid>
		<description><![CDATA[I implemented some new types for PyEigen, including a 4&#215;4 matrix class and benchmarks for it. Same methods as last time, but quite different results.
PyEigen is still fastest by far, which is promising. This time it was about 5-10x faster than cgkit1, which was again the second fastest. You might also notice that vectypes is [...]]]></description>
			<content:encoded><![CDATA[<p>I implemented some new types for PyEigen, including a 4&#215;4 matrix class and benchmarks for it. Same methods as last time, but quite different results.</p>
<div id="attachment_222" class="wp-caption alignnone" style="width: 531px"><a href="http://www.brainfold.org/blog/wp-content/uploads/2010/03/benchmark1.png"><img class="size-full wp-image-222 " title="Linear algebra library 4x4 matrix benchmark" src="http://www.brainfold.org/blog/wp-content/uploads/2010/03/benchmark1.png" alt="Benchmark results" width="521" height="464" /></a><p class="wp-caption-text">Benchmark results</p></div>
<p>PyEigen is still fastest by far, which is promising. This time it was about 5-10x faster than cgkit1, which was again the second fastest. You might also notice that vectypes is missing. For this test, it was so slow that I had to leave it out; other results would have been invisible if I had fitted the vectypes results in the graph. In the worst case, it was over <strong>1000x</strong> slower than PyEigen! Euclid is missing addition and scalar multiplication scores since it doesn&#8217;t support those operations. NumPy performed much better. There has to be a faster way to do vector cross product in NumPy, since matrix multiplication was much faster than cross product. But it&#8217;s not a big deal anymore since PyEiglet is so much faster than anything else. <img src='http://www.brainfold.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.brainfold.org/blog/2010/03/18/more-types-and-results/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Surprising results</title>
		<link>http://www.brainfold.org/blog/2010/03/17/surprising-results/</link>
		<comments>http://www.brainfold.org/blog/2010/03/17/surprising-results/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 23:13:50 +0000</pubDate>
		<dc:creator>Jussi Lepistö</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[pyeigen]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.brainfold.org/blog/?p=213</guid>
		<description><![CDATA[I did some preliminary benchmarking today and got very interesting results. I have only wrapped a 3D vector class so far, so I tested a couple of operations (add, multiply, dot &#38; cross product) against the libs I mentioned in the previous post: NumPy, euclid, vectypes and cgkit. For cgkit, I tested both 1.2.0 and [...]]]></description>
			<content:encoded><![CDATA[<p>I did some preliminary benchmarking today and got very interesting results. I have only wrapped a 3D vector class so far, so I tested a couple of operations (add, multiply, dot &amp; cross product) against the libs I mentioned in the previous post: <a href="http://numpy.scipy.org/">NumPy</a>, <a href="http://www.partiallydisassembled.net/euclid.html">euclid</a>, <a href="http://code.google.com/p/vectypes/">vectypes</a> and <a href="http://cgkit.sourceforge.net/">cgkit</a>. For cgkit, I tested both 1.2.0 and 2.0 alpha 9. All other libs were the latest version. I tested using the Python timeit module with 1,000,000 calls and 3 repeats per test and took the lowest number. Repeated test results generally differed only by milliseconds.</p>
<div id="attachment_214" class="wp-caption alignnone" style="width: 601px"><a href="http://www.brainfold.org/blog/wp-content/uploads/2010/03/benchmark.png"><img class="size-full wp-image-214 " title="Linear algebra library benchmark" src="http://www.brainfold.org/blog/wp-content/uploads/2010/03/benchmark.png" alt="Benchmark results" width="591" height="472" /></a><p class="wp-caption-text">Benchmark results</p></div>
<p>The immediately obvious surprise is the abysmal performance of NumPy especially in cross products. I don&#8217;t think NumPy optimizes for fixed-size arrays; I would have been better off with the pure-Python euclid and vectypes modules.</p>
<p>The other surprises were euclid vs vectypes and cgkit1 vs cgkit2. Euclid and vectypes are both by Alex Holkner of <a href="http://pyglet.org/">Pyglet</a> fame. In both cases, the newer library (vectypes and cgkit2) was also slower.</p>
<p>Of course the most positive surprise for me was the performance of PyEigen. It&#8217;s only a trivial wrapping, but was about 2-8x faster than the best alternative, cgkit1. I&#8217;m very happy with the results and definitely going to continue development of the library / wrapper. <img src='http://www.brainfold.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Update:</strong> <a href="http://bazaar.launchpad.net/~knarkles/pyeigen/trunk/annotate/head%3A/test/benchmark/vector3.py">Here&#8217;s</a> the benchmark code. Also an interesting detail: PyEigen is <strong>136x</strong> faster than NumPy with cross products.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brainfold.org/blog/2010/03/17/surprising-results/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyEigen</title>
		<link>http://www.brainfold.org/blog/2010/03/16/pyeigen/</link>
		<comments>http://www.brainfold.org/blog/2010/03/16/pyeigen/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 08:06:29 +0000</pubDate>
		<dc:creator>Jussi Lepistö</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[boost.python]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[cython]]></category>
		<category><![CDATA[linear algebra]]></category>
		<category><![CDATA[numpy]]></category>
		<category><![CDATA[pyeigen]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[swig]]></category>

		<guid isPermaLink="false">http://www.brainfold.org/blog/?p=203</guid>
		<description><![CDATA[I have a new project called PyEigen, a wrapper for the C++ linear algebra library Eigen. I just submitted the first batch of code and progress is good, at least so far.   I&#8217;m hoping for an initial release within a month or so.
The whole thing started when I profiled my shooter project and [...]]]></description>
			<content:encoded><![CDATA[<p>I have a new project called <a href="http://launchpad.net/pyeigen">PyEigen</a>, a wrapper for the C++ linear algebra library <a href="http://eigen.tuxfamily.org/">Eigen</a>. I just submitted the first batch of code and progress is good, at least so far. <img src='http://www.brainfold.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I&#8217;m hoping for an initial release within a month or so.</p>
<p>The whole thing started when I profiled my shooter project and found that matrix calculations take up a huge amount of time. Apparently <a href="http://numpy.scipy.org/">NumPy</a> isn&#8217;t really fast enough for 3D games, and I couldn&#8217;t find any replacements. While otherwise looking good, <a href="http://www.partiallydisassembled.net/euclid.html">euclid</a> and <a href="http://code.google.com/p/vectypes/">vectypes</a> are pure Python so they aren&#8217;t going to make performance any better. <a href="http://cgkit.sourceforge.net/">cgkit </a>is C++ with a Python wrapper so looking better already, but&#8230; it&#8217;s using <a href="http://www.boost.org/doc/libs/1_42_0/libs/python/doc/index.html">Boost.Python</a>, which <a href="http://chrischou.wordpress.com/2010/02/28/simple-benchmark-between-cython-and-boost-python/">apparently isn&#8217;t very fast</a>. Also, it&#8217;s lacking SSE instrumentation and other optimizations included in Eigen. So I decided to wrap Eigen.</p>
<p>As I already found out, Boost.Python is slow and looked too complex for such a simple library anyway. I tried <a href="http://cython.org/">Cython</a> next, but its C++ support is (still) very limited and the lack of support for C++ references destroyed any hope of wrapping Eigen, which relies heavily on them. My final option before resorting to manual wrapping using the Python C API was <a href="http://swig.org/">SWIG</a>, but I had problems getting even a simple wrapper to compile. Besides, I don&#8217;t really like how SWIG generates function wrappers and a separate Python module that calls those wrappers instead of generating a Python C module directly.</p>
<p>So I was left with only the final option: Python C API. I feared it at first because I&#8217;ve never worked with it and it seemed really complex. It <em>is</em> complex, but not nearly as bad as I though, especially as Eigen has such a simple API. For <a href="http://bulletphysics.org/">Bullet</a>, I&#8217;m sure I&#8217;ll use Cython or some other wrapper generator, but for Eigen the Python C API is just fine.</p>
<p>Anyway, since there doesn&#8217;t seem to be anything like this out there, I decided to make it an open source project so hopefully other people in the same situation won&#8217;t have to jump through the same hoops as I did. I&#8217;ll post progress reports, releases and especially benchmarks against the other options as soon as I have them.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">http://launchpad.net/pyeigenI h</div>
]]></content:encoded>
			<wfw:commentRss>http://www.brainfold.org/blog/2010/03/16/pyeigen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stealth prototyping</title>
		<link>http://www.brainfold.org/blog/2009/11/29/stealth-prototyping/</link>
		<comments>http://www.brainfold.org/blog/2009/11/29/stealth-prototyping/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 19:57:07 +0000</pubDate>
		<dc:creator>Jussi Lepistö</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[Artillery Brawl]]></category>
		<category><![CDATA[shmup]]></category>

		<guid isPermaLink="false">http://www.brainfold.org/blog/?p=193</guid>
		<description><![CDATA[Yes, I know, I have been quiet on this blog for over half a year now. That doesn&#8217;t mean I&#8217;m dead; quite the opposite, since I have been really busy with Real Life and professional game development.   However, as some of you might have noticed from my Twitter feed, I have been working [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, I know, I have been quiet on this blog for over half a year now. That doesn&#8217;t mean I&#8217;m dead; quite the opposite, since I have been really busy with Real Life and professional game development. <img src='http://www.brainfold.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  However, as some of you might have noticed from my <a href="http://twitter.com/Knarkles">Twitter feed</a>, I have been working on a new game. It started as a vertical-scrolling shoot&#8217;em&#8217;up but has transformed into something else entirely. At the moment I have just a load of ideas and an early prototype, so I don&#8217;t want to write too much about it yet, but more on the project later. And yes, it&#8217;s in Python. <img src='http://www.brainfold.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>As for Artillery Brawl, the code became a mess and destroyed my motivation to continue the project, which is why I started the new game to begin with. I might start Artillery Brawl again based on this new codebase, but for now I&#8217;m working on the shooter.</p>
<p>I hope to write more about the new project and its progress again in the near future, but in the meantime, the best way to follow the project is my <a href="http://twitter.com/Knarkles">Twitter feed</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brainfold.org/blog/2009/11/29/stealth-prototyping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Work!</title>
		<link>http://www.brainfold.org/blog/2009/04/16/work/</link>
		<comments>http://www.brainfold.org/blog/2009/04/16/work/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 11:29:34 +0000</pubDate>
		<dc:creator>Jussi Lepistö</dc:creator>
				<category><![CDATA[Real life]]></category>
		<category><![CDATA[game industry]]></category>

		<guid isPermaLink="false">http://www.brainfold.org/blog/?p=189</guid>
		<description><![CDATA[My latest excuse for not getting anything done on Artillery Brawl or any other projects is that I just landed a job in the game industry! I didn&#8217;t want to announce it on the blog before I got a contract, but today I got one as a programmer for Bugbear Entertainment. It&#8217;s interesting and kind [...]]]></description>
			<content:encoded><![CDATA[<p>My latest excuse for not getting anything done on Artillery Brawl or any other projects is that I just landed a job in the game industry! I didn&#8217;t want to announce it on the blog before I got a contract, but today I got one as a programmer for <a href="http://www.bugbear.fi/">Bugbear Entertainment</a>. It&#8217;s interesting and kind of refreshing to seriously program in C++ for a change.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brainfold.org/blog/2009/04/16/work/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New city, new portfolio</title>
		<link>http://www.brainfold.org/blog/2009/03/14/new-city-new-portfolio/</link>
		<comments>http://www.brainfold.org/blog/2009/03/14/new-city-new-portfolio/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 14:38:56 +0000</pubDate>
		<dc:creator>Jussi Lepistö</dc:creator>
				<category><![CDATA[Real life]]></category>
		<category><![CDATA[portfolio]]></category>

		<guid isPermaLink="false">http://www.brainfold.org/blog/?p=174</guid>
		<description><![CDATA[I have succesfully moved to Helsinki, though the apartment is of course still a mess. While organizing the apartment, I also decided to reorganize my Portfolio page. Please check it out, all kinds of comments are very welcome!
I should be hearing about the job next week.
]]></description>
			<content:encoded><![CDATA[<p>I have succesfully moved to Helsinki, though the apartment is of course still a mess. While organizing the apartment, I also decided to reorganize my <a href="http://www.brainfold.org/blog/portfolio/">Portfolio</a> page. Please check it out, all kinds of comments are very welcome!</p>
<p>I should be hearing about the job next week.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brainfold.org/blog/2009/03/14/new-city-new-portfolio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sampling some C++</title>
		<link>http://www.brainfold.org/blog/2009/03/09/sampling-some-c/</link>
		<comments>http://www.brainfold.org/blog/2009/03/09/sampling-some-c/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 18:31:09 +0000</pubDate>
		<dc:creator>Jussi Lepistö</dc:creator>
				<category><![CDATA[Real life]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[portfolio]]></category>

		<guid isPermaLink="false">http://www.brainfold.org/blog/?p=158</guid>
		<description><![CDATA[Since I have the job interview on Thursday, I decided to brush up my rusty C++ skills and make a quick work sample while at it, as I haven&#8217;t really worked with the language since about 2004. The position I&#8217;m applying for is UI programmer, so I made a simple but relatively flexible &#8220;game style&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Since I have the job interview on Thursday, I decided to brush up my rusty C++ skills and make a quick work sample while at it, as I haven&#8217;t really worked with the language since about 2004. The position I&#8217;m applying for is UI programmer, so I made a simple but relatively flexible &#8220;game style&#8221; menu system. At first, I had to look up lots of things in documentation, but at least I knew what to look for, and overall it went surprisingly smoothly. I spent about two evenings on it, so don&#8217;t expect anything polished.</p>
<p>If you want to check out the demo and some old stuff of mine, see <a href="http://www.brainfold.org/portfolio/">http://www.brainfold.org/portfolio/</a>. I&#8217;m releasing the code in public domain, but check copyright.txt for the font copyright. Apart from the demo, my time has been spent preparing for the move to Helsinki on Wednesday, so again, don&#8217;t expect any real updates for at least a week or two.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brainfold.org/blog/2009/03/09/sampling-some-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moving on</title>
		<link>http://www.brainfold.org/blog/2009/03/04/moving-on/</link>
		<comments>http://www.brainfold.org/blog/2009/03/04/moving-on/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 10:41:59 +0000</pubDate>
		<dc:creator>Jussi Lepistö</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[Real life]]></category>
		<category><![CDATA[Artillery Brawl]]></category>
		<category><![CDATA[board games]]></category>

		<guid isPermaLink="false">http://www.brainfold.org/blog/?p=154</guid>
		<description><![CDATA[I haven&#8217;t updated for a while again. Let&#8217;s get gamedev news out of the way first. I haven&#8217;t worked on Artillery Brawl for a couple of weeks; instead, I have tried to get the card game ready for testing. I made some prototype cards by putting pieces of paper in sleeves that are opaque on [...]]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t updated for a while again. Let&#8217;s get gamedev news out of the way first. I haven&#8217;t worked on Artillery Brawl for a couple of weeks; instead, I have tried to get the <a href="http://www.brainfold.org/blog/2008/10/03/secrets/">card game</a> ready for testing. I made some prototype cards by putting pieces of paper in sleeves that are opaque on one side. This has the advantage that I don&#8217;t have to go through the trouble of making the back sides of the cards look identical, so it&#8217;s much easier to make changes. Unfortunately, while the rules are basically ready for testing, I ran out of card sleeves, and when I bought some more I accidentally bought a different size&#8230; Now I&#8217;ll have to wait until next week to buy some more, sigh.</p>
<p>Anyway, about next week&#8230; I have a job interview at a game company (wish me luck!) and I&#8217;ll be moving back to Helsinki where I used to live four years ago before I moved here to Tampere. I also have a couple of deadlines looming for university courses, so I&#8217;ll be quite busy for the next week or two! At least I already have internet connection at the new apartment, so my connection to civilization won&#8217;t be severed. <img src='http://www.brainfold.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  See you in a couple of weeks!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brainfold.org/blog/2009/03/04/moving-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Good news, bad news</title>
		<link>http://www.brainfold.org/blog/2009/02/13/good-news-bad-news/</link>
		<comments>http://www.brainfold.org/blog/2009/02/13/good-news-bad-news/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 18:07:02 +0000</pubDate>
		<dc:creator>Jussi Lepistö</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[Real life]]></category>
		<category><![CDATA[Artillery Brawl]]></category>
		<category><![CDATA[game industry]]></category>

		<guid isPermaLink="false">http://www.brainfold.org/blog/?p=149</guid>
		<description><![CDATA[The good news is, suddenly I got a whole lot more free time for game development.
The bad news is, I don&#8217;t have a job anymore (yay for the economic situation).
I didn&#8217;t just freeze and panic though; instead, I called a friend at a game company I was applying to for the summer, and told I [...]]]></description>
			<content:encoded><![CDATA[<p>The good news is, suddenly I got a whole lot more free time for game development.</p>
<p>The bad news is, I don&#8217;t have a job anymore (yay for the economic situation).</p>
<p>I didn&#8217;t just freeze and panic though; instead, I called a friend at a game company I was applying to for the summer, and told I might be available for work a bit earlier after all&#8230; I hope to hear more from them next week, so wish me luck!</p>
<p>As for other news, I have been working on Artillery Brawl a lot, though still no particle effects&#8230; I think they might be cursed, since every time I get close to implementing them, I run into problems or some other thing I just have to fix. Anyway, the good thing about this is that the entity system and a lot of the code in general is starting to look really good and reusable. This is how I should have approached building a reusable codebase to begin with; writing a game, then generalizing the solutions that work.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brainfold.org/blog/2009/02/13/good-news-bad-news/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Triggering (explosive) payloads</title>
		<link>http://www.brainfold.org/blog/2009/02/09/triggering-explosive-payloads/</link>
		<comments>http://www.brainfold.org/blog/2009/02/09/triggering-explosive-payloads/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 07:26:45 +0000</pubDate>
		<dc:creator>Jussi Lepistö</dc:creator>
				<category><![CDATA[Game development]]></category>
		<category><![CDATA[Artillery Brawl]]></category>
		<category><![CDATA[entity system]]></category>
		<category><![CDATA[lepton]]></category>
		<category><![CDATA[particles]]></category>
		<category><![CDATA[triggers]]></category>

		<guid isPermaLink="false">http://www.brainfold.org/blog/?p=145</guid>
		<description><![CDATA[As part of my effort to integrate Lepton for particle effects, I have been implementing a system of triggers and payloads to make projectiles more interesting in general. The system is heavily inspired by the similar payload system for my old artillery game, Arty, which I wrote about earlier, but of course redesigned and modernized [...]]]></description>
			<content:encoded><![CDATA[<p>As part of my effort to integrate <a href="http://code.google.com/p/py-lepton/">Lepton</a> for particle effects, I have been implementing a system of triggers and payloads to make projectiles more interesting in general. The system is heavily inspired by the similar payload system for my old artillery game, Arty, which I <a href="http://www.brainfold.org/blog/2007/11/28/memoirs-of-a-game-developer/">wrote about earlier</a>, but of course redesigned and modernized to make it more generic and cleaner. I haven&#8217;t settled on an interface yet, and looks like I&#8217;ll have to make yet more changes to the entity system, but every change is a step closer to perfection, right? Anyway, about triggers and payloads&#8230;</p>
<p>Any number of triggers and payloads can be attached to entities. For now, they will only be used for projectiles (artillery shells), but later they could be used for many other gameplay applications. Triggers can react to collisions, height from ground, proximity to units, or they could activate after a delay. Almost anything is possible, really, but I&#8217;m starting with just collision triggers. Payloads are triggered, well, by triggers; they are the &#8220;meat&#8221; of the projectile system. Again, I&#8217;m starting simple with just kinetic (contact damage based on mass, velocity and an armor piercing multiplier) and explosive (yay, particle effects and shrapnel projectiles) payload, but almost anything would be possible. For example, it would be easy to make a cluster bomb that explodes above ground (height trigger attached to directed explosive payload) into many small bomblets (individual projectiles with contact triggers attached to explosive payloads).</p>
<p>More on the triggers and payloads when I get the system implemented.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.brainfold.org/blog/2009/02/09/triggering-explosive-payloads/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
