<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom">
<title>Catnap Games Blog</title>
<subtitle>Indie game development blog.</subtitle>
<link rel="alternate" type="text/html" href="http://www.catnapgames.com" />
<link rel="self" type="application/atom+xml" href="http://www.catnapgames.com/blog-feed.xml" />
<id>http://www.catnapgames.com/blog-feed.xml</id>

<updated>2012-03-02T20:00:00Z</updated>
<rights>Copyright © 2011, Tomas Andrle</rights>

<entry>
	<title>Boost bloat, a brief case study</title>
	<link rel="alternate" type="text/html" href="../../../../http://www.catnapgames.com/blog/2012/03/02/boost-bloat.html" />
	<id>../../../../http://www.catnapgames.com/blog/2012/03/02/boost-bloat.html</id>
	<published>2012-03-02T20:00:00Z</published>
	<updated>2012-03-02T20:36:03Z</updated>
	<author>
		<name>Tomas Andrle</name>
		<uri>http://www.catnapgames.com</uri>
	</author>
	<content type="html" xml:base="http://www.catnapgames.com/" xml:lang="en"><![CDATA[
	<p>Is it OK to use the Boost C++ library for a mobile project where binary size matters? I don't think so.</p>

<p>A few days ago I noticed that some of the object files generated for my C++ iOS project were quite large - over 1 megabyte. They were the ones that used some parts of the Boost library. I decided to get rid of Boost to see if it would have any effect on the size of the resulting binary.</p>

<p>I started replacing various parts of Boost. The new code wasn't any more complicated, the number of lines remained roughly the same and I didn't have to do any major refactoring. From the very beginning, it became very clear that Boost was bloating the binary a LOT.</p>

<p>In the following table, you can see what part of Boost I got rid of and how much it reduced the size of the entire app bundle, compiled for the iOS simulator in Debug mode, with Xcode 4.3 and Clang 3.0. This is what I kept looking at as a rough indicator as I was going along.</p>

<table width="100%" style="font-size: 12px; background-color: #dddddd;">
<tr valign="top"><th></th><th>Before</th><th>After</th></tr>
<tr valign="top"><td>Got rid of about 40 calls to boost::format, replaced with snprintf</td><td>	10.2 MB</td><td>9.7 MB</td></tr>
<tr valign="top"><td>String utilities - tokenizer used in three places, string trim twice, replaced with strtok</td><td>	9.7 MB</td><td>9.5 MB</td></tr>
<tr valign="top"><td>Removed a few of the lexical_casts used throughout the code</td><td>	9.5 MB</td><td>9.4 MB</td></tr>
<tr valign="top"><td>Removed 2 out of 5 cases where property_tree was used to load some xml</td><td>9.4 MB</td><td>9.2 MB</td></tr>
<tr valign="top"><td>Removed use of boost::random</td><td colspan="2">no significant change</td></tr>
<tr valign="top"><td>Removed use of boost::signals2 (replaced with Sarah Thompson's SigSlot)</td><td>	9.2 MB</td><td>5.9 MB</td></tr>
<tr valign="top"><td>Removed remaining 3 uses of property_tree xml loading (replaced with rapidxml)</td><td>	5.9 MB</td><td>5.3 MB</td></tr>
</table>

<p>Nice. And what about standalone optimized ARM binaries?</p>

<table width="100%" style="font-size: 12px; background-color: #dddddd;">
<tr><td>Optimized ARM binary with Boost</td><td>1.2 MB</td></tr>
<tr><td>Optimized ARM binary without Boost</td><td>392 KB</td></tr>
</table>

<p><img class="imgfull" alt="" src="../../../../media/images/withboost.jpg"/><br/><i>With Boost</i></p>
<p><img class="imgfull" alt="" src="../../../../media/images/withoutboost.jpg"/><br/><i>Without Boost</i></p>

<p>Compilation time has improved significantly as well. My rough estimate is that a full build is now 6x faster (Yes!!! Six times faster!!! Nine exclamation marks!!!)
I <i>was</i> using precompiled headers for the entire time.</p>

<p>So that's that.</p>

<p><img class="imgfull" alt="" src="../../../../media/images/withboost.jpg"/><br/><i>With Boost</i></p>
<p><img class="imgfull" alt="" src="../../../../media/images/withoutboost.jpg"/><br/><i>Without Boost</i></p>
<p><img class="imgfull" alt="" src="../../../../media/images/withboost.jpg"/><br/><i>With Boost</i></p>
<p><img class="imgfull" alt="" src="../../../../media/images/withoutboost.jpg"/><br/><i>Without Boost</i></p>	]]></content>
</entry>
<entry>
	<title>Mac command line trick of the month</title>
	<link rel="alternate" type="text/html" href="../../../../http://www.catnapgames.com/blog/2012/01/18/mac-command-line-trick-of-the-month.html" />
	<id>../../../../http://www.catnapgames.com/blog/2012/01/18/mac-command-line-trick-of-the-month.html</id>
	<published>2012-01-18T20:00:00Z</published>
	<updated>2012-01-18T20:36:03Z</updated>
	<author>
		<name>Tomas Andrle</name>
		<uri>http://www.catnapgames.com</uri>
	</author>
	<content type="html" xml:base="http://www.catnapgames.com/" xml:lang="en"><![CDATA[
	<p>Sort the contents of your clipboard alphabetically and remove duplicates.</p>
<pre>pbpaste | sort | uniq | pbcopy</pre>	]]></content>
</entry>
<entry>
	<title>GitHub</title>
	<link rel="alternate" type="text/html" href="../../../../http://www.catnapgames.com/blog/2011/12/20/github.html" />
	<id>../../../../http://www.catnapgames.com/blog/2011/12/20/github.html</id>
	<published>2011-12-20T20:00:00Z</published>
	<updated>2011-12-20T20:36:03Z</updated>
	<author>
		<name>Tomas Andrle</name>
		<uri>http://www.catnapgames.com</uri>
	</author>
	<content type="html" xml:base="http://www.catnapgames.com/" xml:lang="en"><![CDATA[
	<p>Just a quick note - I put a few bits and pieces of source code up on GitHub. There's <a href="https://github.com/catnapgames/WinFoldersJava">WinFoldersJava</a>, a small Java utility to get the location of the user's Documents folder on Windows, <a href="https://github.com/catnapgames/Tempo">Tempo</a>, a static HTML site generator written in PHP and <a href="/code.html">some other stuff</a>.</p>

<p>The source codes for Devastro and Type Raiders are giving me sad looks as I write this. OK, I'll think about it, alright?!</p>	]]></content>
</entry>
<entry>
	<title>Tempo, a PHP static site generator</title>
	<link rel="alternate" type="text/html" href="../../../../http://www.catnapgames.com/blog/2011/10/13/tempo-php-static-site-generator.html" />
	<id>../../../../http://www.catnapgames.com/blog/2011/10/13/tempo-php-static-site-generator.html</id>
	<published>2011-10-13T20:00:00Z</published>
	<updated>2011-10-13T20:36:03Z</updated>
	<author>
		<name>Tomas Andrle</name>
		<uri>http://www.catnapgames.com</uri>
	</author>
	<content type="html" xml:base="http://www.catnapgames.com/" xml:lang="en"><![CDATA[
	<p>I got tired of the constant Tumblr outages and keeping a Django site up and running seemed like too much work, so I made <b>Tempo</b>. Tempo is a small static site generator written in PHP. I use it for this site and will probably use it for some others in the future. It takes</p>

<ul>
<li>A small PHP config file</li>
<li>Text files with a simple header</li>
<li>Source images of any size</li>
<li>PHP-based templates</li>
</ul>

<p>and transforms them into a static html site. It can</p>

<ul>
<li>Resize images to fit the specified page width</li>
<li>Create a blog archive listing page and an Atom feed</li>
<li>Skip &quot;draft&quot; posts (filenames that start with #)</li>
<li>...not much else, really. Isn't that enough?</li>
</ul>

<p>URLs are built like this:<br/>about.txt becomes about.html<br/>blog-2011-10-10-blog post title.txt becomes blog/2011/10/10/blog-post-title.html etc.</p>

<p>For text formatting, just use HTML tags. URLs starting with http:// are automatically converted into links but if you add your own &lt;a href tags, it will try not to mess them up. The script could be extended to accept Markdown, I just didn't think it was necessary for me. To see how you can insert resized images, check out the example site below.</p>

<p><b>UPDATE 12/2011</b> - <a href="https://github.com/catnapgames/Tempo">now on GitHub</a></p>

<p>You can download an example site here: <a href="/media/src/tempo-catnap.zip">tempo-catnap.zip</a></p>

<p>Unzip the example site, edit <b>generate.sh</b> to point to the tempo.php script from GitHub and run it. The generated output should appear in the www.catnapgames.com/output folder. <b>upload.sh</b> is an rsync upload script included to give you an idea how to update the site on a live server; obviously you don't have the ssh keys so it won't work.</p>	]]></content>
</entry>
<entry>
	<title>Simple tilemap collision mask editor</title>
	<link rel="alternate" type="text/html" href="../../../../http://www.catnapgames.com/blog/2011/10/11/simple-tilemap-collision-mask-editor.html" />
	<id>../../../../http://www.catnapgames.com/blog/2011/10/11/simple-tilemap-collision-mask-editor.html</id>
	<published>2011-10-11T20:00:00Z</published>
	<updated>2011-10-11T20:36:03Z</updated>
	<author>
		<name>Tomas Andrle</name>
		<uri>http://www.catnapgames.com</uri>
	</author>
	<content type="html" xml:base="http://www.catnapgames.com/" xml:lang="en"><![CDATA[
	<p>To try out <a href="http://www.pygame.org">pygame</a>, I wrote a simple editor in it. It is nice to see what can be achieved with 100 lines of Python. I wouldn't necessarily choose it to write an entire game, but for a simple interactive tool or a prototype, it is nice.</p>

<p>This simple editor opens a tileset image and lets you edit its collision mask. <b>Use case:</b> you have large graphical tiles but want them to have a more fine grained collision mask. For example, the graphical tiles are 128x128 but you want the collision mask to be 32x32.</p>

<p>Download <a href="/media/src/TilemapMaskEdit.py">TilemapMaskEdit.py</a> (requires Python and pygame)<br/>
Example tileset from Devastro: <a href="/media/src/water01_128.png">water01_128.png</a> (do not use without permission)</p>

<p>To start it, run <b>python TilemapMaskEdit.py water01_128.png</b>. Draw the with left mouse button, erase with right, F2 = save to <tileset image>.txt. This would be water01_128.png.txt in the aforementioned example.</p>

<img class="imgfull" alt="" src="../../../../media/images/TilemapMaskEdit.png"/>

<p>The output file format is very simple.
<pre>
[0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0]
[0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0]
</pre>
</p>
	]]></content>
</entry>
<entry>
	<title>Simple TMX tilemap parser</title>
	<link rel="alternate" type="text/html" href="../../../../http://www.catnapgames.com/blog/2011/10/10/simple-tmx-tilemap-parser.html" />
	<id>../../../../http://www.catnapgames.com/blog/2011/10/10/simple-tmx-tilemap-parser.html</id>
	<published>2011-10-10T20:00:00Z</published>
	<updated>2011-10-10T20:36:03Z</updated>
	<author>
		<name>Tomas Andrle</name>
		<uri>http://www.catnapgames.com</uri>
	</author>
	<content type="html" xml:base="http://www.catnapgames.com/" xml:lang="en"><![CDATA[
	<p>Here's a simple parser for TMX files created using the <a href="http://www.mapeditor.org/">Tiled map editor</a>. It is written in C++ and uses <a href="http://www.boost.org">Boost</a> property_tree and tokenizer.</p>

<p>
<a href="/media/src/NLTmxMap.cpp">NLTmxMap.cpp</a><br/>
<a href="/media/src/NLTmxMap.h">NLTmxMap.h</a>
</p>

<p>Usage:<br/>
<pre>NLTmxMap* map = NLLoadTmxMap( "map1.tmx" );
std::cout << map->width << " x " << map->height << std::endl;
delete map;</pre>

etc.</p>

<p>Limitation: you need to select "CSV" map data encoding in Tiled preferences. I didn't bother with decoding the base64/gzip formats that Tiled also supports.<br/>
<img class="imgfull" alt="" src="../../../../media/images/tiledcsv.png"/>
</p>	]]></content>
</entry>
<entry>
	<title>Java game development</title>
	<link rel="alternate" type="text/html" href="../../../../http://www.catnapgames.com/blog/2011/10/06/java-game-development.html" />
	<id>../../../../http://www.catnapgames.com/blog/2011/10/06/java-game-development.html</id>
	<published>2011-10-06T20:00:00Z</published>
	<updated>2011-10-06T20:36:03Z</updated>
	<author>
		<name>Tomas Andrle</name>
		<uri>http://www.catnapgames.com</uri>
	</author>
	<content type="html" xml:base="http://www.catnapgames.com/" xml:lang="en"><![CDATA[
	<p>This is a reworked version of my two older rants on Java game development. I have decided to go back to C++.</p>

<p>Java has the potential to be a very good platform for game development.</p>

<p>A garbage collected language significantly cuts down development time. The editing and refactoring tools are fantastic. Compilation is lighting fast. Debugging is easy. There are solid OpenGL and OpenAL bindings available. Runtime performance is fine.</p>

<p><b>Java runs on many platforms and it is not at all a bad choice for any of them. But it is not the <i>right</i> choice for any, either.</b></p>

<p>None of the major platforms now comes with a JRE preinstalled. The Windows installer is a mess, the future of the Mac implementation is uncertain. Java is not available to developers on any of the console platforms and the only mobile platform that sort of supports Java programming is Android.</p>

<p>There is no standard way of making a Mac app bundle out of a Java program. There is no standard way of making a Windows installer or executable out of a Java program. You have to do everything by yourself. Write Ant build scripts, make NSIS installers, EXE launchers, Mac app bundles, program icons. There is NO official support for this.</p>

<p>Here is a list of things I think could help:</p>

<ul><li>Get rid of jusched.exe. Use the standard Windows scheduling service like everyone else. Even Google eventually got that right with their update service.</li>
    <li>Get rid of tray icon.</li>
    <li>Allow custom JREs to be bundled with software products. The current license doesn't allow me to go into rt.jar and remove the 90% of stuff my games don't use. A 50MB game is inflated by 100% by the standard Java libraries.</li>
    <li>Add a standard way to make an EXE file / Mac bundle / Linux binary that launches a Java program. CMD/BAT/SH files look amateurish and cannot have icons.</li>
    <li>Make it super easy to create an embedded version of the JRE, cut down to just the stuff the program uses, ready to go. In fact, embedding the VM and the libraries and the Java program itself all in a single EXE file <i>automatically</i> would be the best way to do this.</li>
    <li>Make Swing use native controls for everything. Or switch to SWT and get behind it 100%.</li>
    <li>Get rid of the stupid mascot creature and pretend it never existed.</li>
    <li>Remove Java Sound. It is a bunch of complex unusable interfaces written by architecture astronauts. Nobody uses it.</li>
    <li>Use a sane versioning scheme. Java 6.0.21. Oh, and, you know, stick to it from then on.</li>
    <li>Open up the new self-updating mechanism so that any Java program can use it to update itself from its developer's site.</li>
    <li>Make it easy to retrieve the proper location of users' home directories. Documents, Pictures, App Data, <a href="http://code.google.com/p/winfoldersjava/">stuff like that</a>.</li>
    <li>Merge server and client JVMs into one. It is confusing.</li>
</ul>	]]></content>
</entry>
<entry>
	<title>A curious neighbour</title>
	<link rel="alternate" type="text/html" href="../../../../http://www.catnapgames.com/blog/2011/02/11/curious-neighbour.html" />
	<id>../../../../http://www.catnapgames.com/blog/2011/02/11/curious-neighbour.html</id>
	<published>2011-02-11T20:00:00Z</published>
	<updated>2011-02-11T20:36:03Z</updated>
	<author>
		<name>Tomas Andrle</name>
		<uri>http://www.catnapgames.com</uri>
	</author>
	<content type="html" xml:base="http://www.catnapgames.com/" xml:lang="en"><![CDATA[
	<div><p>I got a little curious to see what libraries other indie games were using. So I opened my Steam folder and took a quick look.</p>
<ul><li><strong>Osmos </strong>uses OpenAL, FreeType, libvorbis, libogg, libcurl</li>
<li><strong>Super Meat Boy</strong> seems to be using its own &#8220;Tommunism Engine&#8221;</li>
<li><strong>World of Goo</strong> uses ODE, SDL, parts of the PopCap framework, TinyXML, irrKlang, libcurl</li>
<li><strong>Machinarium </strong>is a Flash game. Uses funny filenames for the data, by the way.</li>
<li><strong>Aquaria </strong>uses ZLib, SDL, libvorbis, libogg, Lua, FreeType, FMod and more</li>
<li><strong>Braid</strong> seems to be using no 3rd party libraries beyond DirectX</li>
<li><strong>Revenge of the Titans</strong> uses LWJGL and Java</li>
</ul>
<p>Some more findings:</p>
<ul><li><strong>Torchlight</strong> uses Ogre3D and CEGUI</li>
<li><strong>Minecraft</strong> uses LWJGL and Java</li>
<li><strong>Family Farm</strong> uses <span>Boost (serialization, threads), TinyXML, OgreMax, ParticleUniverse, cURL, Google Breakpad and wyUpdate for updating the Windows version</span></li>
</ul></div>	]]></content>
</entry>
<entry>
	<title>Top 7 articles about keyboards and touch typing</title>
	<link rel="alternate" type="text/html" href="../../../../http://www.catnapgames.com/blog/2010/10/23/top-7-articles-about-keyboards-and-touch-typing.html" />
	<id>../../../../http://www.catnapgames.com/blog/2010/10/23/top-7-articles-about-keyboards-and-touch-typing.html</id>
	<published>2010-10-23T20:00:00Z</published>
	<updated>2010-10-23T20:36:03Z</updated>
	<author>
		<name>Tomas Andrle</name>
		<uri>http://www.catnapgames.com</uri>
	</author>
	<content type="html" xml:base="http://www.catnapgames.com/" xml:lang="en"><![CDATA[
	<ol><li><a href="http://steve-yegge.blogspot.com/2008/09/programmings-dirtiest-little-secret.html">Programming&#8217;s dirtiest little secret</a> by Steve Yegge</li>
<li><a href="http://www.codinghorror.com/blog/2008/11/we-are-typists-first-programmers-second.html">We are typists first, programmers second</a> by Jeff Atwood</li>
<li><a href="http://www.codinghorror.com/blog/2009/02/have-keyboard-will-program.html">Have keyboard, will program</a> by Jeff Atwood</li>
<li><a href="http://boingboing.net/2005/05/30/clean-your-keyboard-.html">Clean your keyboard in the dishwasher</a> at Boing Boing</li>
<li><a href="http://support.apple.com/kb/ht1343">Mac OS X keyboard shortcuts</a> at Apple.com</li>
<li><a href="http://support.microsoft.com/kb/126449">Windows keyboard shortcuts</a> at Microsoft.com</li>
<li><a href="http://computersight.com/hardware/peripherals/10-unusual-and-cool-keyboards-you-might-not-have-seen/">Unusual and cool keyboards</a> at computersight.com</li>
</ol><p>Also don't forget to check out my touch typing practice game called <a href="http://www.typeraiders.com">Type Raiders</a>.</p>	]]></content>
</entry>
<entry>
	<title>What is touch typing?</title>
	<link rel="alternate" type="text/html" href="../../../../http://www.catnapgames.com/blog/2010/10/19/what-is-touch-typing.html" />
	<id>../../../../http://www.catnapgames.com/blog/2010/10/19/what-is-touch-typing.html</id>
	<published>2010-10-19T20:00:00Z</published>
	<updated>2010-10-19T20:36:03Z</updated>
	<author>
		<name>Tomas Andrle</name>
		<uri>http://www.catnapgames.com</uri>
	</author>
	<content type="html" xml:base="http://www.catnapgames.com/" xml:lang="en"><![CDATA[
	<p>My definition: using the keyboard without looking at the keys and using all or most of your fingers.</p>
<p>Another one: any kind of typing that is fast enough.</p>
<p>Official (boring) definition: <a href="http://en.wikipedia.org/wiki/Touch_typing">see Wikipedia</a>.</p>
<p><strong>Why learn touch typing?<br/> </strong></p>
<ol><li><strong>Save your eyes</strong><br/><br/>Looking at the keyboard and back at the screen all the time puts your eyes under enormous stress. They need to focus to different distances and often adjust for dark and bright areas. <strong>Touch typing will allow you to keep looking at screen at all times and relieve your eyes.</strong> The same goes for your neck.<br/><br/> </li>
<li><strong>Save your time</strong><br/><br/>One might think that slow typing is &#8220;actually a good thing&#8221; because you have more time to think about whavever you are writing. This is nonsense. If you look at the keyboard, you are wasting time. Your brain has to switch from &#8220;creativity mode&#8221; into &#8220;button search mode&#8221;. Even if it&#8217;s only for a fraction of a second, multiply that by a thousand and the wasted time quickly adds up.<br/><br/><strong>With touch typing, you teach your fingers to find the keys automatically, without having to call your brain and eyes for help. Muscle memory.</strong><br/><br/><br/></li>
<li><strong>Type like a boss. Impress your friends. Boost your ego. Etc.</strong><br/><br/>If those reasons get you going, I don&#8217;t see a reason to stop you. You are still going to save your eyes and your time, whether you want to or not.</li>
</ol><p><strong><br/>How can I learn to touch type?</strong></p>
<p>The same way you learned to walk or ride a bike. Practice.</p>
<p>There are dozens of very sophisticated-looking programs that will purportedly teach you the perfect touch typing methods. You can try some of those. I have. And I decided to make my own because they all sucked [1].</p>
<p>I don&#8217;t believe in perfect methods. You <em>can</em> develop your own style that suits you. You <em>can</em> use only 6 fingers instead of 10 if you want. You can place your hands on the keyboard <em>any way you want</em>. <strong>The ultimate goal is to type without conscious effort and at decent speed. That is all.<br/> </strong></p>
<p><strong>But what if it slows me down?</strong></p>
<p><strong>At first, it will.</strong> Once you stop looking at the keyboard, you will feel a little lost. Like trying to walk around with your eyes closed. You will make more mistakes. You will need to stop to think about the keyboard layout. <strong>This is normal. Don&#8217;t worry.</strong></p>
<p>Remember to keep your eyes off the keyboard, be patient and practice. That&#8217;s all it takes.</p>
<p><strong><br/>Download a free demo of <a href="http://www.typeraiders.com">Type Raiders</a> and start practicing right now.<br/> </strong></p>
<p><em>[1] </em><em>For example, most of them assume that the only type of text you ever write is plain English. Most of the text I write is technical stuff, filled with special characters. The finger layouts suddenly don&#8217;t work. They don&#8217;t adapt to the fact that using a modern editing program involves cursor movement using the arrow keys, deleting and moving stuff around, using function keys, switching between windows or multiple open documents.</em></p>	]]></content>
</entry>
<entry>
	<title>Type Raiders released</title>
	<link rel="alternate" type="text/html" href="../../../../http://www.catnapgames.com/blog/2010/07/22/type-raiders-released.html" />
	<id>../../../../http://www.catnapgames.com/blog/2010/07/22/type-raiders-released.html</id>
	<published>2010-07-22T20:00:00Z</published>
	<updated>2010-07-22T20:36:03Z</updated>
	<author>
		<name>Tomas Andrle</name>
		<uri>http://www.catnapgames.com</uri>
	</author>
	<content type="html" xml:base="http://www.catnapgames.com/" xml:lang="en"><![CDATA[
	<p>It is my great pleasure to announce that I have just finished and released my new game, Type Raiders. It is a nice little game with gorgeous graphics that makes it really easy and fun to practice touch typing.</p>
<p>Windows and Mac OS X downloads are available <a href="http://www.typeraiders.com/">here</a> and you can also buy it directly from that page.</p>
<p>Screenshots <a href="http://moddb.com/games/type-raiders">here</a>.</p>
<p>If you like it, have some suggestions or if you find bugs, please <a href="mailto:hello@catnapgames.com">email me</a>. Thank you.</p>	]]></content>
</entry>
<entry>
	<title>Java version of the JQuery Easing plugin</title>
	<link rel="alternate" type="text/html" href="../../../../http://www.catnapgames.com/blog/2010/07/13/java-version-of-the-jquery-easing-plugin.html" />
	<id>../../../../http://www.catnapgames.com/blog/2010/07/13/java-version-of-the-jquery-easing-plugin.html</id>
	<published>2010-07-13T20:00:00Z</published>
	<updated>2010-07-13T20:36:03Z</updated>
	<author>
		<name>Tomas Andrle</name>
		<uri>http://www.catnapgames.com</uri>
	</author>
	<content type="html" xml:base="http://www.catnapgames.com/" xml:lang="en"><![CDATA[
	<p>Here is my Java port of the JQuery Easing plugin: <a href="http://pastebin.com/45kgPbRZ"><a href="http://pastebin.com/45kgPbRZ"><a class="external" href="http://pastebin.com/45kgPbRZ" target="_blank">pastebin.com/45kgPbRZ</a></a></a></p>

<p>See the JQuery Easing plugin website for examples of what this does: <a href="http://gsgd.co.uk/sandbox/jquery/easing/"><a href="http://gsgd.co.uk/sandbox/jquery/easing/"><a class="external" href="http://gsgd.co.uk/sandbox/jquery/easing/" target="_blank">gsgd.co.uk/sandbox/jquery/easing/</a></a></a></p>

<p>I think it is an easy way to make nice looking transitions and animations. Porting it to C/C++ should be easy.</p>	]]></content>
</entry>
<entry>
	<title>Games are art, pt. 2</title>
	<link rel="alternate" type="text/html" href="../../../../http://www.catnapgames.com/blog/2010/04/01/games-are-art-pt-2.html" />
	<id>../../../../http://www.catnapgames.com/blog/2010/04/01/games-are-art-pt-2.html</id>
	<published>2010-04-01T20:00:00Z</published>
	<updated>2010-04-01T20:36:03Z</updated>
	<author>
		<name>Tomas Andrle</name>
		<uri>http://www.catnapgames.com</uri>
	</author>
	<content type="html" xml:base="http://www.catnapgames.com/" xml:lang="en"><![CDATA[
	<p>Something went very wrong with the positioning of windows and doors in buildings. With strangely charming results.</p>

<p><img class="imgfull" alt="" src="../../../../media/images/a_jpg_550x1550_q85.jpg"/><br/><em>Good luck getting home drunk.</em></p>

<p><img class="imgfull" alt="" src="../../../../media/images/b_jpg_550x1550_q85.jpg"/><br/><em>Sharing space-time continuum with my neighbours: no thanks.</em></p>	]]></content>
</entry>
<entry>
	<title>Alien aircraft authoring</title>
	<link rel="alternate" type="text/html" href="../../../../http://www.catnapgames.com/blog/2010/02/06/alien-aircraft-authoring.html" />
	<id>../../../../http://www.catnapgames.com/blog/2010/02/06/alien-aircraft-authoring.html</id>
	<published>2010-02-06T20:00:00Z</published>
	<updated>2010-02-06T20:36:03Z</updated>
	<author>
		<name>Tomas Andrle</name>
		<uri>http://www.catnapgames.com</uri>
	</author>
	<content type="html" xml:base="http://www.catnapgames.com/" xml:lang="en"><![CDATA[
	<p>Made a simple editing tool for creating new saucer animations.</p>

<p>I have a basic body of the saucer produced by the renderer. Then I add some overlay details that move back and forth and make it look like it is rotating. They need to be positioned precisely and each has to have its radius set according to its position on the saucer body.</p>

<p><img class="imgfull" alt="" src="../../../../media/images/saucer_png_550x1550_q85.jpg"/><br/><em>Didn't want to edit this by hand.</em></p>

<p><img class="imgfull" alt="" src="../../../../media/images/sauceredit__png_550x1550_q85.jpg"/><br/><em>So I made this. Clicky quicky tweaky!</em></p>

<p>Now I can take the 12 odd saucer shapes I have rendered and make them airborne in no time. The invasion begins!</p>

<p><em><strong>Note: </strong></em><em>Wonder why there's no saucer in the 2nd picture? Well actually it is there but there is black bar placed over it. I would love to show it to you but I'm bound by the Martian Invasion NDA (Non-disclosure agreement) that states that if I reveal it too early they will come and get me and perform some serious probing on me.</em></p>

<p><em>Luckily the NDA will soon expire.</em></p>	]]></content>
</entry>
<entry>
	<title>Various dishes, esp. saucers</title>
	<link rel="alternate" type="text/html" href="../../../../http://www.catnapgames.com/blog/2010/01/23/various-dishes-esp-saucers.html" />
	<id>../../../../http://www.catnapgames.com/blog/2010/01/23/various-dishes-esp-saucers.html</id>
	<published>2010-01-23T20:00:00Z</published>
	<updated>2010-01-23T20:36:03Z</updated>
	<author>
		<name>Tomas Andrle</name>
		<uri>http://www.catnapgames.com</uri>
	</author>
	<content type="html" xml:base="http://www.catnapgames.com/" xml:lang="en"><![CDATA[
	<p>Adding flying saucers to Type Raiders has proven to be quite difficult. It took several very different approaches before I settled on the right technique.</p>

<p>Making a flying saucer by itself can be quite easy. The basic Devastro saucer, for instance, is actually a photo of a cooking pot.</p>

<p>So first thing I tried was doing the same for Type Raiders. But after a few moments it turned out that a closeup photo of a small object just doesn't match the precisely looking buildings and ground textures. It's completely out of scale.</p>

<p>The next technique I tried was sculpting clay. I was quite optimistic when I was buying the clay, I still had hope when I unpacked it, but I lost it all when I saw the result on screen, floating above the buildings. I need them to look like they come from another world, but not like that, thank you. I guess I'll leave that to <a href="http://www.cletusclay.com/">Anthony</a>, at least for now.</p>

<p>Next experiment - design a set of saucer silhouettes, then fill them in using various textures and scaled down photos of round objects in Photoshop. Again, had pretty high hopes for this but, again, it just didn't work that well. I'd actually give this technique 6 points out of 10, but for such an important element of the game I needed a clear 10.</p>

<p>Here's the sheet with the silhouettes I made:</p>

<p><img class="imgfull" alt="" src="../../../../media/images/saucers01_png_550x1550_q85.jpg"/><br/><em>Guess which one is from Earth vs. Flying Saucers?</em></p>

<p>I still liked those silhouettes though. Given that they were just combinations of basic shapes (as can be seen in the image above), they looked really nice. What could be done with them? Well, how about taking them to the 3rd dimension? Ha! I could take those, convert them into vector shapes, rotate them around the Y axis, set a solid material for the resulting object, pass it through a high quality raytracer and voila - a virtual 3D lathe for extraterrestrial craft!</p>

<p><img class="imgfull" alt="" src="../../../../media/images/stupid3d_png_550x1550_q85.jpg"/><br/><em>No, that's not it. Stupid 3rd dimension, work! Or I squash you back into 2D!!</em></p>

<div><img class="imgfull" alt="" src="../../../../media/images/13_png_550x1550_q85.jpg"/><br/><em>We come in peace. We come in peace. We come in peace.</em></div>

<p>I won't show you the mockup screen I made to see how it looked inside the game, since it still needs some refinement, color calibration, lighting, animation and some widgets mounted on top but trust me - it looks awesome. And I can make new saucers in minutes.</p>

<p>Now if you excuse me - I'm off to watch <a href="http://www.youtube.com/watch?v=YBI-AXLSewE">Mars Attacks!</a> yet again, this time taking snapshots of the saucers to make more silhouettes.</p>	]]></content>
</entry>
</feed><!-- THE END -->
