<?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>Seapegasus Blog</title>
	<atom:link href="http://seapegasus.org/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://seapegasus.org</link>
	<description>Java 3D games, linguistics, scifi, and... mainframes?!</description>
	<lastBuildDate>Sat, 24 Mar 2012 17:32:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Mass Defect -or- Cover Your Assets!</title>
		<link>http://seapegasus.org/?p=385</link>
		<comments>http://seapegasus.org/?p=385#comments</comments>
		<pubDate>Sat, 24 Mar 2012 17:32:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://seapegasus.org/?p=385</guid>
		<description><![CDATA[This, ladies and gentlemen, is what happens if you don&#8217;t plan your asset file naming ahead. :-&#124; Seriously. Don&#8217;t laugh. :-&#124; The asset pipeline is a very serious topic! ;-P]]></description>
			<content:encoded><![CDATA[<p>This, ladies and gentlemen, is what happens if you don&#8217;t plan your asset file naming ahead. :-|<br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/HFR4socSv_E" frameborder="0" allowfullscreen></iframe><br />
Seriously. Don&#8217;t laugh. :-| The <a href="http://jmonkeyengine.org/wiki/doku.php/jme3:intermediate:multi-media_asset_pipeline">asset pipeline</a> is a very serious topic! ;-P </p>
]]></content:encoded>
			<wfw:commentRss>http://seapegasus.org/?feed=rss2&#038;p=385</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How We Defeated the Evil Permanent Marker</title>
		<link>http://seapegasus.org/?p=374</link>
		<comments>http://seapegasus.org/?p=374#comments</comments>
		<pubDate>Tue, 13 Mar 2012 18:47:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://seapegasus.org/?p=374</guid>
		<description><![CDATA[&#8220;Flow, you newbie&#8230;!&#8221; What? &#8220;Is that permanent marker? What does it mean anyway??&#8221; As every noon, we are sitting in the break room eating take-out. (We call it &#8220;lunch at Google&#8217;s&#8221;, because the room has fancy soft seating and gaudily colored glasswalls. It&#8217;s supposed to be relaxing and inspiring &#8212; or so they say &#8212; [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>&#8220;Flow, you newbie&#8230;!&#8221; </p></blockquote>
<p>What? </p>
<blockquote><p>&#8220;Is that permanent marker? What does it mean anyway??&#8221; </p></blockquote>
<p>As every noon, we are sitting in the break room eating take-out. (We call it &#8220;lunch at Google&#8217;s&#8221;, because the room has fancy soft seating and gaudily colored glasswalls. It&#8217;s supposed to be relaxing and inspiring &#8212; or so they say &#8212; I don&#8217;t know, I don&#8217;t work for Google.) </p>
<p><a href="http://seapegasus.org/wp-content/uploads/seapegasus.org/2012/03/you-newbie.jpg"><img src="http://seapegasus.org/wp-content/uploads/seapegasus.org/2012/03/you-newbie.jpg" alt="scribbles on whiteboard" title="you newbie" width="320" height="180" class="aligncenter" /></a></p>
<p>The junior is still glaring at the  white board. The cryptic exclamation standing above other meaningless scribbles has been there since before I started working here. I always assumed it referred to a hard-to-remember project working title. Nobody remembered who wrote it or why, and nobody had ever managed to erase it. &#8220;You&#8217;d need a spray&#8230; it&#8217;s permanent&#8230;&#8221;, the seniors shrug wearily.</p>
<p>Another colleague on his way out casually adds: </p>
<blockquote><p>&#8220;Or grab a non-permanent marker, write over each word, and then erase it. I do it all the time.&#8221; </p></blockquote>
<p>He leaves us dumbfounded. What did he just say? It almost made sense&#8230; But&#8230; What&#8230;?</p>
<p>With everyone stunned, I walk over to the whiteboard and put the claim to a test. The original scribble is black, my  non-permanent marker is green. I single out a permanently black spot and doodle a big green dot over it. I swipe it with the eraser and &#8212; the dot is gone! What magic is this?! I give another spot the same treatment. He was serious: An average non-permanent marker can erase a permanent marker. :-o </p>
<p>Another colleagues picks himself up and joins me. While he writes green over black words and erases them, we get more and more bemused about how clever we are. OMG! Finally something we can submit to the company innovation project!</p>
<p>One of the QA managers walks by and watches us through the glass door. He smiles and it&#8217;s clear that he appreciates our enthusiasm for what it is &#8212; totally bat shit crazy. I call out to him that, although it may look as if we were re-writing permanent scribbles, the truth is, we were erasing them. </p>
<p>&#8220;Sure&#8221; he says with the same frozen grin on his face, and absconds. </p>
<p>Well, just another normal lunch in the &#8220;Google&#8221; room&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://seapegasus.org/?feed=rss2&#038;p=374</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Phone Book is a Book That Contains a Phone, Right?</title>
		<link>http://seapegasus.org/?p=350</link>
		<comments>http://seapegasus.org/?p=350#comments</comments>
		<pubDate>Sat, 25 Feb 2012 19:59:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Technical Writing]]></category>

		<guid isPermaLink="false">http://seapegasus.org/?p=350</guid>
		<description><![CDATA[Can you remember the first time you used a mobile phone? Did someone show you how to use it or did you figure it out yourself? Here&#8217;s an amusing idea for an idiot-proof smartphone manual: I assume that this manual is an art project and not an existing product. These books would be quite expensive [...]]]></description>
			<content:encoded><![CDATA[<p>Can you remember the first time you used a mobile phone? Did someone show you how to use it or did you figure it out yourself? Here&#8217;s an amusing idea for an idiot-proof smartphone manual:</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/X996NkgYqtk" frameborder="0" allowfullscreen></iframe></p>
<p>I assume that this manual is an art project and not an existing product. These books would be quite expensive to produce, especially if they are used only once. The target group is &#8220;total newbs&#8221;, while the majority doesn&#8217;t really need instructions this detailed.</p>
<p>I rather take this as a lesson of good usability and creativity. Most people laugh/grin when they watch the video the first time (I heard a few giggles in the office) &#8212; it strikes a chord. Even if you don&#8217;t actually want your next phone to be packaged like that, you might think, &#8220;If that had been my first phone, it would have been <em>fun</em> to get started&#8230;&#8221; </p>
<p>It&#8217;s a good example of what good self-paced teaching methods could look like. Something similar to this book would (made out of a sturdier material) also work embedded in a workbench, where it shows you how to, dunno, build a radio, or other devices. It doesn&#8217;t even have to be a book. Picture a music player with an intro mode, where it plays its own intructions and blinks the buttons to be pressed; or a model of a car engine with labels and arrows that pop up, and guide you through the concepts? A sewing machine with a special piece of &#8220;cloth&#8221; that has instructions on it where to place your hands and where to sew? </p>
<p>A hypothetical training based on these kinds of interactive teaching materials would clearly be targeted at self-study students. The students would probably not buy them &#8212; the catch is that these types of materials need to be &#8220;reset&#8221; to be used again. In the example with the phone, the SIM card and the battery need to be taken out and placed back into their compartments. The example with the sewing machine cloth would be harder to reset though, did we already invent the selfdestructing thread? :-D </p>
<p>The materials could be made available at libraries or schools, and students could book timeslots to use them in the afternoon. Just like they put returned books back, the school or library staff resets the materials for the next visitor. I don&#8217;t know how much overhead this would incur for the staff, and whether repeated use would wear the materials out quickly. But for quick and easy how to things that are not obvious, and cannot be truely taught hands-off (by text or a video), such teaching implements would be an cool option&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://seapegasus.org/?feed=rss2&#038;p=350</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mastering 3079 in Less Than 3079 Tries</title>
		<link>http://seapegasus.org/?p=348</link>
		<comments>http://seapegasus.org/?p=348#comments</comments>
		<pubDate>Sat, 25 Feb 2012 15:47:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[jMonkeyEngine]]></category>

		<guid isPermaLink="false">http://seapegasus.org/?p=348</guid>
		<description><![CDATA[I recently downloaded the demo of a jMonkeyEngine based game called 3079. On the one hand, this open-world game looks &#8220;primitive&#8221; and minimalistic (similar to Minecraft). On the other hand, oh my, this is totally &#8220;playable&#8221;, it draws you in. If you&#8217;re curious, also read Interview with the developer of 3079. Very nice starting sequence [...]]]></description>
			<content:encoded><![CDATA[<p>I recently downloaded the demo of a jMonkeyEngine based game called <a href="http://sites.google.com/site/3079game/">3079</a>. On the one hand, this open-world game looks &#8220;primitive&#8221; and minimalistic (similar to Minecraft). On the other hand, oh my, this is totally &#8220;playable&#8221;, it draws you in.<br />
<iframe width="420" height="315" src="http://www.youtube.com/embed/i49Q3t4zGss" frameborder="0" allowfullscreen></iframe><br />
If you&#8217;re curious, also read <a href="http://jmonkeyengine.org/2012/02/05/interview-with-jeremy-phr00t-developer-of-3079/">Interview with the developer of 3079</a>.<br />
Very nice starting sequence where your character parachutes out of the sky, falls through clouds past floating cloud-cuckoo islands, watches some red monsters from afar&#8230; or not so far&#8230; Soon you lose contact with your base, but you receive one last message: Find out the reason for the &#8220;eternal war&#8221; that has enslaved this planet. On the ground, an angular world, a few buildings, trees, lakes. Simple boxshaped NPCs bop around, seemingly occupied by constant battle. Typically, this is the moment when some of them turn against you, and you better run for cover. Find a building that is neutral towards you, buy equipment, and receive missions.</p>
<p>This is the good part, the bad part is: To get this far, I had to restart the demo four times. I simply kept getting killed before I could fathom what was going on: &#8220;Am I aiming wrong? Is this thing I&#8217;m holding really a weapon, or am I shaking my fist? Am I wearing any armour at all? Am I supposed to be shooting these big guys, or am I pointlessly irating high-level NPCs? Did I prompt the attack, or does every NPC randomly attack? What&#8211; *BAM* Argh&#8230;&#8221;</p>
<p>After the fourth time or so, I finally survived long enough to reach a merchant and a quest master. I had learned how to land savely on the ground without breaking the character&#8217;s neck and losing all newbie equipment. I could tell mosts friends from foes, and distinguish which faction owns which building (so I could stay close to the one faction that was neutral towards me). I learned how to interact with friendly NPCs, how to use elevators, and I understood that, somewhere, there is a lot of equipment worth trying out. However, the demo&#8217;s time limit always ran out before I even remotely started to solve the mission (so I can&#8217;t tell you anything more).</p>
<p>Under different circumstances, I&#8217;d be pretty annoyed by this first impression. I left the author a bit of feedback and asked whether he could lower the bar a bit. I think the single most helpful thing for this type of game would be something like an embedded implicit training level. </p>
<p>Optimally, a training level is smoothly integrated into the game and the player hardly notices it is there. Having a training level basically means that the game does not bring out the big guns from the first second on. It gives the player a limited save environment to acclimatize and learn the user interface. </p>
<p>In the case of 3079, a training level could have been introduced on one of the cloud-cuckoo islands. An experienced player knows how to steer clear off the newbie island and how to go on parachuting straight to the surface &#8212; he should be allowed to just skip it. A newbie would be curious about the floating island under his feet, he doesn&#8217;t know yet there is a planet surface. The game pops up tooltips that advise him which keys to press to land smoothly, how to walk along a trail on the island, how to pick up and load a newbie weapon, how to aim and shoot at a non-lethal target, how to open a door, how to use a grapling hook (&#8220;I HAVE A GRAPLING HOOK?!&#8221;), etc. If the player fails at any task on the floating island, he can try again without penalty. At the end of the floating island, the tooltip advises the player how to continue his journey to the surface. </p>
<p>Now the newbie player is prepared for the landing, if he crashes now, he thinks &#8220;I know how to avoid that&#8221;. If the player gets shot at, he can now draw more confident conclusions: &#8220;I know I have a weapon, and I did shoot back, but the NPC is not down. I assume the NPC is too strong and I must use a different strategy.&#8221; Although the same events happen, the player is less frustrated by them. He no longer doubts his skills and is not slowed down by newbie questions (&#8220;How do I tell whether I&#8217;m holding a weapon??!&#8221;) </p>
<p>In other words: If your game must use more inputs than Myst, consider adding a short training &#8220;level&#8221;. </p>
<p>Myst, for the record, handled only one input: &#8220;Left click&#8221; covered everything from walking, to opening doors, pulling levers, and pressing buttons&#8230; Beat that!</p>
]]></content:encoded>
			<wfw:commentRss>http://seapegasus.org/?feed=rss2&#038;p=348</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Game Dev Best Practices, Straight From the Voxel&#8217;s Mouth</title>
		<link>http://seapegasus.org/?p=343</link>
		<comments>http://seapegasus.org/?p=343#comments</comments>
		<pubDate>Sun, 29 Jan 2012 10:49:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[jMonkeyEngine]]></category>

		<guid isPermaLink="false">http://seapegasus.org/?p=343</guid>
		<description><![CDATA[In the &#8220;Not done with jMonkeyEngine&#8221; corner there are also some interesting news. Just found this nice looking Voxel world demo by Evan Todd. (Click the link for beautiful screenshots.) I think the project is called Lemma, and it&#8217;s targetting the PC and Xbox crowd. It&#8217;s really cool to see how people get inspired by [...]]]></description>
			<content:encoded><![CDATA[<p>In the &#8220;Not done with jMonkeyEngine&#8221; corner there are also some interesting news. Just found this nice looking <a href="http://et1337.wordpress.com/2012/01/14/quick-update-alpha-inbound-soon/">Voxel world demo</a> by Evan Todd. (Click the link for beautiful screenshots.) I think the project is called Lemma, and it&#8217;s targetting the PC and Xbox crowd. It&#8217;s really cool to see how people get inspired by the voxel concept and make it look better and better in each iteration! (I&#8217;m beginning to think this blog needs a &#8220;Voxel<3" tag...) Lemma uses less repetive textures than other voxel engines, I don't know what exactly he did... Possibly he created geometries out of voxel surfaces, and used large procedural textures on the whole chunk? I need to try that myself to see how that performs...</p>
<p>I assume that Evan uses the Lemma world as backdrop for this <a href="http://et1337.wordpress.com/2011/11/25/tools-are-everything/">Parcour Ninja game</a>.<br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/ecKrDvG0VRw" frameborder="0" allowfullscreen></iframe><br />
In his blog, Evan also makes some interesting points about game development and tools (he&#8217;s writing his own engine). Many developers set out to write their own game engine instead of using existing tools. This approach has pros and cons: If you are a very expecienced developer, you can of course do what ever you want, and you&#8217;ll be successful. For beginners, having access to tried and tested tools speeds up game development significantly, and you don&#8217;t lose artistic freedom only because you use a preexisting engine (like my favorite jMonkeyEngine). It makes a huge difference whether you simply add a powerful feature by calling one method, or whether you avoid good features, only because you dread the overhead of code it incurs&#8230;<br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/HiO0CI81gtU" frameborder="0" allowfullscreen></iframe></p>
<p>This kind of usability is a goal that you mustn&#8217;t let go &#8220;out of sight, out of mind&#8221;. Evan says about designing tools for game development:</p>
<blockquote><p>The question should not be “how many shiny graphics techniques can I incorporate?”. It should be “how easy is it to create content for this game?”.</p></blockquote>
<p>Since the jMonkeyEngine is a Java framework, and not a &#8220;visual MMORPG-generator&#8221;, the first step is actually to create &#8220;your own engine&#8221; based on jme3: You extend the SimpleApplication class and configure it the way you need. You add your branding and your defaults, your screen switching states and your GUI. When all the generic pieces are ready, you compile your custom game classes into a little JAR. This JAR depends on the jMonkeyEngine, and your upcoming games depend on your custom JAR (and indirectly also on the jMonkeyEngine). Hook in your content and off you go. Evan shares a similar experience:</p>
<blockquote><p>[...] I didn’t really take advantage of [the audio] features, because it was a pain. I got away with the bare minimum. [...] Suddenly I’m adding new sounds, playing with the settings, and actually enjoying it. What changed? [...] The tool made the difference. It made it easy for me to go in and control sounds without writing code and recompiling. Now there will be a lot more variation in the sound, because it’s so easy to do.</p></blockquote>
<p>Although the jMonkeyEngine SDK is no drag&#038;drop &#8220;GarageBand&#8221; for game developers (where every chord is so restricted that it magically falls into place), it has sped up the development process drastically compared to jMonkeyEngine 2. No more worrying about classpath and build scripts and asset paths and packaging of the executable&#8230; No more switching between web browser and code editor for javadoc, code samples, or API details&#8230; Common tasks like converting, laying out, and previewing scenes is a context-menu away. When I started with jme1 and jme2 four years ago, I spent most of time figuring out the back-end. In jme3, I create a new game project and focus on my game content right away. That&#8217;s what a good tool should do. </p>
<p>I also liked Evan&#8217;s <a href="http://et1337.wordpress.com/2012/01/27/global-game-jam-2012-liveblog/">Global Game Jam 2012 Liveblog</a>, it shows a realistic approach to game design. Yes yes I know, &#8220;Keep your realism out of my dream game!!&#8221; Every new developer crams as many ideas as possible into one game &#8212; and then gives up half-way through because it&#8217;s too complicated. (I am also guilty of that, I have restarted variations of the same game idea&#8230; how often now&#8230;? in the last four years.) Evan shows the evolution of a game idea that is simple enough to implement, and fun enough to play:<br />
<iframe width="420" height="315" src="http://www.youtube.com/embed/e-53TJtWH3Y" frameborder="0" allowfullscreen></iframe></p>
<p>The game idea is a variation of Snakes, set inside a skyscraper. The snake travels through floors, staircases, elevators. The snake grows longer by eating people. The player strategically opens doors to lure the snake towards people and away from himself&#8230; When the snake is long enough, the player must trick it into biting its own tail to win. :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://seapegasus.org/?feed=rss2&#038;p=343</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Game Development: Library? Engine? Frame-what?</title>
		<link>http://seapegasus.org/?p=318</link>
		<comments>http://seapegasus.org/?p=318#comments</comments>
		<pubDate>Sun, 22 Jan 2012 15:24:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[jMonkeyEngine]]></category>

		<guid isPermaLink="false">http://seapegasus.org/?p=318</guid>
		<description><![CDATA[&#8220;The jMonkeyEngine is a game engine that provides a framework for the development of 3D games.&#8221; &#8212; &#8220;&#8230; What?&#8221; When I mention the jMonkeyEngine, I often have to explain what these terms mean: What&#8217;s a library, a framework, an engine? Who uses that stuff? And what do these abstract things look like? Let&#8217;s compare them [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>&#8220;The jMonkeyEngine is a game engine that provides a framework for the development of 3D games.&#8221; &#8212; &#8220;&#8230; What?&#8221;</p></blockquote>
<p>When I mention the <a href="http://jmonkeyengine.com">jMonkeyEngine</a>, I often have to explain what these terms mean: What&#8217;s a library, a framework, an engine? Who uses that stuff? And what do these abstract things look like?</p>
<p>Let&#8217;s compare them to something from Real Life&trade;. Technically you can grab a pair of scissors and cut your own hair. You can cultivate sourdough and bake your own bread. You can grab a chisel and whittle a tree into a chair. You can, but in reality you typically don&#8217;t. The task would take quite some time, and the quality of the haircut, the pretzels, or the living room furniture will be dubious.<br />
In reality, you rely on experts to do these jobs for you, hairdressers, bakers, or carpenters. You don&#8217;t know what their tools are called or how to use them. And you don&#8217;t need to. You only know that if you hire them, they will do the job, and do it faster and better than you. </p>
<p>Now, when developers write a new application, they can technically write everything from scratch. They can draw countless colored rectangles that lay out the user interface. They can write code that calculates which rectangle the user has clicked, and write code to resize and redraw all these rectangles. Or &#8212; they can load a &#8220;library&#8221; that draws functional windows and buttons for them. Creating an application window is such a common task that there is no need to reinvent the wheel. Just like you wouldn&#8217;t cut down a tree if you can buy a chair. </p>
<p>A <strong>framework</strong> is an abstract collection of functionality. &#8212; A bakery without a baker and flour, just an empty room with an oven and a few recipes. It makes no sense to &#8220;be using a framework&#8221; just by its own. You always use frameworks <em>to create something</em>, typically, a larger application. </p>
<p>Some examples of frameworks: The Java Spring framework helps you lay out the visual building blocks of an application: windows, buttons, menus, text fields, dialog boxes, etc. A lone Swing menu or button doesn&#8217;t do anything but look pretty. The developer adds functionality to the abstract buildings blocks, and combines them to a working whole.<br />
The <a href="http://platform.netbeans.org">NetBeans Platform</a> is another example of an abstract framework. It helps you create complex modular applications such as the <a href="http://jmonkeyengine.org/wiki/doku.php/sdk">jMonkeyEngine SDK</a>. It provides a frame in which you create custom file editors, various file views, an update center, etc. An &#8220;abstract editor&#8221; or an &#8220;abstract plugin&#8221; doesn&#8217;t do anything. The developer adds the actual functionality to the given frame. The NetBeans Platform itself uses Swing &#8212; which shows that frameworks can also build on one another. </p>
<p>An <strong>engine</strong> is also a collection of functionality &#8212; but in contrast to a generic framework, an engine&#8217;s methods are highly specific. An engine is similar to an engine in your car. It&#8217;s so specific that the driver is not expected to know more than how to switch it on, accelerate, and decelerate. While a framework is just a <em>static</em> frame whose gaps you fill, an engine is something that <em>runs</em> and regulates itself for the duration of the task. After the engine is switched on, there is no need for the driver to worry about internal details, such as torque and air and fuel flow: An engine performs its very specific job with minimal user interaction.</p>
<p>Some examples of engines: Developers use graphic engines (to calculate 3D transformations), rendering engines (to draw colored pixels to the screen fast), and physics engines (to simulate the interaction of physical forces and physical objects). A game engine can join these three engines into one cohesive framework. You switch the engines on and they do their thing on your loaded game data, constantly re-calculating the ever changing positions of game entities and immediately drawing the new image to the screen. </p>
<p>A <b>library</b> is just a generic word for a data container: You can have libraries of common programming methods, of assets, of utilities. Developers and graphic designers package reusable chunks of code or media into libraries because they want to reuse them later. The components in libraries are re-combined for each new job. In real life, a library can contain engines, frameworks, or multimedia assets. </p>
<p>How are libraries used? Back to our real life experts. Hairdressers, bakers, and carpenters usually have a list of services and prices. &#8220;You give me a dollar and I give you a loaf of bread, we both are happy, have a nice day.&#8221;<br />
If you take the hairdresser&#8217;s chairs, or ask the carpenter to work on your hair, your day will be less nice. You didn&#8217;t look at the list of services, didn&#8217;t pay the agreed-on price, and made a fool of yourself asking the wrong expert.<br />
In programming terms, this corresponds to the libraries interface. A specific programming library expects to be used in a specific context. It needs specific input to produce specific output. If you don&#8217;t read the API (application programming interface) first, your use of the library will either produce spectacularly wrong output, or (more likely) no output at all. </p>
<p>Now that you know how and why programmers use libraries, you maybe wonder what these abstract things look like. You already know that applications and documents come as files. You install the application and open the document to edit it. For example, you install the MS Word application to write a letter in a Word document. </p>
<p>Libraries also come as files. In Java, these are JAR files. (*) A library&#8217;s installation process can be different from an application &#8212; often you merely have to download and save the JAR to a specific directory. When writing your program, you specify the relative paths to the functionality that you intend to load from the libraries. </p>
<p><code java>package mygame;                  // package this program for others to load<br />
import com.jme3.app.SimpleApplication; // load a library from another package<br />
public class MyGame extends SimpleApplication {<br />
    /** Start the jMonkeyEngine application */<br />
    public static void main(String[] args) {<br />
        MyGame app = new MyGame();<br />
        app.start();<br />
    }<br />
    @Override<br />
    public void simpleInitApp() { /** load game assets */ }<br />
    @Override<br />
    public void simpleUpdate(float tpf) { /** make them interact */ }<br />
}</code></p>
<p>Here I create a MyGame object, which is an instance of a jMonkeyEngine SimpleApplication. I adhere to the API by calling the start() method to start the engine. I override the SimpleApplication&#8217;s simpleInitApp() and simpleUpdate() methods to fill the empty framework with my actual game content. Just like with the hairdresser, the libraries and you have to meet with the agreed-on payment, at the agreed-on time, at the agreed-on place for the deal to work. </p>
<p>(*) PS: JAR files are not exclusively used for libraries, they can also contain applications, just like .exe files on Windows or .app files on Mac OS. A JAR that contains only a library doesn&#8217;t do anything if you try to double click it (although some developers decide to set their library JAR up like an application, so it at least plays a demo of the library).</p>
]]></content:encoded>
			<wfw:commentRss>http://seapegasus.org/?feed=rss2&#038;p=318</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why HyperCard Was Killed</title>
		<link>http://seapegasus.org/?p=320</link>
		<comments>http://seapegasus.org/?p=320#comments</comments>
		<pubDate>Sun, 18 Dec 2011 15:11:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://seapegasus.org/?p=320</guid>
		<description><![CDATA[Interesting read about Why HyperCard was killed &#8212; the SlashDot article quotes Stanislav Datskovskiy&#8217;s blog: &#8220;Apple never again brought to market anything resembling HyperCard. [...] The reason for this is that HyperCard is an echo of a different world. One where the distinction between the &#8220;use&#8221; and &#8220;programming&#8221; of a computer has been weakened and [...]]]></description>
			<content:encoded><![CDATA[<p>Interesting read about <a href="http://apple.slashdot.org/story/11/11/30/1720214/why-was-hypercard-killed">Why HyperCard was killed</a> &#8212; the SlashDot article quotes <a href="http://www.loper-os.org/?p=568">Stanislav Datskovskiy&#8217;s blog</a>: </p>
<blockquote><p>&#8220;Apple never again brought to market anything resembling HyperCard. [...] The reason for this is that HyperCard is an echo of a different world. One where the distinction between the &#8220;use&#8221; and &#8220;programming&#8221; of a computer has been weakened and awaits near-total erasure. A world where the personal computer is a mind-amplifier, and not merely an expensive video telephone. A world in which Apple&#8217;s walled garden aesthetic has no place.&#8221;
</p></blockquote>
<p>I didn&#8217;t understand what he meant by the weakened distinction between user and programmer, but in <a href="http://www.loper-os.org/?p=284">another blog entry</a> he explains it as: </p>
<blockquote><p>&#8220;The distinction between “user” and “programmer” is an artifact of our presently <em>barely-programmable and barely-usable computing systems</em>.&#8221;</p></blockquote>
<p>So his point is, that as far as HyperCard is concerned, you are neither a user nor a programmer, you are an <em>operator</em>. In contrast to today&#8217;s developers and users, <em>operators</em> are more independent and self-sufficient, <em>operators</em> create the software they want to use. </p>
<p>Today&#8217;s users depend on programmers to provide them with tools; users just passively adjust to what they get (think of iPhone apps). Today&#8217;s programmers make money by being the high priests who keep the secret of &#8220;making stuff work&#8221;; programmers are not interested in creating competition by making it easy for users to become programmers themselves. </p>
<p>What would happen if a big company decided to cater to <em>operators</em>? In a world (and economy) full of <em>operators</em>, empowered by a hypothetical modern-day version of HyperCard, companies would lose some control and market opportunities: It&#8217;s hard to sell a custom shop database to <em>operators</em> who can &#8220;roll their own&#8221; (or can easily find a neighbor who can). </p>
<p>Possibly HyperCard was successful because it ran on relatively simple and small systems, and only therefor it was easy to learn. Could such a simple concept scale to today&#8217;s mesh-ups of networks, databases, mobile devices, web browsers, and web services? HyperCard was well integrated into its OS (it was practically a Mac&#8217;s commandline interface &#8212; remember the <em>message box</em>?). To revitalize HyperTalk, its API must be able to reach out to all these new components consistently. </p>
<p>AppleScript tried and failed to be as user-friendly as HyperTalk: I recall I spent hours tweaking one line of AppleScript code that tried to reach an embedded field inside another application: Something like &#8220;put blah into line 5 of the content of field A of panel B of element C of window D of application E&#8221;&#8230; I gave up because,  without API documentation or automatic code completion, it was impossible to drill down and reveal all the required layers of the external application. To be able to compete, a modern HyperCard would have to be able to deal with the increased depth of modern PCs, where applications may be spread over networks and frameworks, without losing its simplicity. Platform independence is quite a challenge, as we see today with Java.</p>
<p>As opposed to Java and Linux, the original HyperCard was never open-sourced. The HyperCard community eventually splintered and fizzled out after various unrelated (and unsuccessful) attempts to recreate the former glory. Would open-sourcing it have prevented that? Did we miss our one-time chance for an über-awesome HyperCard-Linux hybrid&#8230;? :-o</p>
]]></content:encoded>
			<wfw:commentRss>http://seapegasus.org/?feed=rss2&#038;p=320</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Your PC is a Wimp</title>
		<link>http://seapegasus.org/?p=328</link>
		<comments>http://seapegasus.org/?p=328#comments</comments>
		<pubDate>Sat, 05 Nov 2011 17:20:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Mainframes]]></category>

		<guid isPermaLink="false">http://seapegasus.org/?p=328</guid>
		<description><![CDATA[When I first heard about mainframes, one of the things that struck me funny was the claim that mainframes are &#8220;never&#8221; IPLed (rebooted, as in Initial Program Load). The development system that we use at work, however, is getting IPLed every week&#8230; ;-) Those 30-year-old mainframe newbs constantly mess something up, and a harmless submitted [...]]]></description>
			<content:encoded><![CDATA[<p>When I first heard about mainframes, one of the things that struck me funny was the claim that mainframes are &#8220;never&#8221; IPLed (rebooted, as in Initial Program Load). The development system that we use at work, however, is getting IPLed every week&#8230; ;-) Those 30-year-old mainframe newbs constantly mess something up, and a harmless submitted batch job runs amok and abends (crashes, as in Abnormal End) over and over. Just as with rebooting modern PCs, an IPL is the fastest way to get back to square zero and re-evaluate where the problem started.</p>
<p>But then, this mainframe is the development system. It&#8217;s a playground for DEV and QA (development and quality assurance) where abends are caught before the program&#8217;s final recut (the release build, alluding to old paper punchcards) for production. </p>
<p>So where are these mainframe that &#8220;never&#8221; need rebooting, doing monotonous work in the basement of some bank? How literally do I take this &#8220;never&#8221;? Surely they must be rebooted after a random power outage, or for maintainance of their parts, or&#8230; don&#8217;t know, after, say, an earthquake?</p>
<blockquote><p>Here are some photos from an IBM data center in Tokyo containing a variety of IBM servers (mainframe and non-mainframe). Many of these IBM machines fell horizontally to the data center floor, bending frame metal and stretching cables. </p></blockquote>
<p><a href="http://seapegasus.org/wp-content/uploads/seapegasus.org/2011/11/funny-mainframes-during-earthquake.png"><img src="http://seapegasus.org/wp-content/uploads/seapegasus.org/2011/11/funny-mainframes-during-earthquake.png" alt="funny mainframes during earthquake" title="funny mainframes during earthquake" width="500" class="aligncenter size-full wp-image-329" /></a></p>
<blockquote><p>However, all these IBM servers kept running, which is a testament both to the IBM engineers who designed and built them and to the IBM data center planners and managers who sweated all the little details, including leaving enough slack in the cables. </p>
<p>The IBM storage units kept running, too, with some concurrent error checking automatically triggered as a precaution. There were no service interruptions, and there was no need to switch over to a disaster recovery site.</p></blockquote>
<p> &#8212; from <a href="http://mainframe.typepad.com/blog/2011/03/earthquake-in-japan-ibm-machines-kept-running.html">Earthquake in Japan: IBM Machines Kept Running</a></p>
<p>Oh. So that&#8217;s what they mean. o_o</p>
]]></content:encoded>
			<wfw:commentRss>http://seapegasus.org/?feed=rss2&#038;p=328</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jMonkeyEngine 3 Beta Released!</title>
		<link>http://seapegasus.org/?p=316</link>
		<comments>http://seapegasus.org/?p=316#comments</comments>
		<pubDate>Mon, 24 Oct 2011 19:30:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[jMonkeyEngine]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://seapegasus.org/?p=316</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><iframe width="560" height="315" src="http://www.youtube.com/embed/eRC9FDin5dA" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://seapegasus.org/?feed=rss2&#038;p=316</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Living in Polygonic Hexyle</title>
		<link>http://seapegasus.org/?p=306</link>
		<comments>http://seapegasus.org/?p=306#comments</comments>
		<pubDate>Sun, 16 Oct 2011 14:37:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[jMonkeyEngine]]></category>

		<guid isPermaLink="false">http://seapegasus.org/?p=306</guid>
		<description><![CDATA[Is this an awesome jMonkeyEngine 3-based game or what? Glenn Marshall uses the jMonkeyEngine to develop Hexyle, a super awesome looking open-gaming universe. Hexyle fits into the growing category of lego-brick styles games like Minecraft and Mythruna. These open-world or sandbox games are non-linear, level-less, border-less games where players set their own goals. You can [...]]]></description>
			<content:encoded><![CDATA[<p>Is this an awesome jMonkeyEngine 3-based game or what?<br />
<iframe width="560" height="315" src="http://www.youtube.com/embed/eua-TseIeNc" frameborder="0" allowfullscreen></iframe></p>
<p><a href="http://www.butterfly.ie/">Glenn Marshall</a> uses the jMonkeyEngine to develop <a href="http://http://www.hexyle.com/concept">Hexyle</a>, a super awesome looking open-gaming universe.  </p>
<p>Hexyle fits into the growing category of lego-brick styles games like <a href="http://www.minecraft.net">Minecraft</a> and <a href="http://www.mythruna.com">Mythruna</a>. These open-world or sandbox games are non-linear, level-less, border-less games where players set their own goals. You can tell by my use of three negations that this concept (allthough around since the 80ies) opens up so many new game opportunities that we don&#8217;t even have words for them yet. </p>
<p>Not all sandbox games are made up of voxels like Minecraft: Grand Theft Auto, for instance, is a sandbox game set in a city. Your game entities are physical &#8220;crash cars&#8221;, complete with guns, explosions, buildings, and ragdoll physics. Catch is, to create a cityscape sandbox you need to be a good 3D modeller&#8230; :-/ This is why the rest of us says Hello to procedural fractals, and fills up the world with docile voxels and polygons. </p>
<p>I&#8217;m curious about the progress of multiplayer networking and the flexible gameplay that Glenn intends to add. The video that you see is not yet the finished game, but a demo + visualization that he created to attract funding. </p>
<p>The Hexyle page doesn&#8217;t give us many details yet, so it&#8217;s hard to judge gameplay. For comparison, Secondlife also promised &#8220;in-game games&#8221;, but I never saw any. There was some gambling where avatars just sat there and pressed buttons. But I never saw teams of avatars who met and voluntarily ran through a parcour, or, defended a base, or played soccer. I assume the SL controls aren&#8217;t responsive enough for that, so that is one important feature that makes or breaks such an idea, especially with the added complexity of 3D. Another successful example of a game editor is Little Big Planet, a cute cartoonish Playstation game where you create your own interactive jump&#8217;n'run levels and parcour puzzles. If Hexyle&#8217;s interactions are planned to be similar and as easy to control, this could turn out to become popular.</p>
]]></content:encoded>
			<wfw:commentRss>http://seapegasus.org/?feed=rss2&#038;p=306</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

