<?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>Tools - Undo Restart Restore</title>
	<atom:link href="/blog/category/tools/feed/" rel="self" type="application/rss+xml" />
	<link>/blog</link>
	<description>Interactive Fiction by Juhana Leinonen</description>
	<lastBuildDate>Thu, 24 Nov 2016 22:05:16 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.7.1</generator>
	<item>
		<title>Hugo online</title>
		<link>/blog/2015/04/hugo-online/</link>
		
		<dc:creator><![CDATA[Juhana]]></dc:creator>
		<pubDate>Thu, 02 Apr 2015 11:33:53 +0000</pubDate>
				<category><![CDATA[Hugo]]></category>
		<category><![CDATA[Tools]]></category>
		<guid isPermaLink="false">/blog/?p=942</guid>

					<description><![CDATA[Note: this interpreter has been superceded by HugoJS which is located at textadventures.online. The links to the old interpreter automatically redirect to the new one. I've set up an online interpreter for Hugo games. It's basically the same tech used by Internet Archive's online MS-DOS games collection: a JavaScript version of DOSbox running the DOS <a href="/blog/2015/04/hugo-online/" class="more-link">Continue reading <span class="screen-reader-text">Hugo online</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p><em><strong>Note: this interpreter has been superceded by <a href="https://github.com/juhana/hugojs">HugoJS</a> which is located at <a href="http://textadventures.online/">textadventures.online</a>. The links to the old interpreter automatically redirect to the new one.</strong></em></p>
<p>I've set up an online interpreter for Hugo games. It's basically the same tech used by Internet Archive's <a href="https://archive.org/details/softwarelibrary_msdos_games">online MS-DOS games collection</a>: a JavaScript version of DOSbox running the DOS version of the text-only Hugo interpreter.</p>
<p><a href="http://nitku.net/if/hugo/"><img loading="lazy" src="/blog/blogcontent/uploads/2015/04/spur.png" alt="Hugo online interpreter screenshot" width="659" height="417" class="aligncenter size-full wp-image-948" srcset="/blog/blogcontent/uploads/2015/04/spur.png 659w, /blog/blogcontent/uploads/2015/04/spur-150x95.png 150w, /blog/blogcontent/uploads/2015/04/spur-300x190.png 300w, /blog/blogcontent/uploads/2015/04/spur-520x329.png 520w" sizes="(max-width: 659px) 100vw, 659px" /></a></p>
<p>The major missing feature is the ability to save and restore games – or, more accurately, the saves aren't persistent between sessions. You can save and restore while playing the game but as soon as you close the browser window the saves are lost. <a href="https://github.com/dreamlayers/em-dosbox/issues/4">There seem to be a couple of techniques available</a> that might help so this is probably going to get fixed later.</p>
<p>The interpreter is at <strong><a href="http://nitku.net/if/hugo/">nitku.net/if/hugo</a></strong> with a small library of games. For now you can only play the games that are pre-compiled for the interpreter. Later I'll add a feature to upload your own story files.</p>
<hr>
<p>For people interested in Hugo innards or stuck with Hugo games I've also made a .hex story file parser that can extract just about anything there is to extract from a Hugo story file: Dictionary, text bank, objects, grammar, ... It can even output the Hugo bytecode in a (slightly more) readable format. The .hex parser is at <a href="http://nitku.net/if/hugo/hexparser/">nitku.net/if/hugo/hexparser</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Random IF reviews</title>
		<link>/blog/2012/10/random-if-reviews/</link>
		
		<dc:creator><![CDATA[Juhana]]></dc:creator>
		<pubDate>Sat, 27 Oct 2012 18:39:08 +0000</pubDate>
				<category><![CDATA[Tools]]></category>
		<guid isPermaLink="false">/blog/?p=620</guid>

					<description><![CDATA[After updating the IF Name Generator I went ahead and made an IF Review Generator that uses the name generator to make a title and mashes together sentences from IFDB reviews to create a new one. Just like the random names the reviews are mostly a jumbled mess, but occasionally it spits out a real <a href="/blog/2012/10/random-if-reviews/" class="more-link">Continue reading <span class="screen-reader-text">Random IF reviews</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>After <a href="/blog/2012/10/name-generator-updated/">updating the IF Name Generator</a> I went ahead and made an <a href="http://nitku.net/if/reviewgenerator">IF Review Generator</a> that uses the name generator to make a title and mashes together sentences from IFDB reviews to create a new one. Just like the random names the reviews are mostly a jumbled mess, but occasionally it spits out a real gem.</p>
<p>The generated reviews are saved and can be retrieved with the same URL for sharing the best ones.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Name generator updated</title>
		<link>/blog/2012/10/name-generator-updated/</link>
					<comments>/blog/2012/10/name-generator-updated/#comments</comments>
		
		<dc:creator><![CDATA[Juhana]]></dc:creator>
		<pubDate>Fri, 26 Oct 2012 12:23:14 +0000</pubDate>
				<category><![CDATA[Tools]]></category>
		<guid isPermaLink="false">/blog/?p=617</guid>

					<description><![CDATA[The IF name generator has been updated with new names (the previous list was from 2008) and it has an IFComp 2012 edition!]]></description>
										<content:encoded><![CDATA[<p>The <a href="http://nitku.net/if/namegenerator">IF name generator</a> has been updated with new names (the previous list was from 2008) and it has an <a href="http://nitku.net/if/namegenerator/index.php?ifcomp=2012">IFComp 2012 edition</a>!</p>
]]></content:encoded>
					
					<wfw:commentRss>/blog/2012/10/name-generator-updated/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>IF Recorder version 3</title>
		<link>/blog/2011/11/if-recorder-version-3/</link>
		
		<dc:creator><![CDATA[Juhana]]></dc:creator>
		<pubDate>Tue, 08 Nov 2011 21:14:57 +0000</pubDate>
				<category><![CDATA[Inform 7]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Undum]]></category>
		<guid isPermaLink="false">/blog/?p=593</guid>

					<description><![CDATA[The tool formerly known as "Transcript recording plugin for Parchment" has been successfully used as a betatester transcript recorder with at least one game, and even in the currently running IFComp. Thanks to liberal version numbering scheme it has now reached version 3 and has been renamed IF Recorder. Here are the major new features: <a href="/blog/2011/11/if-recorder-version-3/" class="more-link">Continue reading <span class="screen-reader-text">IF Recorder version 3</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>The tool formerly known as "<a href="/blog/2011/05/transcript-recording-plugin-for-parchment-released/">Transcript recording plugin for Parchment</a>" has been successfully used as a betatester transcript recorder with at least one game, and even in the currently running IFComp. Thanks to liberal version numbering scheme it has now reached version 3 and has been renamed <em>IF Recorder</em>.</p>
<p>Here are the major new features:</p>
<ul>
<li><strong>Works with <a href="http://undum.com/">Undum</a>.</strong> Now someone might wonder why anyone would want to record hypertext fiction stories, but even if there's less need to check what kind of input readers give, other reasons still apply: you might want to get statistical data on which choices the readers make, or see if the readers give up at some certain point in the story, or even find out if some of the choices just don't work as they should.
</li>
<li><strong>Web interpreter template for Inform 7.</strong> There's a ready-made Inform 7 template to use with the <a href="http://inform7.com/learn/man/doc394.html">"Release along with an interpreter"</a> option. This makes it easier to start using the recorder although you still have to set up the database and the server scripts.
</li>
</ul>
<p>The project's new headquarters are at <a href="https://github.com/juhana/if-recorder">Github</a> along with the <a href="https://github.com/juhana/if-recorder/wiki/Installation">instructions</a> and <a href="https://github.com/juhana/if-recorder/downloads">downloads</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Transcript recording plugin for Parchment released</title>
		<link>/blog/2011/05/transcript-recording-plugin-for-parchment-released/</link>
					<comments>/blog/2011/05/transcript-recording-plugin-for-parchment-released/#comments</comments>
		
		<dc:creator><![CDATA[Juhana]]></dc:creator>
		<pubDate>Sat, 14 May 2011 19:15:13 +0000</pubDate>
				<category><![CDATA[Statistics]]></category>
		<category><![CDATA[Tools]]></category>
		<guid isPermaLink="false">/blog/?p=569</guid>

					<description><![CDATA[As promised, the transcript recording plugin for Parchment has now been published. As the player is playing the game, the plugin sends the transcript to the server where it's saved to a database. The author can then later view the saved transcripts or use the information in the database to calculate statistics. The plugin saves <a href="/blog/2011/05/transcript-recording-plugin-for-parchment-released/" class="more-link">Continue reading <span class="screen-reader-text">Transcript recording plugin for Parchment released</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>As promised, the transcript recording plugin for Parchment has now been published. As the player is playing the game, the plugin sends the transcript to the server where it's saved to a database. The author can then later view the saved transcripts or use the information in the database to calculate <a href="/blog/2011/01/starborn-play-statistics/">statistics</a>.</p>
<p>The plugin saves more than just plain text: it preserves text formatting and saves status lines as well, so the transcripts look (almost) the same as the actual game. (See <a href="http://transcripts.game-testing.org/test/tools/viewer/transcript.php?session=1305221845371128&statusline=inline">this example of Bronze</a> with status lines, colors and text formatting. Note that Parchment uses small caps in place of bold text.) The saved transcripts can be viewed with or without the status lines. In addition when the game waits for a single keypress, non-alphabet characters like enter, space and arrow keys are marked in the transcript.</p>
<p>There's a <a href="http://transcripts.game-testing.org/test/">live demo</a> with a <a href="http://transcripts.game-testing.org/test/tools/viewer/">transcript viewer</a> available. Games played in the demo installation can be seen in the viewer. </p>
<p>The plugin and accompanying tools can be downloaded from <a href="http://code.google.com/p/parchment-transcript/downloads/list">Google Code</a> where you'll also find <a href="http://code.google.com/p/parchment-transcript/wiki/Installation">installation instructions</a>. Only Z-machine is supported at the moment, Glulx support will be added later.</p>
]]></content:encoded>
					
					<wfw:commentRss>/blog/2011/05/transcript-recording-plugin-for-parchment-released/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Collecting real life gameplay data with Parchment</title>
		<link>/blog/2010/06/collecting-real-life-gameplay-data-with-parchment/</link>
					<comments>/blog/2010/06/collecting-real-life-gameplay-data-with-parchment/#comments</comments>
		
		<dc:creator><![CDATA[Juhana]]></dc:creator>
		<pubDate>Thu, 24 Jun 2010 18:49:37 +0000</pubDate>
				<category><![CDATA[Statistics]]></category>
		<category><![CDATA[Tools]]></category>
		<guid isPermaLink="false">/blog/?p=332</guid>

					<description><![CDATA[There was a lot of talk during PAX East and elsewhere about collecting real life data from people playing IF. I'm proud to announce that I've hacked the Parchment web interpreter to do just this: it saves transcripts to the server every time a game is played. Try it out yourself: Click here to start <a href="/blog/2010/06/collecting-real-life-gameplay-data-with-parchment/" class="more-link">Continue reading <span class="screen-reader-text">Collecting real life gameplay data with Parchment</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>There was a lot of talk during <a href="/blog/2010/04/pax-east-vibes/">PAX East</a> and elsewhere about collecting real life data from people playing IF. I'm proud to announce that I've hacked the <a href="http://code.google.com/p/parchment/">Parchment</a> web interpreter to do just this: it saves transcripts to the server every time a game is played.</p>
<p>Try it out yourself: <a href="http://parchment.game-testing.org/demo/parchment.full.html?story=stories/yomomma.z8">Click here to start a game</a> and then open <a href="http://parchment.game-testing.org/demo/html/live.php">this page</a> to a new browser window. Enter a command in the game and see how the transcript in the live feed updates. (If you don't see your game in the live feed page, reload it. It shows the three latest games being played at the time the feed page was loaded.) </p>
<p>And then there's the beef: I've made a rudimentary <a href="http://parchment.game-testing.org/demo/html/stats.php">statistics page</a> that shows some interesting information using the collected data, including most used commands and average turn count and playtime.</p>
<p><span id="more-332"></span></p>
<p>The obvious use for this is of course collecting information on how people play the game and using that information to make improvements for the next release. You could also use this for closed beta-testing -- give the web address to your testers and Parchment saves the transcripts automatically. The testers don't have to remember to start the transcript or send it to the author.</p>
<h3>Statistics from other games</h3>
<p>First I want to stress that at the moment this is just a demo of a hack. It can and will behave strangely especially if the game bypasses the standard parser and takes input directly (menus etc.) That said, if you want to try other games than the sample game, you can use either http://parchment.game-testing.org/demo/parchment.full.html?story=xxx or http://parchment.game-testing.org/play/parchment.full.html?story=xxx (replace xxx with the full url of the game you want to play.) The difference is that the latter doesn't have the live transcript feed and only has the <a href="http://parchment.game-testing.org/play/html/stats.php">statistics page</a> (note a different address than what the demo site uses). You can't single out individual players from the statistics so there's no disclaimer notifying the player of the data collection (which might unnecessarily scare off some players.)</p>
<p>The statistics page collects information and displays the urls of all games played this way, so don't use this for trying out something you don't want the whole world to see.</p>
<h3>How it works</h3>
<p>I've added <a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29">AJAX</a> calls inside Parchment's UI code at appropriate places where it sends the player's command and the game's response to the server. On the server a PHP script receives the data and saves it into the database. This is all done behind the curtain so for the player the gameplay experience is exactly the same as with unmodified Parchment.</p>
<p>The statistics page collects some extra information about Inform 7's internal error message and library message codes. This requires some modifications to the game file itself. The Raising the Flag on Mount Yo Momma game used as the example has been modified to include this:</p>
<div class="inform">
<p>
Before printing a parser error:</p>
<div class="inform-indent">
	say <span class="inform-string">"#ERROR:[parser error code]#"</span>.
</div>
</p>
<p>
To decide which number is parser error code:</p>
<div class="inform-indent"> (- etype -);</div>
</p>
<p>
When play begins:</p>
<div class="inform-indent">change the command prompt to <span class="inform-string">"#LIBMSG:[library message number]#>[clear libmsgnumber]"</span>.</div>
</p>
<p>
To say clear libmsgnumber: change the library message number to 0.
</p>
<p>
When play begins:</p>
<div class="inform-indent">say <span class="inform-string">"#PARCHMENTWARNING: This is a special story file designed to work with a modified Parchment interpreter. Seeing this message means that you are using some other interpreter or a wrong version of Parchment to play this game. It's advisable that you download another version of this game, or you might see between normal text some control strings that are not supposed to be shown to the player.#"</span>.</div>
</p>
</div>
<p>That code shows the error codes and the library message ids after every turn in the prompt, for example #LIBMSG:40#>. When the modified Parchment sees these strings it saves the information in them and removes them from the output so that the player doesn't see them. Played on any other interpreter the game would of course display these, so the last line of code warns the player that they shouldn't be using this game file if they can see the control codes.</p>
<p>Unfortunately the error codes and library message codes aren't very reliable; some parser errors don't seem to have an error code and some library messages don't have an id. Most noticeably the "unknown verb" error doesn't have either, so it doesn't show in the statistics. I don't actually know what the codes really do, I just noticed they're there and used them; future development would include using custom codes for different situations in the game.</p>
<h3>Future plans</h3>
<ul>
<li>Test it more and fix bugs so that it could actually be reliably used.</li>
<li>Clean up and comment the code so that it could be packaged for people to install on their own servers. </li>
<li>Create a service where people could have saved transcripts and command statistics behind a password so that they could improve the game for later builds or use Parchment to save beta-testing transcripts.</li>
<li>Add more information and charts to the statistics page (suggestions welcome.)</li>
<li>Try to convince Parchment developers to include this functionality into the main build or provide hooks so that this could be added as a plugin. Right now I'm just modifying Parchment's code directly, so whenever Parchment is updated the files have to be edited by hand again. </li>
</ul>
<p>What would you like to see done with this?</p>
]]></content:encoded>
					
					<wfw:commentRss>/blog/2010/06/collecting-real-life-gameplay-data-with-parchment/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>IF Name Generator Comp 2009 Edition</title>
		<link>/blog/2009/10/if-name-generator-comp-2009-edition/</link>
					<comments>/blog/2009/10/if-name-generator-comp-2009-edition/#comments</comments>
		
		<dc:creator><![CDATA[Juhana]]></dc:creator>
		<pubDate>Sun, 11 Oct 2009 11:44:58 +0000</pubDate>
				<category><![CDATA[Tools]]></category>
		<guid isPermaLink="false">/blog/?p=97</guid>

					<description><![CDATA[Now for something completely useless but mildly entertaining. The IF Name Generator has been updated with the IFComp 2009 edition. If you want to see this year's comp titles horribly disfigured, this is the place to go. &#8594; IF Name Generator Comp 2009 edition Edit: Now featuring all IFComps beginning from 1995. Also, an option <a href="/blog/2009/10/if-name-generator-comp-2009-edition/" class="more-link">Continue reading <span class="screen-reader-text">IF Name Generator Comp 2009 Edition</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>Now for something completely useless but mildly entertaining. The <a href="http://nitku.net/if/namegenerator/">IF Name Generator</a> has been updated with the IFComp 2009 edition. If you want to see this year's comp titles horribly disfigured, this is the place to go.</p>
<p><strong><a href="http://nitku.net/if/namegenerator/index.php?ifcomp=2009">&rarr; IF Name Generator Comp 2009 edition</a></strong></p>
<p>Edit: Now featuring all IFComps beginning from 1995. Also, an option to generate the names <a href="http://nitku.net/if/namegenerator/index.php?ifcomp=all">using only IFComp titles</a>. Have fun! </p>
]]></content:encoded>
					
					<wfw:commentRss>/blog/2009/10/if-name-generator-comp-2009-edition/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
