<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Glimmr</title>
	<atom:link href="http://glimmr.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://glimmr.wordpress.com</link>
	<description>Advanced graphics for Inform 7</description>
	<lastBuildDate>Fri, 27 Jan 2012 14:55:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='glimmr.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Glimmr</title>
		<link>http://glimmr.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://glimmr.wordpress.com/osd.xml" title="Glimmr" />
	<atom:link rel='hub' href='http://glimmr.wordpress.com/?pushpress=hub'/>
		<item>
		<title>A Colder Light: New hyperlink IF from Jon Ingold</title>
		<link>http://glimmr.wordpress.com/2012/01/26/525/</link>
		<comments>http://glimmr.wordpress.com/2012/01/26/525/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 15:41:08 +0000</pubDate>
		<dc:creator>Erik Temple</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://glimmr.wordpress.com/?p=525</guid>
		<description><![CDATA[Jon Ingold of inkle has released a new game, called A Colder Light, that I recommend highly as a short, satisfying quest with a fun central mechanic. A Colder Light is also a descendant of the hyperlink-only web interface that was elaborated in prototypes here, here, and here. I beta-tested the game and I think [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=525&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Jon Ingold of <a href="http://www.inklestudios.com/">inkle</a> has released a new game, called <a href="http://threeedgedsword.wordpress.com/2012/01/26/new-game-a-colder-light/">A Colder Light</a>, that I recommend highly as a short, satisfying quest with a fun central mechanic.</p>
<p>A Colder Light is also a descendant of the hyperlink-only web interface that was elaborated in prototypes <a href="http://glimmr.wordpress.com/2011/11/21/sand-dancer-sans-keyboard-an-experiment-with-hyperlink-input-in-if/">here</a>, <a href="http://glimmr.wordpress.com/2011/11/22/sand-dancer-sans-keyboard-take-two/">here</a>, and <a href="http://threeedgedsword.wordpress.com/2011/11/30/380/">here</a>. I beta-tested the game and I think that, in addition to being a good game, it provides anice sense of how a parser-based game with a hyperlink UI can differ from a CYOA-style game with a hyperlink UI.</p>
<p><a href="http://threeedgedsword.wordpress.com/2012/01/26/new-game-a-colder-light/">A Colder Light</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/glimmr.wordpress.com/525/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/glimmr.wordpress.com/525/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/glimmr.wordpress.com/525/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/glimmr.wordpress.com/525/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/glimmr.wordpress.com/525/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/glimmr.wordpress.com/525/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/glimmr.wordpress.com/525/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/glimmr.wordpress.com/525/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/glimmr.wordpress.com/525/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/glimmr.wordpress.com/525/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/glimmr.wordpress.com/525/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/glimmr.wordpress.com/525/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/glimmr.wordpress.com/525/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/glimmr.wordpress.com/525/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=525&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://glimmr.wordpress.com/2012/01/26/525/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2fca70b2e1e93000f7d0532f5e1d4bf1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">glimmr</media:title>
		</media:content>
	</item>
		<item>
		<title>Sand-Dancer Sans Keyboard: Take Two</title>
		<link>http://glimmr.wordpress.com/2011/11/22/sand-dancer-sans-keyboard-take-two/</link>
		<comments>http://glimmr.wordpress.com/2011/11/22/sand-dancer-sans-keyboard-take-two/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 04:37:24 +0000</pubDate>
		<dc:creator>Erik Temple</dc:creator>
				<category><![CDATA[Demos]]></category>
		<category><![CDATA[Experiments]]></category>
		<category><![CDATA[experiments]]></category>
		<category><![CDATA[interactive fiction]]></category>

		<guid isPermaLink="false">http://glimmr.wordpress.com/?p=520</guid>
		<description><![CDATA[I have put up a second version of the hyperlink-based demo, responding to Jon Ingold&#8217;s suggestion (here). This version streamlines the input model so that only clicking on a button will issue a command. Clicking on a link no longer automatically issues the examine command; instead, it merely brings focus to the object clicked. There [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=520&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have put up a second version of the hyperlink-based demo, responding to Jon Ingold&#8217;s suggestion (<a href="http://glimmr.wordpress.com/2011/11/21/sand-dancer-sans-keyboard-an-experiment-with-hyperlink-input-in-if/#comment-138">here</a>). This version streamlines the input model so that <em>only</em> clicking on a button will issue a command. Clicking on a link no longer automatically issues the examine command; instead, it merely brings focus to the object clicked. There is now an button for examining in the object-focus window, which is how we issue the examine command.</p>
<p><a href="http://goo.gl/wsRxe">Try the second version</a>.</p>
<p><strong>Update:</strong> A third version, implementing Jon Ingold&#8217;s suggestion that <a href="http://threeedgedsword.wordpress.com/2011/11/28/choice-from-analogue-to-digital-and-back-again/">links not show until hovered over</a>, as well as putting the description for objects in the focus window. The latter is actually my original implementation (rejected pre-release); it both presents the object description w/o the need for an additional mouse-click, and avoids the visual confusion of updating two windows at once.</p>
<p>I don&#8217;t feel that showing links only on hover works very well, at least when they &#8220;light up&#8221; individually: it&#8217;s pretty annoying to hunt and peck links in this way. It might work better if hovering anywhere on a paragraph showed all of the links in that paragraph. Unfortunately, the latter can&#8217;t be done with CSS, so I won&#8217;t be mocking it up here. (Hovering doesn&#8217;t work in a touch interface, so it doesn&#8217;t really fit the goals of this experiment as I originally defined them in any case.)</p>
<p>Try <a href="http://goo.gl/KXTMF">version 3</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/glimmr.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/glimmr.wordpress.com/520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/glimmr.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/glimmr.wordpress.com/520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/glimmr.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/glimmr.wordpress.com/520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/glimmr.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/glimmr.wordpress.com/520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/glimmr.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/glimmr.wordpress.com/520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/glimmr.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/glimmr.wordpress.com/520/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/glimmr.wordpress.com/520/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/glimmr.wordpress.com/520/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=520&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://glimmr.wordpress.com/2011/11/22/sand-dancer-sans-keyboard-take-two/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2fca70b2e1e93000f7d0532f5e1d4bf1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">glimmr</media:title>
		</media:content>
	</item>
		<item>
		<title>Sand-Dancer Sans Keyboard: An Experiment with Hyperlink Input in IF</title>
		<link>http://glimmr.wordpress.com/2011/11/21/sand-dancer-sans-keyboard-an-experiment-with-hyperlink-input-in-if/</link>
		<comments>http://glimmr.wordpress.com/2011/11/21/sand-dancer-sans-keyboard-an-experiment-with-hyperlink-input-in-if/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 00:14:23 +0000</pubDate>
		<dc:creator>Erik Temple</dc:creator>
				<category><![CDATA[Demos]]></category>
		<category><![CDATA[Experiments]]></category>
		<category><![CDATA[experiments]]></category>
		<category><![CDATA[interactive fiction]]></category>

		<guid isPermaLink="false">http://glimmr.wordpress.com/?p=510</guid>
		<description><![CDATA[I have recently been very interested in what parser IF (that&#8217;s text-based &#8220;interactive fiction&#8221;) might look like in the &#8220;post-PC&#8221; world brought of mobile computing. What do we do with a game whose core interface is typing, when we&#8217;re operating on devices where keyboards, while available, are less convenient and much less central to interaction [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=510&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have recently been very interested in what parser IF (that&#8217;s text-based &#8220;interactive fiction&#8221;) might look like in the &#8220;post-PC&#8221; world brought of mobile computing. What do we do with a game whose core interface is typing, when we&#8217;re operating on devices where keyboards, while available, are less convenient and much less central to interaction than on desktop machines? Given the fact that the form factors of smartphones and tablets are encouraging users to explore new forms of interacting with text&#8211;as well as to rediscover pretty much unreconstructed <a href="http://itunes.apple.com/us/app/fighting-fantasy-the-warlock/id345137138?mt=8">older</a> <a href="http://gamebookadventures.com/">ones</a>&#8211;now is an ideal time to consider how we might refashion the interface for parser IF.</p>
<p>[Updating the IF interface more generally has in fact been a topic of interest in recent years, even without any particular reference to mobile computing: The experience of most users has drifted very far from the command-line interface where most IF remains mired, and there has been a recognition that expanding interest in the form will very likely require changes to the interface. For some of the most salient work, see <a href="http://emshort.wordpress.com/2010/06/07/so-do-we-need-this-parser-thing-anyway/#">here</a>, <a href="http://threeedgedsword.wordpress.com/2011/03/13/a-proposal-for-an-intelligent-if-interface/">here</a>, and <a href="http://horacetorys.weebly.com/1/post/2010/06/simple-if-interfaces.html">here</a>.]</p>
<p>The present experiment is a simple conversion of <a href="http://sand-dancer.textories.com/">Sand-Dancer</a>, Aaron Reed and Alexei Othenin-Girard&#8217;s example game from Reed&#8217;s excellent book <em><a href="http://www.amazon.com/Creating-Interactive-Fiction-Inform-7/dp/1435455061">Creating Interactive Fiction with Inform 7</a></em>&#8211;thanks to Aaron for his generous permission to use it here! As such, it is a full work of parser IF. However, the player can use links and buttons to play the game through without typing anything at all. (Actually, I haven&#8217;t played the experiment all the way through to see whether I&#8217;ve accounted for every section of the game. It&#8217;s quite possible that I haven&#8217;t&#8211;but<em> in principle</em> the interface would allow most standard games to be played all the way through without resorting to the keyboard.) You can play the experimental demo <a title="Sand-Dancer Sans Keyboard in a web interpreter" href="http://goo.gl/2k8dz">here</a>, using the Quixe interpreter. It will look best on a WebKit browser (e.g., Chrome or Safari) and god knows what it will look like on Explorer. Unfortunately, the browser interpreter is a bit slow; perhaps ironically, it&#8217;s too slow to play on a mobile device!</p>
<div id="attachment_511" class="wp-caption aligncenter" style="width: 550px"><a href="http://glimmr.files.wordpress.com/2011/11/sand-dancerscreen.png"><img class="size-full wp-image-511" title="Sand-DancerScreen" src="http://glimmr.files.wordpress.com/2011/11/sand-dancerscreen.png?w=540&#038;h=448" alt="" width="540" height="448" /></a><p class="wp-caption-text">Screenshot of an early moment in the experimental demo.</p></div>
<p>The window is divided into multiple panes, each presenting a different type of information. In the main window, where the story&#8217;s text unfolds, the only interactive elements are hyperlinked objects. Similarly, the player&#8217;s inventory is shown off to the lower right, where the linked objects are always available. Click on any link in either of these windows, and the selected object will be highlighted in the upper right window, where its description will be followed by a series of buttons that describe actions that can be done with, or are related to, the object. At the bottom of the screen is another set of buttons representing the player&#8217;s navigation options, and above these is a narrow area where commands can be typed if the player wants or needs to enter free-form text. Buttons and links alike are implemented as Glulx hyperlinks&#8211;they are merely styled differently using CSS with the web interpreter.</p>
<p>For the most part, the entire overlay is procedurally generated. Aaron used the &#8220;Get BENT&#8221; system that he discusses in <em><a href="http://www.amazon.com/Creating-Interactive-Fiction-Inform-7/dp/1435455061">Creating Interactive Fiction with Inform 7</a> </em>throughout Sand-Dancer, and that means that it is easy to use Inform&#8217;s &#8220;rule for printing the name of&#8221; activity to wrap the names of all important objects in links. After a link is clicked, we use object properties (along with a few special-case items) to generate the buttons in the object window (e.g., if the object is a closed container, provide the choice to open it). We also use the built-in conversation suggestions to generate the options for conversation with NPCs and to display them in the same window. This is relatively straightforward, and I had to make only a few minor changes to Sand-Dancer itself to get the thing working.</p>
<p>Interfaces like this one have a clear benefit where players new to IF are concerned. Possibly they will be easier to navigate than the standard interface, but whether or not that is true, the presentation of full commands in buttons provides a mechanism for teaching the basic command grammar. Over time, clicking on buttons like &#8220;examine the letter&#8221;, &#8220;press the red button&#8221;, &#8220;ask the lawyer about copyright law&#8221; and so on will teach not only those individual commands, but the overall gestalt of the parser interface. Presumably this would lower the bar to playing unadorned parser IF.</p>
<p>As to the more focused question of whether the interface demo&#8217;ed here is a productive direction, I leave that to you. (I&#8217;m still too close to the micro-choices I&#8217;ve been making to evaluate the experience as a whole.) Please give it a shot and let me know in the comments how you found the experience. Even better, if you hold sway over someone with little IF experience, see what they think. (My wife says it solves most of the problems she has with IF&#8211;barring the map&#8211;but that&#8217;s just one data point!)</p>
<p>Final note: There are plenty of technical weaknesses in the implementation of the overlay interface, including both missing features and some bugs as well. For this reason, I am not releasing the source code as I normally would&#8211;I don&#8217;t want anyone to use this particular code as the basis for their own project.</p>
<p><a href="http://goo.gl/2k8dz">Try the demo.</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/glimmr.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/glimmr.wordpress.com/510/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/glimmr.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/glimmr.wordpress.com/510/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/glimmr.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/glimmr.wordpress.com/510/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/glimmr.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/glimmr.wordpress.com/510/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/glimmr.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/glimmr.wordpress.com/510/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/glimmr.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/glimmr.wordpress.com/510/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/glimmr.wordpress.com/510/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/glimmr.wordpress.com/510/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=510&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://glimmr.wordpress.com/2011/11/21/sand-dancer-sans-keyboard-an-experiment-with-hyperlink-input-in-if/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2fca70b2e1e93000f7d0532f5e1d4bf1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">glimmr</media:title>
		</media:content>

		<media:content url="http://glimmr.files.wordpress.com/2011/11/sand-dancerscreen.png" medium="image">
			<media:title type="html">Sand-DancerScreen</media:title>
		</media:content>
	</item>
		<item>
		<title>Demo: Animated Title Page</title>
		<link>http://glimmr.wordpress.com/2011/11/11/demo-animated-title-page/</link>
		<comments>http://glimmr.wordpress.com/2011/11/11/demo-animated-title-page/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 04:15:53 +0000</pubDate>
		<dc:creator>Erik Temple</dc:creator>
				<category><![CDATA[Demos]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[demos]]></category>
		<category><![CDATA[Glimmr]]></category>
		<category><![CDATA[interactive fiction]]></category>

		<guid isPermaLink="false">http://glimmr.wordpress.com/?p=477</guid>
		<description><![CDATA[Download the demo game here. To play the demo, you will need the latest version of your favorite Glulx interpreter, such as Gargoyle, Windows Git, or Zoom (see links at right). Users of the Spatterlight interpreter are advised to upgrade to Gargoyle. To date, the demos that I&#8217;ve released for Glimmr Canvas Animation have been either simple visualizations, or [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=477&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em>Download the demo game <a title="Animated Title Page demo (gblorb)" href="http://goo.gl/sGvZR">here</a>. To play the demo, you will need the latest version of your favorite Glulx interpreter, such as Gargoyle, Windows Git, or Zoom (see links at right). Users of the Spatterlight interpreter are advised to upgrade to Gargoyle.</em></p>
<p><em></em>To date, the demos that I&#8217;ve released for <a title="Glimmr Canvas Animation released" href="http://glimmr.wordpress.com/2011/10/23/glimmr-canvas-animation-released/">Glimmr Canvas Animation</a> have been either simple <a title="Animation Demo Series 2" href="http://glimmr.wordpress.com/2011/06/11/animation-demo-series-2/">visualizations</a>, or have gestured at <a title="Animation Demo Series 1" href="http://glimmr.wordpress.com/2011/06/05/glimmr-animation-series-1/">nonstandard</a> <a title="Animation Demo Series 3" href="http://glimmr.wordpress.com/2011/06/23/animation-demo-series-3/">interfaces</a> that have not really been seen in parser IF before. Which naturally raises the question: what can animation do for the vast majority of text games&#8211;the ones that are just text? This new demo, Animated Title Page, is one answer to that question.</p>
<p>In recent years, there have been some developments in the way that IF games present themselves at start-up (and before), including the increased use of cover art, largely thanks to Emily Short&#8217;s <a href="http://emshort.wordpress.com/2008/02/25/cover-art-drive/">cover art drive</a> from a couple of years back, and the growing popularity of &#8220;title pages&#8221; (see, e.g. <a title="Screenshot of Make It Good's in-game title page" href="http://glimmr.files.wordpress.com/2011/11/make-it-good-title-page.png">Make It Good</a>, or Jon Ingold&#8217;s plug-and-play I7 <a href="http://inform7.com/extensions/Jon%20Ingold/Title%20Page/index.html">extension</a>). This Animated Title Page demo continues this trend. In contrast to most IF, which opens with nothing more than a couple of paragraphs of text and the famous blinking cursor, Animated Title Page suppresses the main text window in favor of a graphical presentation, showcasing the cover art along with a list of basic options, such as starting a new game or continuing a saved one.</p>
<div id="attachment_500" class="wp-caption aligncenter" style="width: 550px"><a href="http://glimmr.files.wordpress.com/2011/11/deadline-title-page.png"><img class="size-full wp-image-500" title="Deadline Title Page" src="http://glimmr.files.wordpress.com/2011/11/deadline-title-page.png?w=540&#038;h=423" alt="Title page for the demo" width="540" height="423" /></a><p class="wp-caption-text">The demo reimagines the art for Deadline, using a noir-flavored photo by Flickr user emdot</p></div>
<p>The demo, which pretends to be the classic Infocom game <em><a href="http://ifdb.tads.org/viewgame?id=p976o7x5ies9ltdh">Deadline</a>,</em> also prefaces the title page with a fun and overly dramatic animated rendering of the original game&#8217;s marketing tagline: &#8220;A locked room. A dead man. And twelve hours to solve the murder.&#8221; This text rushes out at the player, making a <a title="source of the CC-licensed sound file" href="http://soundbible.com/682-Swoosh-1.html">whooshing sound</a>as it rockets by. There are also fade-ins and fade-outs, animated button depresses, and other effects.</p>
<div class="wp-caption alignright" style="width: 260px"><img title="Original Deadline box art" src="http://infocom.elsewhere.org/gallery/deadline_folio/front.jpg" alt="The original box art for Infocom's Deadline" width="250" height="224" /><p class="wp-caption-text">The original box art for Infocom&#039;s Deadline (1982)</p></div>
<p>It is worth noting that, despite the dynamic animations, the demo is actually quite simple from the standpoint of art creation. The art consists entirely of <a href="http://en.wikipedia.org/wiki/Raster_graphics">rasterized</a> <a href="http://en.wikipedia.org/wiki/Linotype_machine">slugs</a> of type (made using the font Dirty Headline by S. John Ross of <a href="http://cumberlandgames.com">Cumberland Games</a>), and of a single photo (<em>sitting</em> by <a href="http://www.flickr.com/photos/emdot/">emdot</a>). These elements are animated together using commands provided by the <a title="Glimmr Canvas Animation released" href="http://glimmr.wordpress.com/2011/10/23/glimmr-canvas-animation-released/">Glimmr Canvas Animation</a> extension. Similar designs  should be well within the capabilities of most authors. The source code for the demo is available at the link below, should you want to try to modify it for your own purposes.</p>
<p>The demo is substantially complete, but there are a few more refinements that could be implemented. It would be nice, for example, to be able to skip the animations entirely to fade in directly on the title screen; it&#8217;s probably a bit much to have to watch even 20 seconds or so of introductory animation every time that you open the game. More radically:  Nearly all other modern games, from casual to triple-A, employ an automated system of save slots so that the player never has to interact directly with the filesystem to manage her saved games. Such a feature would be easy enough to build into a Glulx project, and of course save slots would be a natural fit for a graphic interface like the one presented here.</p>
<p>Download <a title="Animated Title Page demo (gblorb)" href="http://goo.gl/sGvZR">Animated Title Page</a>, or the <a title="Zip archive of source code and assets" href="http://goo.gl/VvWQI">source code and assets</a>. Comments welcome.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/glimmr.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/glimmr.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/glimmr.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/glimmr.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/glimmr.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/glimmr.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/glimmr.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/glimmr.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/glimmr.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/glimmr.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/glimmr.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/glimmr.wordpress.com/477/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/glimmr.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/glimmr.wordpress.com/477/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=477&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://glimmr.wordpress.com/2011/11/11/demo-animated-title-page/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2fca70b2e1e93000f7d0532f5e1d4bf1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">glimmr</media:title>
		</media:content>

		<media:content url="http://glimmr.files.wordpress.com/2011/11/deadline-title-page.png" medium="image">
			<media:title type="html">Deadline Title Page</media:title>
		</media:content>

		<media:content url="http://infocom.elsewhere.org/gallery/deadline_folio/front.jpg" medium="image">
			<media:title type="html">Original Deadline box art</media:title>
		</media:content>
	</item>
		<item>
		<title>New Versions of Key Glulx Interpreters</title>
		<link>http://glimmr.wordpress.com/2011/11/10/new-versions-of-key-glulx-interpreters/</link>
		<comments>http://glimmr.wordpress.com/2011/11/10/new-versions-of-key-glulx-interpreters/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 02:59:44 +0000</pubDate>
		<dc:creator>Erik Temple</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[interactive fiction]]></category>
		<category><![CDATA[interpreters]]></category>

		<guid isPermaLink="false">http://glimmr.wordpress.com/?p=486</guid>
		<description><![CDATA[If you are interested in the extended set of Glulx features (graphics, hyperlinks, etc.), be sure to grab the newly released versions of Gargoyle (Windows, OS X, Linux) and/or Zoom (OS X). These lay to rest long-standing bugs as well as make available some of the latest additions to the Glulx standard, such as floating [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=486&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you are interested in the extended set of Glulx features (graphics, hyperlinks, etc.), be sure to grab the newly released versions of <a title="Gargoyle version 2011.1" href="http://code.google.com/p/garglk/downloads/list">Gargoyle</a> (Windows, OS X, Linux) and/or <a title="Zoom v1.1.5" href="http://logicalshift.co.uk/rotate/2011/11/05/zoom-1-1-5-has-been-released/">Zoom</a> (OS X). These lay to rest long-standing bugs as well as make available some of the latest additions to the Glulx standard, such as floating point support and some refinements to sound capabilities.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/glimmr.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/glimmr.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/glimmr.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/glimmr.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/glimmr.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/glimmr.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/glimmr.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/glimmr.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/glimmr.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/glimmr.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/glimmr.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/glimmr.wordpress.com/486/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/glimmr.wordpress.com/486/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/glimmr.wordpress.com/486/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=486&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://glimmr.wordpress.com/2011/11/10/new-versions-of-key-glulx-interpreters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2fca70b2e1e93000f7d0532f5e1d4bf1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">glimmr</media:title>
		</media:content>
	</item>
		<item>
		<title>Glimmr Canvas Animation released</title>
		<link>http://glimmr.wordpress.com/2011/10/23/glimmr-canvas-animation-released/</link>
		<comments>http://glimmr.wordpress.com/2011/10/23/glimmr-canvas-animation-released/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 12:52:11 +0000</pubDate>
		<dc:creator>Erik Temple</dc:creator>
				<category><![CDATA[Releases]]></category>
		<category><![CDATA[Glimmr]]></category>
		<category><![CDATA[interactive fiction]]></category>
		<category><![CDATA[releases]]></category>
		<category><![CDATA[animation]]></category>

		<guid isPermaLink="false">http://glimmr.wordpress.com/?p=463</guid>
		<description><![CDATA[Glimmr Canvas Animation&#8211;previewed here, here, and here&#8211;has been released and is available for download at Google Code. (The extension can also be downloaded from the Inform site, though without the image assets needed to compile the examples.) What is Glimmr Canvas Animation? Glimmr Canvas Animation sits on top of Glimmr Canvas-Based Drawing and allows for graphic elements [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=463&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Glimmr Canvas Animation&#8211;previewed <a title="Animation Demo Series 1" href="http://glimmr.wordpress.com/2011/06/05/glimmr-animation-series-1/">here</a>, <a title="Animation Demo Series 2" href="http://glimmr.wordpress.com/2011/06/11/animation-demo-series-2/">here</a>, and <a title="Animation Demo Series 3" href="http://glimmr.wordpress.com/2011/06/23/animation-demo-series-3/">here</a>&#8211;has been released and is available for <a href="http://code.google.com/p/glimmr-i7x/downloads/list">download</a> at Google Code. (The extension can also be downloaded from the <a title="Canvas Animation extension page at inform7.com" href="http://inform7.com/extensions/Erik%20Temple/Glimmr%20Canvas%20Animation/index.html">Inform</a> site, though without the image assets needed to compile the examples.)</p>
<div id="attachment_452" class="wp-caption alignright" style="width: 311px"><a href="http://glimmr.files.wordpress.com/2011/06/vampyr_detail.png"><img class="size-full wp-image-452" title="Scourge of the Vampyr screenshot detail" src="http://glimmr.files.wordpress.com/2011/06/vampyr_detail.png?w=540" alt=""   /></a><p class="wp-caption-text">The &quot;Scourge of the Vampyr&quot; demo</p></div>
<p>What is Glimmr Canvas Animation? Glimmr Canvas Animation sits on top of <a href="http://inform7.com/extensions/Erik%20Temple/Glimmr%20Canvas-Based%20Drawing/index.html">Glimmr Canvas-Based Drawing</a> and allows for graphic elements of any type to be animated. GCA is built on the concept of the<strong> animation track</strong>. An animation track handles <em>one</em> kind of animation effect for <em>one</em> graphic element, but tracks are stackable, so it&#8217;s possible build up quite complex animations. GCA allows for flipbook-style animation of sprites or background images, for dynamically scaling graphic elements, for (limited) fade-ins and fade-outs, and much more. All of these preset animation types can be invoked in just one or two lines of code, or tweaked and customized with as much additional logic as you like. GCA supports 15 different equations for the automated &#8220;<a href="http://glimmr.wordpress.com/2011/06/11/animation-demo-series-2/">easing/tweening</a>&#8221; of animations to make them more natural or more interesting. The extension includes a robust debugging log, as well as a number example code demos (see screenshots in this post).</p>
<p>There have been a number of new features added to Glimmr Canvas Animation since it was <a title="Animation Demo Series 1" href="http://glimmr.wordpress.com/2011/06/05/glimmr-animation-series-1/">first previewed</a>. The most notable of these is the introduction of &#8220;virtual timers,&#8221; which allows multiple concurrent animations to run at different speeds. The beta version of GCA required all animations to run at the same speed, so this should allow for more flexibility.</p>
<p>I hope you&#8217;ll check out GCA!</p>
<p><a href="http://code.google.com/p/glimmr-i7x/downloads/list">Download Glimmr Canvas Animation</a></p>
<div id="attachment_428" class="wp-caption alignright" style="width: 550px"><a href="http://glimmr.files.wordpress.com/2011/06/animation_demo2_screen.png"><img class="size-full wp-image-428" title="Animation Demo 2 screenshot" src="http://glimmr.files.wordpress.com/2011/06/animation_demo2_screen.png?w=540&#038;h=290" alt="" width="540" height="290" /></a><p class="wp-caption-text">Screenshot of the &quot;Eased Movements&quot; demo. Movement simulated (poorly).</p></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/glimmr.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/glimmr.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/glimmr.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/glimmr.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/glimmr.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/glimmr.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/glimmr.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/glimmr.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/glimmr.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/glimmr.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/glimmr.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/glimmr.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/glimmr.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/glimmr.wordpress.com/463/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=463&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://glimmr.wordpress.com/2011/10/23/glimmr-canvas-animation-released/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2fca70b2e1e93000f7d0532f5e1d4bf1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">glimmr</media:title>
		</media:content>

		<media:content url="http://glimmr.files.wordpress.com/2011/06/vampyr_detail.png" medium="image">
			<media:title type="html">Scourge of the Vampyr screenshot detail</media:title>
		</media:content>

		<media:content url="http://glimmr.files.wordpress.com/2011/06/animation_demo2_screen.png" medium="image">
			<media:title type="html">Animation Demo 2 screenshot</media:title>
		</media:content>
	</item>
		<item>
		<title>Animation Demo Series 3</title>
		<link>http://glimmr.wordpress.com/2011/06/23/animation-demo-series-3/</link>
		<comments>http://glimmr.wordpress.com/2011/06/23/animation-demo-series-3/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 03:39:36 +0000</pubDate>
		<dc:creator>Erik Temple</dc:creator>
				<category><![CDATA[Demos]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[demos]]></category>
		<category><![CDATA[Glimmr]]></category>
		<category><![CDATA[interactive fiction]]></category>
		<category><![CDATA[mapping]]></category>

		<guid isPermaLink="false">http://glimmr.wordpress.com/?p=447</guid>
		<description><![CDATA[Download the demo game here. To play the demo, you will need a Glulx interpreter, such as Gargoyle, Windows Git, or Zoom (see links at right). Users of the Spatterlight interpreter are advised to upgrade to Gargoyle. For Scourge of the Vampyr, the third installment of the Glimmr Canvas Animation demo series, I&#8217;ve finally prepared an example [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=447&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em>Download the demo game <a title="Link to gblorb file for Demo 3" href="http://goo.gl/qTc32">here</a>. To play the demo, you will need a Glulx interpreter, such as Gargoyle, Windows Git, or Zoom (see links at right). Users of the Spatterlight interpreter are advised to upgrade to Gargoyle.</em></p>
<p>For Scourge of the Vampyr, the third installment of the Glimmr Canvas Animation demo series, I&#8217;ve finally prepared an example where the connection to familiar IF game mechanics is clear. Unlike <a title="Animation Demo Series 1" href="http://glimmr.wordpress.com/2011/06/05/glimmr-animation-series-1/">Demo 1</a> (a UI mockup), or <a title="Animation Demo Series 2" href="http://glimmr.wordpress.com/2011/06/11/animation-demo-series-2/">Demo 2</a> (a visualizer for eased movement), Demo 3 shows us a graphical map of a familiar adventure terrain&#8211;the crypt of a vampire, to be precise&#8211;using animation to provide movement and effects.<span id="more-447"></span></p>
<div id="attachment_452" class="wp-caption alignright" style="width: 311px"><a href="http://glimmr.files.wordpress.com/2011/06/vampyr_screenshot.png"><img class="size-full wp-image-452" title="Scourge of the Vampyr screenshot detail" src="http://glimmr.files.wordpress.com/2011/06/vampyr_detail.png?w=540" alt=""   /></a><p class="wp-caption-text">The player&#039;s avatar, headed east toward adventure (click for full screenshot)</p></div>
<p>This demo introduces a few more of the animation presets that are built into Glimmr Canvas Animation (<a title="Animation Demo Series 1" href="http://glimmr.wordpress.com/2011/06/05/glimmr-animation-series-1/">more on GCA</a>). First is the <em>reel</em> animation, which is the familiar flipbook-style swapping out of images to suggest change or movement. The Scourge of the Vampyr demo uses a simple four-image walk cycle to depict the player&#8217;s avatar moving from room to room.</p>
<p>Of course, there&#8217;s also the familiar <em>motion</em> preset, showcased in both Demos 1 &amp; 2, which actually moves the sprite that represents the PC over the map. However, it&#8217;s deployed with a twist here: most of the time, the window framing is centered on the avatar, so the map appears to move while the character walks in place (ah, relativity!)</p>
<p>The demo also employs some other effects. If you look very closely as the character enters the crypt via the stairs, you will notice that the sprite increases in scale as it nears the bottom of the stairs, from 75% to 100% over 4 animation frames. The staircase is only a single 16 x 16 pixel tile, so the effect is subtle&#8211;look carefully!</p>
<p>Much less subtly, there&#8217;s are some fairly old school lighting effects when you light your lamp in the darkened room on the far right side of the map. This combines two other presets not seen in previous demos, the <em>flicker</em> preset and the <em>fade</em> preset. Basically, we &#8220;stack&#8221; these two animations together to create a single effect: we fade the room in, while randomly flickering the room out of sight entirely. (The fade effect, with a bit of <a title="Animation Demo Series 2" href="http://glimmr.wordpress.com/2011/06/11/animation-demo-series-2/">easing</a>, can be seen by itself by turning off the lamp again in the same room.)</p>
<p>A quick note on the images, all of which are CC-licensed: The sprite animations for the avatar, as well as most of the tiles used to construct the map, come from Sean Howard&#8217;s <a href="http://www.squidi.net/pixel/index.php">Free Pixel Project</a>. The sarcophagus tile comes from <a href="http://pousse.rapiere.free.fr/tome/">David Gervais</a>.</p>
<p>The Inform 7 source code for the demo can be found in the documentation section (still a stub) of the Glimmr Canvas Animation extension, available <a href="http://goo.gl/zNcKF">here</a> for the time being.</p>
<p>Download <a href="http://goo.gl/qTc32">Demo 3: The Scourge of the Vampyr</a>. Comments welcome.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/glimmr.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/glimmr.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/glimmr.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/glimmr.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/glimmr.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/glimmr.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/glimmr.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/glimmr.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/glimmr.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/glimmr.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/glimmr.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/glimmr.wordpress.com/447/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/glimmr.wordpress.com/447/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/glimmr.wordpress.com/447/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=447&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://glimmr.wordpress.com/2011/06/23/animation-demo-series-3/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2fca70b2e1e93000f7d0532f5e1d4bf1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">glimmr</media:title>
		</media:content>

		<media:content url="http://glimmr.files.wordpress.com/2011/06/vampyr_detail.png" medium="image">
			<media:title type="html">Scourge of the Vampyr screenshot detail</media:title>
		</media:content>
	</item>
		<item>
		<title>Animation Demo Series 2</title>
		<link>http://glimmr.wordpress.com/2011/06/11/animation-demo-series-2/</link>
		<comments>http://glimmr.wordpress.com/2011/06/11/animation-demo-series-2/#comments</comments>
		<pubDate>Sat, 11 Jun 2011 20:25:46 +0000</pubDate>
		<dc:creator>Erik Temple</dc:creator>
				<category><![CDATA[Demos]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[demos]]></category>
		<category><![CDATA[Glimmr]]></category>
		<category><![CDATA[interactive fiction]]></category>

		<guid isPermaLink="false">http://glimmr.wordpress.com/?p=418</guid>
		<description><![CDATA[Note: This post goes into a bit of detail about certain animation concepts. There&#8217;s even some math. I wouldn&#8217;t blame you if you just want to skip to the demo. For this installment of the demo series, we delve deeper into the facilities that Glimmr Canvas Animation provides for dynamic tweening. Briefly, &#8220;tweening&#8221; is short for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=418&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong><em>Note:</em></strong><em> This post goes into a bit of detail about certain animation concepts. There&#8217;s even some math. I wouldn&#8217;t blame you if you just want to <a href="#demo">skip to the demo</a>.</em></p>
<p>For this installment of the demo series, we delve deeper into the facilities that Glimmr Canvas Animation provides for dynamic <a href="http://en.wikipedia.org/wiki/Tweening">tweening</a>. Briefly, &#8220;tweening&#8221; is short for &#8220;in-betweening&#8221;. In traditional animation, animations were organized around key frames&#8211;the critical points in any sequence. These keyframes were drawn first, and then the &#8220;betweens&#8221; were filled in to connect those key moments smoothly; because they were less critical, they were often filled in by the lower ranks of the animation team. In computer animation, keyframes are defined by the user, and the tweening is done automatically by the software.</p>
<p>Glimmr Canvas Animation (GCA) is no different, though it doesn&#8217;t really use the concept of the keyframe. Where programs like Flash have a master timeline punctuated by user-defined keyframes, each GCA animation track can be thought of as a self-contained timeline separating two keyframes&#8211;the starting and ending points of that particular motion or effect. GCA builds sophisticated and customizable tweening into all of the preset animation types via the use of &#8220;easing&#8221; equations that interpolate movement between the starting and ending points.<span id="more-418"></span></p>
<h3>Easing equations</h3>
<p>The term &#8220;easing&#8221; refers to motions in which the acceleration changes over time. The term may seem strange, but think of it in terms of easing into a chair&#8211;your body moves more slowly as you approach the cushion. Easing equations can imitate this sort of gradual slowing as the motion reaches the endpoint, and they can also do much more, such as imitate the bouncing of a ball, or overshoot the endpoint and snap back.</p>
<p>Three terms are used to describe all of the equations provided in GCA. &#8220;Easing out&#8221; describes a sequence in which motion starts out moving rapidly and then slows, more or less gradually, to a stop. &#8220;Easing in&#8221; is the opposite&#8211;slow to fast. &#8220;Easing in-out&#8221; combines the two effects. Different functions can be used to qualify these three basic categories: &#8220;quadratic easing in&#8221; for example, or &#8220;circular easing out&#8221;.</p>
<p>Easing equations can be employed very flexibly. In fact, I&#8217;m using the word &#8220;motion&#8221; only because it is convenient. In fact, easing equations can be used on any continuous field of values, not just coordinates in space. For example, the <a title="Animation Demo Series 1" href="http://glimmr.wordpress.com/2011/06/05/glimmr-animation-series-1/">first demo in the series</a> employed easing when zooming the size of images. Instead of proceeding from 50% of actual size to 100% by equal intervals, the zoom was &#8220;eased&#8221; using a cubic ease-out equation that starts out rapid, increases slightly in speed for the first 1/2 or so of the duration, and then slows comparatively rapidly. Combined with a purely linear diagonal movement of the image toward the center of the window, this eased zooming provides a gentle impression of arcing movement (go ahead, <a href="http://dl.dropbox.com/u/947038/Glimmr%20Animation%20Demos/Demo%201%20-%20Maps%20of%20Murder.gblorb">try the first demo again</a> to see this).</p>
<p>With GCA, all of the preset animation types allow you to apply easing with a single setting, such as &#8220;the easing of the movement track is cubic easing out&#8221;. This includes not only movement and zooming tracks, but also fader tracks (changes in opacity), and even reel animations (i.e., sequences of images). If you set the duration of a reel animation to more or less frames than there are images in the sequence, GCA will use the track&#8217;s easing to scale the images available to the number of frames required.</p>
<p>GCA has 16 easing equations built in, from purely linear to a quadratic curve to a parabolic bounce. If you&#8217;re not satisfied with these, you can also add your own equations.</p>
<p>There is no need to understand or use the mathematics of easing to use GCA (unless you want to add your own equations), but an example, and particularly a graph of the function, couldn&#8217;t hurt. Here is the cubic &#8220;easing out&#8221; equation and a plot:</p>
<p><a href="http://glimmr.files.wordpress.com/2011/06/cubiceaseout_eq1.png"><img class="aligncenter size-full wp-image-426" title="Equation: Cubic Easing Out" src="http://glimmr.files.wordpress.com/2011/06/cubiceaseout_eq1.png?w=540" alt="Equation: Cubic Easing Out"   /></a></p>
<p>(The four parameters listed at the bottom are used as the inputs to every easing equation. Once an equation is set up, the only variable that changes is <em>t</em>, which in GCA is the number of the current frame of the animation track.)</p>
<p>The departures from linearity in the plot&#8211;that is, from an imagined straight diagonal line running from the origin in the lower left to the upper right&#8211;describe the changing velocity of the motion.<br />
<a name="demo"></a></p>
<h3>The demo</h3>
<p>Finally we get to the demo: <a href="http://goo.gl/t6KiV">Eased Movement</a>, as its name implies, showcases eased movement in Glimmr Canvas Animation. The demo is actually a visualization tool as much as it is a demonstration, in that it is designed to show the effect of any combination of easing equations on movement.</p>
<p>Wait, a <em>combination</em> of easing equations? Yes. GCA allows you to specify independent easing equations for each axis of movement, horizontal (x) and vertical (y). This opens up a host of new possibilities, because the application of differential accelerations produces different <em>paths</em> of movement, not just varying speeds.</p>
<div id="attachment_428" class="wp-caption aligncenter" style="width: 550px"><a href="http://glimmr.files.wordpress.com/2011/06/animation_demo2_screen.png"><img class="size-full wp-image-428 " title="Animation Demo 2 screenshot" src="http://glimmr.files.wordpress.com/2011/06/animation_demo2_screen.png?w=540&#038;h=290" alt="" width="540" height="290" /></a><p class="wp-caption-text">Screenshot of the demo. Motion trail is simulated (poorly).</p></div>
<p>Once you&#8217;ve <a href="http://goo.gl/t6KiV">downloaded the demo</a>, try the following to see the different concepts we&#8217;ve been talking about in motion (minor pun intended):</p>
<ul>
<li>Before you do anything else, click anywhere in the central black area to the move the ball. This is plain old linear movement. Dull!</li>
<li>Now, select a different (not linear) easing for the x-axis by clicking on the easing type in the left column. Then select the <em>same</em> easing type in the right column. Finally, click in the central area to move the ball to that point. It should move in a straight line, but the acceleration patterns of the motion should conform to the easing selected.</li>
<li>Now, move the ball to the lower left corner of the central area. Click on the linear easing link in the left column to reset the x-axis. Leave the y-axis set to whatever nonlinear easing you&#8217;ve been messing with. Finally, click to move the ball to the upper-right corner of the central area. Notice that the path of the ball matches the shape of the graph displayed in the right column. This is a nice, simple demonstration of the operation of differential easing.</li>
<li>Finally, set the easing for the x-axis to a nonlinear setting that&#8217;s different from the y-axis easing, and move the ball in diagonal lines. Try a few different combinations and note the variety of paths you can get.</li>
</ul>
<p>Enjoy!</p>
<p><em>Download the demo game <a href="http://goo.gl/t6KiV">here.</a> To view the demo, you will need a Glulx interpreter, such as Windows Git or Zoom (see links at right). Note that this demo will <strong>not</strong> work in Gargoyle, nor in Spatterlight. If you&#8217;re a diehard Gargoyle aficionado, drop me a line; I can send you a test build in which the hyperlink bug is fixed.</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/glimmr.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/glimmr.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/glimmr.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/glimmr.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/glimmr.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/glimmr.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/glimmr.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/glimmr.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/glimmr.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/glimmr.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/glimmr.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/glimmr.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/glimmr.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/glimmr.wordpress.com/418/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=418&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://glimmr.wordpress.com/2011/06/11/animation-demo-series-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2fca70b2e1e93000f7d0532f5e1d4bf1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">glimmr</media:title>
		</media:content>

		<media:content url="http://glimmr.files.wordpress.com/2011/06/cubiceaseout_eq1.png" medium="image">
			<media:title type="html">Equation: Cubic Easing Out</media:title>
		</media:content>

		<media:content url="http://glimmr.files.wordpress.com/2011/06/animation_demo2_screen.png" medium="image">
			<media:title type="html">Animation Demo 2 screenshot</media:title>
		</media:content>
	</item>
		<item>
		<title>Animation Demo Series 1</title>
		<link>http://glimmr.wordpress.com/2011/06/05/glimmr-animation-series-1/</link>
		<comments>http://glimmr.wordpress.com/2011/06/05/glimmr-animation-series-1/#comments</comments>
		<pubDate>Sun, 05 Jun 2011 22:36:23 +0000</pubDate>
		<dc:creator>Erik Temple</dc:creator>
				<category><![CDATA[Demos]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[demos]]></category>
		<category><![CDATA[Glimmr]]></category>
		<category><![CDATA[interactive fiction]]></category>

		<guid isPermaLink="false">http://glimmr.wordpress.com/?p=400</guid>
		<description><![CDATA[NOTE: The demo game file is a gblorb file. To play it, you will need a Glulx interpreter, such as Gargoyle, Windows Glulxe, or Zoom (see links at right). Gargoyle is expected to give the smoothest performance on all systems, but the most recent of any of these interpreters should do nicely. Almost exactly four years ago, I released my first &#8220;work&#8221; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=400&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em><strong>NOTE:</strong> The <a href="http://dl.dropbox.com/u/947038/Glimmr%20Animation%20Demos/Demo%201%20-%20Maps%20of%20Murder.gblorb">demo game file</a> is a <a title="More about blorb files" href="http://en.wikipedia.org/wiki/Blorb">gblorb</a> file. To play it, you will need a Glulx interpreter, such as Gargoyle, Windows Glulxe, or Zoom (see links at right). <a href="http://code.google.com/p/garglk/downloads/list">Gargoyle</a> is expected to give the smoothest performance on all systems, but the most recent of any of these interpreters should do nicely.</em></p>
<p><em></em>Almost exactly four years ago, I released my first &#8220;work&#8221; in Inform 7, a pre-Glimmr extension to enable very simple and primitive animations. <a href="http://inform7.com/extensions/Erik%20Temple/Graphical%20Window%20Animation/index.html">Graphical Window Animation</a> hasn&#8217;t worked with any Inform build newer than 5Z71; with Glimmr well underway, I saw GWA&#8211;limited to just one graphics window and (effectively) one image&#8211;as a dead end and didn&#8217;t bother to continue maintaining it.</p>
<p>Instead, I set my eyes on eventually capping the Glimmr suite with a powerful animation library that would move well beyond the simple <a href="http://en.wikipedia.org/wiki/Flip_book">flip book</a> approach taken by Graphical Window Animation. I dithered for a long while, thinking that before I put the extension together, I&#8217;d like to have a sophisticated system of virtual timers running behind it (Glulx has only a single timer, but you could theoretically track things in such a way as to imitate any number of separate timers firing events independently). I didn&#8217;t have a whole lot of interest in creating that system, though, so I just let things languish.</p>
<p>But I&#8217;m happy to say that Glimmr animation&#8217;s moment has now arrived.<span id="more-400"></span> Glimmr Canvas Animation, 10,000 words of Inform code, is complete. As I try to work myself up to writing the documentation, I thought I&#8217;d preview the code demos here on the blog. This will make for a bit of a drawn-out release, but maybe it&#8217;ll entice someone to help me write the documentation (a task I always dread)! In the meantime, the demos should be fun.</p>
<h3>Glimmr Canvas Animation</h3>
<p>Glimmr Canvas Animation sits on top of <a href="http://inform7.com/extensions/Erik%20Temple/Glimmr%20Canvas-Based%20Drawing/index.html">Glimmr Canvas-Based Drawing</a> and allows for graphic elements of any type to be animated. GCA is built on the concept of the<strong> animation track</strong>. An animation track handles <em>one</em> kind of animation effect for <em>one</em> graphic element, but tracks are stackable, so you can build up very complex animations using them. To display a rolling ball, for example, you might have:</p>
<p><a href="http://glimmr.files.wordpress.com/2011/06/stacked-animation-tracks.png"><img class="alignright size-full wp-image-405" style="margin-bottom:20px;" title="Stacked Animation Tracks" src="http://glimmr.files.wordpress.com/2011/06/stacked-animation-tracks.png?w=540" alt="Stacked animation tracks"   /></a><br />
By moving the sprite a few pixels each frame for 12 frames, while cycling through a simple flip book-style animation &#8220;reel&#8221; depicting slightly different images of the ball, we give the impression that the ball is rolling across the screen. In Glimmr Canvas Animation code, this would look like this:</p>
<p style="color:blue;font-family:Tahoma;">animate the roll track as a motion animation targeting the ball and ending at {300, 100} at 24 fps with duration of 12 frames;<br />
animate the spin track as a reel animation targeting the ball at 24 fps with duration of 12 frames, cycling.</p>
<p>GCA includes a number of presets like this that make even complex animations a matter of one or two lines of code, including motion, reel, zooming, flickering, and more. Presets can be applied to any of the display properties that Glimmr provides, and there is support for <a href="http://en.wikipedia.org/wiki/Inbetweening">tweening</a> using a number of different easing equations (authors can also add their own). You can also create completely custom animations that do whatever you like.</p>
<h3>The Demo</h3>
<p>Let&#8217;s move on to the good stuff. For this <a href="http://dl.dropbox.com/u/947038/Glimmr%20Animation%20Demos/Demo%201%20-%20Maps%20of%20Murder.gblorb">first demo</a>, I&#8217;ve chosen to highlight user interface animation. The game presents four thumbnail versions of the map illustrations from <a href="http://www.mysteryscenemag.com/index.php?option=com_content&amp;view=article&amp;id=92:dell-map-back-mysteries-they-dont-make-em-like-that-anymore&amp;catid=20:articles">Dell Map-Back murder mysteries</a> in a grid. Click on any one of them to see it enlarged; we use two animation tracks, scaling the image to full size (using an easing effect) while moving it to the center of the window. Click the cover again to return it to the original thumbnail size and location; the return movement is independent of the enlargement, and uses another two tracks. In fact, if while you have one cover enlarged and you click on another, all four tracks will fire simultaneously, so that one cover will zoom out while the other zooms in.</p>
<p>All of this UI behavior is handled in a single short &#8220;carry out&#8221; rule. Type SOURCE CODE in the demo file to see the rule.</p>
<p>Hope you enjoy the demo. The second in the series should be along in a week or so.</p>
<p><a href="http://dl.dropbox.com/u/947038/Glimmr%20Animation%20Demos/Demo%201%20-%20Maps%20of%20Murder.gblorb">Download the demo file.</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/glimmr.wordpress.com/400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/glimmr.wordpress.com/400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/glimmr.wordpress.com/400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/glimmr.wordpress.com/400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/glimmr.wordpress.com/400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/glimmr.wordpress.com/400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/glimmr.wordpress.com/400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/glimmr.wordpress.com/400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/glimmr.wordpress.com/400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/glimmr.wordpress.com/400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/glimmr.wordpress.com/400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/glimmr.wordpress.com/400/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/glimmr.wordpress.com/400/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/glimmr.wordpress.com/400/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=400&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://glimmr.wordpress.com/2011/06/05/glimmr-animation-series-1/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2fca70b2e1e93000f7d0532f5e1d4bf1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">glimmr</media:title>
		</media:content>

		<media:content url="http://glimmr.files.wordpress.com/2011/06/stacked-animation-tracks.png" medium="image">
			<media:title type="html">Stacked Animation Tracks</media:title>
		</media:content>
	</item>
		<item>
		<title>How-To: Make an Analog Clock with Sweep Second Hand using Glimmr</title>
		<link>http://glimmr.wordpress.com/2011/02/06/how-to-make-an-analog-clock-with-sweep-second-hand/</link>
		<comments>http://glimmr.wordpress.com/2011/02/06/how-to-make-an-analog-clock-with-sweep-second-hand/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 00:05:41 +0000</pubDate>
		<dc:creator>Erik Temple</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Glimmr]]></category>
		<category><![CDATA[interactive fiction]]></category>

		<guid isPermaLink="false">http://glimmr.wordpress.com/?p=378</guid>
		<description><![CDATA[Buried in Glimmr Drawing Commands, the bedrock Glimmr extension responsible for drawing images directly to the screen, is a set of commands for drawing lines using an angle plus a distance. This allows us to, for example, specify a line by saying &#8220;draw a line 20 pixels long from (0,0) on a heading of 30°.&#8221; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=378&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://glimmr.files.wordpress.com/2011/02/clock-screenshot.png"><img class="alignright size-full wp-image-382" title="Clock screenshot" src="http://glimmr.files.wordpress.com/2011/02/clock-screenshot.png?w=540" alt="Image of clock face created by this how-to"   /></a>Buried in <a href="http://inform7.com/extensions/Erik%20Temple/Glimmr%20Drawing%20Commands/index.html">Glimmr Drawing Commands</a>, the bedrock <a title="Glimmr released" href="http://glimmr.wordpress.com/2010/08/15/glimmr-released/">Glimmr</a> extension responsible for drawing images directly to the screen, is a set of commands for drawing lines using an angle plus a distance. This allows us to, for example, specify a line by saying &#8220;draw a line 20 pixels long from (0,0) on a heading of 30°.&#8221; I personally haven&#8217;t made much of use of this feature; I just thought that it might be useful given the emphasis of IF on compass directions&#8211;north being 0°, east 90°, and so on&#8211;and decided to throw it in. Something else this kind of thing is good for, though, is clocks. Since I&#8217;ve been <a title="IF Gameplay Experiment: Experiential Movement" href="http://glimmr.wordpress.com/2011/01/27/if-gameplay-experiment-experiential-movement/">thinking a little bit about timed events</a> in IF lately, I thought I&#8217;d throw together a quick demo of an an analog clock face with sweep second hand (that&#8217;s it above). Downloads:</p>
<p><a title="The demo as a gblorb file" href="http://dl.dropbox.com/u/947038/Glimmr%20Analog%20Clock/Glimmr%20Analog%20Clock.gblorb">Demo game file</a><br />
<a href="http://dl.dropbox.com/u/947038/Glimmr%20Analog%20Clock/Glimmr%20Analog%20Clock%20source.txt">Source code</a> (extensively commented)</p>
<p><a href="http://eblong.com/zarf/glulx/">Glulx</a> games don&#8217;t yet have access to the system clock (though <a href="https://github.com/erkyrath/glk-dev/wiki/Glk-072-draft-spec-changes">this is in progress</a>), but of course an analog clock in an IF game will most often need to show game time rather than real-world time. <a href="http://inform7.com/">Inform 7</a> tracks game time very simply by default&#8211;1 turn equals 1 minute&#8211;but this can be customized, and there are <a href="http://inform7.com/extensions/Eric%20Eve/Variable%20Time%20Control/index.html">extensions</a> to help. This analog clock demo, though, doesn&#8217;t change anything in Inform&#8217;s default handling. Instead, it overlays real-time on top of game time; in other words, each turn takes one minute, unless you spend one minute thinking about, in which case 2 minutes will pass. This probably isn&#8217;t a solution that would be appropriate for most games, but it&#8217;s convenient for demonstration purposes!<span id="more-378"></span></p>
<p>Why does the clock look like it&#8217;s from the early 1990s? Well, Glimmr draws lines by coloring each pixel individually. This can be slow enough as it (depending on a variety of factors), and I haven&#8217;t attempted to incorporate <a href="http://en.wikipedia.org/wiki/Anti-alias">antialiasing</a> to soften the edges of the lines. Once support for Glulx floating point math is added to Inform, I may experiment to see whether <a href="http://en.wikipedia.org/wiki/Xiaolin_Wu's_line_algorithm">antialiased line-drawing</a> is feasible. Until then, the only way to get nice, smooth lines will be to use individual images for each tick of each hand of the clock (Glulx doesn&#8217;t support dynamic rotation of PNG images). For a clock like this one, this would require at least 180 individual PNG images: 60 for each hand, all the way around the dial; optimally, though, the hour hand should have even more, since there ought to be 30 hour-hand positions (one for each integer degree) between <em>each numeral</em> on the dial. Building a clock out of 181 images is certainly doable, and on the programming side it&#8217;s not very hard. But unless you have a method of automating the process of creating the images in the first place, that part sounds to me like an exercise in crushing boredom&#8230;</p>
<h3>Creating the Clock</h3>
<p>While the basic drawing commands are implemented, as mentioned above, in the Drawing Commands extension, the window-managing <a href="http://inform7.com/extensions/Erik%20Temple/Glimmr%20Canvas-Based%20Drawing/index.html">Glimmr Canvas-Based Drawing</a> extension does not have a corresponding graphic element to handle angle+distance lines. Graphic elements (g-elements) are objects that control drawing to a graphics window: specify a few properties for the element (such as the coordinates where it should be drawn), and it will be automatically scaled to fit and drawn to the window. So, the first order of business was to create a type of g-element that would have all the properties of lines (such as line-weight and color), but also have an angle and a length that could be specified. This required just a few lines of code; see the source code for the demo to see how it was done (link above).</p>
<p>Once this new &#8220;ray primitive&#8221; type was defined, the next step was to define three rays, one for each hand; differing lengths, line-weights, and colors serve to distinguish the hands from one another, like so:</p>
<div style="color:#333399;background-color:cornsilk;margin-bottom:20px;">
<pre style="font:11px/16px Consolas,Monaco,'Courier New',Courier,monospace;color:#333399;background-color:cornsilk;margin:10px 0 0;padding:5px;"><strong>Table of Hands</strong></pre>
<table style="font:11px/16px Consolas,Monaco,'Courier New',Courier,monospace;margin:0 0 0 5px;">
<tbody>
<tr style="font-weight:bold;">
<td style="border:1px solid #EEEEEE;padding:2px;">clock hand</td>
<td style="border:1px solid #EEEEEE;padding:2px;">ray-length</td>
<td style="border:1px solid #EEEEEE;padding:2px;">tint</td>
<td style="border:1px solid #EEEEEE;padding:2px;">line-weight</td>
<td style="border:1px solid #EEEEEE;padding:2px;">display-layer</td>
</tr>
<tr>
<td style="border:1px solid #EEEEEE;padding:2px;">an hour hand</td>
<td style="border:1px solid #EEEEEE;padding:2px;">23</td>
<td style="border:1px solid #EEEEEE;padding:2px;">g-Black</td>
<td style="border:1px solid #EEEEEE;padding:2px;">2</td>
<td style="border:1px solid #EEEEEE;padding:2px;">2</td>
</tr>
<tr>
<td style="border:1px solid #EEEEEE;padding:2px;">a minute hand</td>
<td style="border:1px solid #EEEEEE;padding:2px;">30</td>
<td style="border:1px solid #EEEEEE;padding:2px;">g-Black</td>
<td style="border:1px solid #EEEEEE;padding:2px;">2</td>
<td style="border:1px solid #EEEEEE;padding:2px;">2</td>
</tr>
<tr>
<td style="border:1px solid #EEEEEE;padding:2px;">a second hand</td>
<td style="border:1px solid #EEEEEE;padding:2px;">38</td>
<td style="border:1px solid #EEEEEE;padding:2px;">g-Red</td>
<td style="border:1px solid #EEEEEE;padding:2px;">1</td>
<td style="border:1px solid #EEEEEE;padding:2px;">3</td>
</tr>
</tbody>
</table>
</div>
<div id="attachment_390" class="wp-caption alignright" style="width: 107px"><a href="http://glimmr.files.wordpress.com/2011/02/clock2.png"><img class="size-full wp-image-390" title="Clock face PNG image" src="http://glimmr.files.wordpress.com/2011/02/clock2.png?w=540" alt="The clock face base image"   /></a><p class="wp-caption-text">The clock face base image</p></div>
<p>Note the display-layer property: elements on lower layers are drawn first, so this indicates that the hour and minute hands are drawn on layer 2, with the second hand superimposed on them (layer 3). Layer 1 is the clock face itself, which is simply defined by a PNG image, since it doesn&#8217;t need to change. (I made it without antialiasing so that it would match the look of the hands.)</p>
<p>The elements will be displayed with these parameters in the window whenever it is redrawn without any further work from the author. To update the clock is thus pretty simple: we just need to set each hand to the appropriate angle for the time we need to display. Each digit on the clock is separated by 30 degrees (360° ÷ 12 digits = 30°), and each minute/second is separated by 6° (360° ÷ 60). Knowing this, it&#8217;s not difficult to write a routine to update the hands:</p>
<pre style="font:11px/16px Consolas,Monaco,'Courier New',Courier,monospace;color:#333399;background-color:cornsilk;margin:10px 10px 20px;padding:10px;">To update clock:
    let H be the hours part of the time of day;
    let M be the minutes part of the time of day;
    if H &gt; 12, let H be H - 12;
    let Hh be H * 30;
    let Hh be Hh + (M / 2);
    let Mh be M * 6;
    now the angle of the hour hand is Hh;
    now the angle of the minute hand is Mh;
    now the angle of the second hand is seconds passed * 6;
    follow the window-drawing rules for the graphics-window.</pre>
<p>Note that we advance the hour hand in 1° increments, roughly once every two minutes, to reflect the hour hand&#8217;s geared relationship to the movement of the minute hand.</p>
<p>Finally, because Inform&#8217;s implementation of the time of day doesn&#8217;t include seconds, we need to advance the &#8220;seconds passed&#8221; variable used above according to a 1 second (1000 millisecond) timer. For each tick of the timer, we increment the seconds count, and when it moves above 60, reset it to 1 while also advancing the time of day by one minute. To see the sweep second hand moving we also need to update the clock every second. This routine runs every time the timer ticks and takes care of all of these:</p>
<pre style="font:11px/16px Consolas,Monaco,'Courier New',Courier,monospace;color:#333399;background-color:cornsilk;margin:10px 10px 20px;padding:10px;">Glulx timed activity rule (this is the seconds increment rule):
	increment seconds passed;
	if seconds passed &gt; 60:
		now the time of day is the time of day + 1 minute;
		now seconds passed is 1;
		update the status line;
	update clock.</pre>
<p>And that&#8217;s really all there is to it. One thing that might be of interest is that, in the demo, the clock&#8217;s hands are <em>both</em> objects in the world and graphic elements; the player can see and refer to them even though their primary purpose is to bundle properties for drawing. The demo also implements a few commands for messing around with the clock. Please see the demo&#8217;s source code for all of the details (linked at the top of the post).</p>
<p><em><strong>NOTE:</strong> The <a href="http://dl.dropbox.com/u/947038/Glimmr%20Analog%20Clock/Glimmr%20Analog%20Clock.gblorb">demo game file</a> is a <a href="http://en.wikipedia.org/wiki/Blorb">gblorb</a> file. To play it, you will need a Glulx interpreter, such as Gargoyle, Windows Glulxe, or Zoom (see links at right). Mac users: a long-standing bug in Zoom screws up the colors; <a href="http://code.google.com/p/garglk/downloads/list">Gargoyle</a> is preferred.</em></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/glimmr.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/glimmr.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/glimmr.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/glimmr.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/glimmr.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/glimmr.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/glimmr.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/glimmr.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/glimmr.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/glimmr.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/glimmr.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/glimmr.wordpress.com/378/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/glimmr.wordpress.com/378/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/glimmr.wordpress.com/378/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=glimmr.wordpress.com&amp;blog=10163095&amp;post=378&amp;subd=glimmr&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://glimmr.wordpress.com/2011/02/06/how-to-make-an-analog-clock-with-sweep-second-hand/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2fca70b2e1e93000f7d0532f5e1d4bf1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">glimmr</media:title>
		</media:content>

		<media:content url="http://glimmr.files.wordpress.com/2011/02/clock-screenshot.png" medium="image">
			<media:title type="html">Clock screenshot</media:title>
		</media:content>

		<media:content url="http://glimmr.files.wordpress.com/2011/02/clock2.png" medium="image">
			<media:title type="html">Clock face PNG image</media:title>
		</media:content>
	</item>
	</channel>
</rss>
