tag:blogger.com,1999:blog-2442616538783198632024-03-05T01:51:39.489-06:00Not Dead HugoMusings on the future of the Hugo IF language standard library.Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.comBlogger142125tag:blogger.com,1999:blog-244261653878319863.post-16580240818933867952021-02-18T10:29:00.000-06:002021-02-18T10:29:39.891-06:00More NecromancyIn awesome news, Juhana Leinonen was able to convert my old Hugo By Example backups and give it <a href="https://hugoif.github.io/hugo-by-example/" target="_blank">a new presence on github</a>. Hugo By Example was a wiki created by Royce Odle for learning Hugo, but sadly, it has been unavailable for several years now. The things I learned while writing for it were largely responsible for the creation of Roodylib. Even as one of its more prolific contributors, back in the days where I actually wrote games (gasp!), there were certain pages I referred to all of the time. It's just great to have a resource where things like error message numbers and constant values (things that are not always covered to the full extent in the Hugo Book) are cleanly listed without having to dig through the Hugo library every time.<div><br /></div><div>Hugo By Example was last updated in 2013 so in the coming weeks, I'll be focusing my attention at correcting statements that are no longer true, fixing dead links, and updating it with all of the changes we have seen since then. I hope the site becomes as useful to someone else as the original was to me.</div><div><br /></div><div>Beyond that, we also have a new hub (also created by Juhana) for <a href="https://hugoif.github.io/" target="_blank">all things Hugo</a> collecting links to the current interpreters, repositories, and other resources that a Hugo user might need.</div><div><br /></div><div>Personally, I'm very excited about these things.</div>Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com0tag:blogger.com,1999:blog-244261653878319863.post-33592875402231514912020-08-29T09:07:00.000-05:002020-08-29T09:07:34.679-05:00>FOLLOW SO-AND-SO "Which way did he go?"<p> To be honest, returning to game design hasn't been going all that well, so recently, I thought I could distract myself by looking over an old Roodylib "to do" list to see if there was anything I still wanted to add.</p><p>The first thing that sounded appealing was trying to come up with a solution to Hugo's default handling of >FOLLOW, as a game seems kind of dumb when you have just seen a character leave a room and >FOLLOW responds with "Which way did he go?"</p><p>I wrote a system that relies on using CharMove to move your NPCs. The code takes note of the direction the NPC left in, and unless the NPC returns at some point, >FOLLOW will result in going in the same direction. There was no ultra-clean method that didn't involve replacing some routines, but this was the most elegant solution that I could come up with. Beyond including this code, authors would just need to remember to give their roaming NPCs the "last_dir" property that I have defined.</p><p><br /><script src="https://gist.github.com/roodyyogurt/06b059e27b8b3b43e26b1e010d592165.js"></script><br /></p><p>After writing this, I wanted to test it out in a game. I first tried "Guilty Bastards" because I incorrectly remembered being able to follow someone at some point (although it definitely has a character following <i>you</i>). I then tried "Spur," which I was reminded was actually the game that inspired this whole better-following thing in the first place, but I couldn't even use my code with it as it completely substitutes another character script routine for CharMove. I mean, sure, I could have rewritten it all so my code would still have worked, but in my sandbox version of "Spur", I had already written a >FOLLOW SO-AND-SO workaround anyway.</p><p>So I just had to test it with my own code, and hey, everything seems to be working fine. I'll probably just throw it in the "extensions" folder in my Roodylib distribution at some point.</p><p><br /></p><p><br /></p><p><br /></p><p><br /></p>Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com0tag:blogger.com,1999:blog-244261653878319863.post-72602782742944655282020-04-11T12:51:00.000-05:002021-02-16T10:04:54.201-06:004.2.1<br />
So, I was testing the latest Roodylib with Juhana Leinonen's <a href="http://hugo.caltrops.com/">HugoJS</a> interpreter, and it turned out that I had forgotten to incorporate some code from last fall which prevented Roodylib from causing games to hang. Anyhow, it's in there now.<br />
<br />
I also added an "opcode alternative" folder to the extensions so people can use Nikos Chantziaras' opcode-calling routine if they find Roodylib's less-direct method too confusing.<br />
<br />
Yes, I skipped from 4.1.9 to 4.2.1 because even though I thought an April 4.2.0 release would be funny, I forgot about that whole Hitler thing and thought best to avoid it altogether, ha.<br />
<br />
Roodylib 4.2.1 is <a href="https://drive.google.com/open?id=0B_4ZXs4Z_yoWOENKeXBraDg0VGM" target="_blank">here</a>. I've also updated the <a href="https://drive.google.com/open?id=0B_4ZXs4Z_yoWUlJBRzFCbTJsWHc" target="_blank">Hugo Notepad++ bundle</a> and the <a href="https://drive.google.com/open?id=0B_4ZXs4Z_yoWclhaOFFYQ3JScjg" target="_blank">Hugo Notepad++ add-on</a> (for preexisting Notepad++ installations).<br />
<br />Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com0tag:blogger.com,1999:blog-244261653878319863.post-11708989127331382622020-04-05T16:10:00.000-05:002020-04-05T16:12:14.741-05:00Back From the DeadSo, first off, my apologies to anyone who was looking forward to more posts here during the last several years. I was overwhelmed with some of the big changes I wanted to make to Roodylib to begin with, and then first my grandmother and then my father had health issues that took up all of my attention. Sadly, they both passed away last year, but I'm thankful for all of the time I was able to spend with them.<br />
<br />
I've had more time to get back to Roodylib in recent months, and I'm happy to be able to share the results. I've uploaded a new version of Roodylib <a href="https://drive.google.com/open?id=0B_4ZXs4Z_yoWOENKeXBraDg0VGM" target="_blank">here</a>. I've also updated the <a href="https://drive.google.com/open?id=0B_4ZXs4Z_yoWUlJBRzFCbTJsWHc" target="_blank">Hugo Notepad++ bundle</a> and the <a href="https://drive.google.com/open?id=0B_4ZXs4Z_yoWclhaOFFYQ3JScjg" target="_blank">Hugo Notepad++ add-on</a> (for preexisting Notepad++ installations).<br />
<br />
As issue-tracking and version-numbering aren't really my forte, I have bumped this new release up to Roodylib 4.1.9, as it's basically an alpha I'd like to get out into the open (and my juvenile sense of humor thought it would be stupidly funny to put out a final 4.2.0 release later this month). I've run it through a bunch of games with pretty much no issues except for changing how files are included, but one never can tell with these things.<br />
<br />
Changes in this new release:<br />
<br />
<ul>
<li>Right after the last official release, I noticed that Roodylib didn't handle multiple AGAIN/Gs in multi-command input. Originally, I thought it was something <i>I</i> broke, but it seems that Hugo's library never handled it quite like I would want. Anyhow, that's working now.</li>
<li>I moved whatever I could back to extensions for overall better code-readability for both Roodylib and the extensions themselves. As much as I have loved the simplicity of just adding a flag to include functionality in my games, I decided that I have to keep future authors in mind so it's easier for them to see how each system works. One side effect of this is that certain routines had to be broken up even further, so this new version of Roodylib grows in routine declaration despite being pared down in size.</li>
<li>Similarly, I redesigned some of the Hugofix stuff so extensions can easily add more debugging options without having to replace the entirety of some Hugofix routines.</li>
<li>I added some pronoun-choosing helper routines so games seem smarter.</li>
<li>Opcode functionality should be up to date and working on all existing opcode interpreters.</li>
<li>Improved some attachables stuff.</li>
</ul>
<div>
I didn't go all-out crazy making the documentation as perfect as possible, but a lot of this is covered in more detail in the Roodylib documentation.</div>
<div>
<br /></div>
<div>
There has been some other exciting Hugo news in recent months:</div>
<div>
<ul>
<li>Juhana Leinonen released <a href="https://borogove.app/" target="_blank">Borogove</a>, which allows people to write Hugo games online (among several other types of game)!</li>
<li>Tristano Ajmone put <a href="https://tajmone.github.io/hugo-book/" target="_blank">The Hugo Book</a> online. With Kent's permission, updates and fixes have been made, making it the most accurate version of the book available.</li>
<li>Steps have been made to centralize the Hugo code base, and discussion of Hugo's future is underway.</li>
</ul>
<div>
So yes, exciting times.</div>
</div>
<div>
<br /></div>
<div>
Anyhow, to warn you, I don't really see myself updating Roodylib or this blog in the future with the same frequency as I did in years past. While nothing is ever perfect, this version is basically the culmination of years-spanning intentions, and now that I've reached this point, it's likely that I'll move on to something else- whether that is back to game-writing or something else entirely, we shall see.</div>
<div>
<br /></div>
<div>
<br /></div>
Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com0tag:blogger.com,1999:blog-244261653878319863.post-3957060226716178132017-03-26T16:18:00.001-05:002017-03-26T16:18:37.488-05:00progress reportIn recent months, I've seen Hugo mentioned in some unexpected places, and Dannii Willis is working on a glk interface Hugo web interpreter (to which I say, the more the merrier!). The downside of this is that it has made me more frustrated with the ways Roodylib might be unaccommodating to beginners. I've decided against my previous "throw it all in" philosophy for Roodylib and have been moving whatever code I can to extensions, and taking out code I'm not 100% satisfied with altogether. I just want the heart of Roodylib as simple and readable as possible.<br />
<br />
Unfortunately, this calls for even more updating to the documentation, so that'll be yet another process. As much as I'd like to get a new Roodylib out the door, the interpreter opcode side of things isn't as hammered out as I'd like it to be, either, so it'll probably be some time yet.<br />
<br />
Just to make this post <i>fun</i>, I thought I'd share some Hugo games hard-compiled with the HugoJS behavior that <i>should </i>work by default once the opcode stuff is all working right.<br />
<br />
The first game is "The Hugo Clock" by Jason McWright. Written for a Hugo minicomp we held a handful of years ago, it's a good example of a game that, despite lacking deep narrative machinations, hits that sweet spot of just being fun to poke and prod around with: <a href="http://hugo.caltrops.com/play/?story=http%3A%2F%2Froody.gerynarsabode.org%2Fgames%2Fhugojs%2Fclock.hex" target="_blank">The Hugo Clock</a><br />
<br />
The second game, "ScepterQuest", was originally written with Hugo 1.2, back in Hugo's DOS-only days. I ported it myself as a coding exercise some years ago (and because I find the game very silly and funny), but I intentionally never uploaded it to the IF Archive. Still, check it out, and if you like it, go ahead and break out DOSbox and try out the original: <a href="http://hugo.caltrops.com/play/?story=http%3A%2F%2Froody.gerynarsabode.org%2Fgames%2Fhugojs%2Fsceptrequest.hex" target="_blank">SceptreQuest</a><br />
<br />
In other IF news:<br />
<br />
<ul>
<li>Bob Bates' <a href="https://www.kickstarter.com/projects/1575848200/thaumistry-in-charms-way-a-new-comedy-text-adventu/" target="_blank">Thaumistry: In Charm's Way</a> hit its kickstarter goal. People can still donate through PayPal to hit the stretch goals.</li>
<li>Jesse McGrew released version 0.8 of his <a href="http://vaporwareif.blogspot.com/2017/03/zilf-08-released.html" target="_blank">ZILF</a> compiler. I'm well overdue to post to my other blog, <a href="https://zilcrazy.blogspot.com/" target="_blank">ZIL Crazy After All These Years</a>, but I'm really happy with how ZILF is coming along.</li>
<li>Andrew Plotkin and Chris Spiegel have been <a href="http://blog.iftechfoundation.org/2017-03-23-seeking-volunteers-for-gargoyle.html" target="_blank">looking</a> for official platform builders for the Gargoyle interpreter, and any steps toward more timely updates of one of the most popular offline IF interpreters are greatly appreciated!</li>
<li>The <a href="http://springthing.net/2017/" target="_blank">2017 Spring Thing</a> competition is just about to start. I'm so glad that Aaron Reed has kept it running all these years.</li>
<li>One of my favorite videogame publishers, Devolver Digital, released a compilation of text adventures from a game company called No Code. It's called <a href="http://store.steampowered.com/app/558420/" target="_blank">Stories Untold</a>. Unfortunately, even with my settings set way low, it runs too slowly on my computer (I'm not <i>so </i>nostalgic for early 80s text adventures that I want to bring back waiting minutes between commands) but I look forward to trying it again if I ever get a nicer computer.</li>
</ul>
<div>
Apologies to all of the cool IF news things I am missing!</div>
Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com9tag:blogger.com,1999:blog-244261653878319863.post-69221269374590129142017-01-25T16:18:00.001-06:002017-01-25T16:29:15.293-06:00down the rabbit hole of parsingI've been wanting to write an update post just to assure those that care that I <i>have </i>been working on Roodylib stuff, but it's been hard to pull the trigger as I imagine parsing quirks isn't very interesting to most people. Then again, if I knew of some blog that was one author's exploration of parser theory or battles against an existing parser, I'd probably read it. Just the same, anyone who doesn't care can skip down to the "In other news" section below.<br />
<br />
So, what with the release of <a href="http://textadventures.online/" target="_blank">HugoJS</a>, I really want the next version of Roodylib to be as flawless as possible, both for the possible re-release of older games (so they operate best in all kinds of interpreters and make use of Roodylib's accessibility options) and for future games. To this end, I've been making "recordings" (*) of games with available source and testing the playback against both the original and Roodylib-compiled version and then checking for errors.<br />
<br />
( * In several IF systems, typing "RECORD" in a game will begin a transcript that only writes commands to a file. Then, the next time you play the game, typing "PLAYBACK" will allow you to select the file. At this point, the game plays all of the commands from the recorded file, This is a great way to see how the same set of commands affects different versions of the same game.)<br />
<br />
Luckily, several of the games have available walkthroughs to make this easier, but it's still slow going; many of the games have random elements so I "normalize" the random number generator to make them predictable. Several of the games use a conversation system that handles choice entry through <b>GetInput</b> which isn't caught by recording/playback so I wrote a modification to the conversation system to allow making choices from the regular prompt.<br />
<br />
I had finished going through a couple games (and, in the process, found a couple Roodylib bugs) when I caught a conversation where Jesse McGew speculated about optimal <a href="http://ifwiki.org/index.php/ZILF" target="_blank">ZIL</a> behavior when it comes to disambiguation questions within multiple-command inputs.<br />
<br />
Say you have a command like this:<br />
<blockquote class="tr_bq">
>EXAMINE BOX. GET IT. DROP IT.</blockquote>
The issue was, if the game responds with "Which box did you mean, the cardboard box or the glass box?" and the player chooses one, should it then proceed to process the rest of the command? Inform <i>does</i> proceed, but making the player re-type the rest could be seen as a viable approach, as it <i>is</i> an error of sorts and every IF language is allowed its own expectations of how to handle such situations.<br />
<br />
This got me curious about how Hugo/Roodylib currently handled it. I found that if the player used the disambiguation system added by Roodylib (using "1", "former","2", "latter" and such to refer to listed options), it cleanly stopped processing the rest of the command, but if the player used the engine-based disambiguation system (typing in "glass" or "cardboard"), the rest of the word array got mangled and resulted in a "I didn't understand that." response.<br />
<br />
First, I added some hacky code so the engine-based disambiguation also exited cleanly, but then I decided that I preferred the "KEEP ON PROCESSIN'" behavior and modified both versions to do that.<br />
<br />
Unfortunately, this opened up another can of worms as I then noticed that the "G"/"AGAIN" code was somewhat broken. Fixing this took quite a while as I had to re-acquaint myself with all of the parsing code.<br />
<br />
Now, everything works again and, in fact, works better than it did before I started. The old code, borrowed from the original Hugo library, only restored the last command when "AGAIN" is used, so a multiple command input like >SHAKE CAN. G.. OPEN IT. would lose track of the rest of the command before it got to "OPEN IT". As in, when AGAIN is called, the <i>entirety</i> of the word array was replaced with just "SHAKE CAN". Now successive commands are not lost and are properly parsed.<br />
<br />
Now that I have it working, I plan to clean up the code a bit and maybe put in some hooks so authors can easily put in optional behavior. For instance, if an NPC is given a command that is an xverb ("save","undo","restore"), Roodylib intentionally gives the error "That doesn't make any sense." The previous Hugo behavior was just parsing it like all is well, likely leading to a "So-and-so ignores you." response. So, I'm sort of considering putting in some kind of hook so authors can re-direct it to some kind of "So-and-so says, 'Do what now?'" response if they'd like.<br />
<br />
As soon as I'm done with that, it's back to testing games, followed by more general code clean-up and documentation updates. Given that real life has been fairly hectic and will be for the foreseeable future, this will be a multiple month process.<br />
<br />
<h3>
In Other News</h3>
<div>
<a href="http://ifwiki.org/index.php/Hugor" target="_blank">Hugor's</a> <a href="http://ifwiki.org/index.php/Nikos_Chantziaras" title="Nikos Chantziaras">Nikos Chantziaras</a> is credited on the development team for a new <a href="http://tads.org/" target="_blank">TADS 3</a> game by Bob Bates (of Infocom and Legend Entertainment fame). "Thaumistry: In Charm's Way" is currently being funded on <a href="https://www.kickstarter.com/projects/1575848200/thaumistry-in-charms-way-a-new-comedy-text-adventu/" target="_blank">Kickstarter</a>. I was lucky enough to be in its first wave of alpha testers and found it to be quite a fun romp. I've been watching the kickstarter progress obsessively and am really looking forward to the finished product. I'm sure almost all readers of this blog have seen an announcement for it somewhere else, but I just wanted to throw my personal recommendation out there!</div>
Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com3tag:blogger.com,1999:blog-244261653878319863.post-70367863415739216322016-12-14T20:07:00.000-06:002016-12-14T20:07:02.194-06:00The 2016 Hugo Holiday NewsletterDecember offers an exciting challenge to finish or improve the projects one has worked on through the year, and it's a great time to look back on progress already made. It's actually been a pretty exciting year for Hugo! Let's recap!<br />
<br />
<ul>
<li><b>Nikos Chantziaras</b> has continued making improvements to the multi-platform <a href="http://ifwiki.org/index.php/Hugor" target="_blank">Hugor</a>. The opcode system he introduced in recent unofficial builds should make for a smoother player experience in the long run. Some of the logistics of the opcode system are still being worked out (see below), but we probably can expect to see a new official build released in the coming months.</li>
<li><b>Robb Sherwin's</b> work in progress,<i> <a href="http://www.cyberganked.com/" target="_blank">Cyberganked</a></i>, has been <a href="https://steamcommunity.com/sharedfiles/filedetails/?id=438139803" target="_blank">greenlit on Steam</a>. <i>Cyberganked </i>is an IF/RPG hybrid like nothing the world has seen before, taking inspiration from games such as<i> <a href="http://www.mobygames.com/game/wasteland" target="_blank">Wasteland</a></i> and<i> <a href="http://www.mobygames.com/game/tales-of-the-unknown-volume-i-the-bards-tale" target="_blank">Bard's Tale</a></i>. The secret word on the street is that Sherwin's next game may be a sequel to one of his earlier works, so anyone who would like to see any of these things come to fruition should get involved with the <i>Cyberganked</i> community and help make this thing happen!</li>
<li><b>Jizaboz</b> continues to work on his multimedia-enhanced North Korea simulator, <i>A Day In DRPK</i>. From what I've seen of the work in progress, I believe it's more than two-thirds complete and most likely will be released in 2017. You can check out the game's original demo <a href="http://retrolab.servebeer.com/lab/projects/if/dprk/" target="_blank">here</a> and check its progress <a href="http://jizaboz.blogspot.com/search/label/DPRK" target="_blank">here</a>.</li>
<li><b>Juhana Leinonen</b> accomplished the Herculean task of writing a Hugo interpreter in JavaScript. <a href="http://hugo.caltrops.com/" target="_blank">HugoJS</a> has a page where you can play any of a pre-selected list or use the link tab to play any .hex file from a URL. The interpreter itself is quite snazzy. Juhana had previously provided an Emscripten <a href="http://www.dosbox.com/" target="_blank">DOSbox</a> solution which used the Hugo DOS interpreter. HugoJS blows the old method away in speed, presentation, and ease-of-use on mobile devices. My limited experimentation also led me to believe it should work decently with screen readers.<br /><br />Juhana has been updating HugoJS with Nikos' Hugor opcodes, and we've been in the process of adding new ones. When all is said and done, Roodylib should work nicely with all existing and future opcode-enhanced interpreters. It may even have multimedia support at some point, too.</li>
<li><b>Kent Tessman</b>, author of Hugo, is busy updating and promoting his screen writing software, <a href="http://www.fadeinpro.com/" target="_blank">Fade In</a>. In recent years, it has been embraced by <a href="http://www.fadeinpro.com/page.pl?content=who" target="_blank">some of Hollywood's best screenwriters</a> (and many others more) for its ease of use and astounding list of <a href="http://www.fadeinpro.com/page.pl?content=features" target="_blank">features</a> despite being much cheaper than old "industry standard" solutions.</li>
</ul>
<div>
As for me, I'm working on updating Roodylib to incorporate the new opcodes and fixing some bugs. I hope to have another official release within the next month or two, at which point I'll re-release all of my games so people can see all of the new functionality.</div>
<br />
<br />Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com5tag:blogger.com,1999:blog-244261653878319863.post-567008393092575742016-09-07T17:34:00.000-05:002016-09-07T17:34:19.932-05:00roody labsMy latest bit of Hugo coding has been comprised of distracted yet productive meandering.<br />
<br />
* * *<br />
<br />
Roodylib takes several important Hugo library routines and breaks them up into several routines for the sake of readability and modification (I'd rather provide authors with a method to change just the important thing instead of having to switch out the entire 126 lines of FindObject). Of course, one side effect of this is that it greatly increases the starting number of routines in any given game. The Hugo default max limit of routines is 320. Now, this is a changeable, soft limit, but it worries me when a Roodylib game creeps up to that 320 limit; I don't want it to get to the point where my beginning advice to new authors includes how to raise the routine limit. They have enough things to take in at that point.<br />
<br />
<b>DescribePlace</b>, the routine responsible for room descriptions, was one that I split into several routines so authors had the ability to change the order in which things are listed. To combat the creeping-routine problem, I redesigned the routines as objects with one routine to execute them. It's actually been done for a while, but I didn't mention it because it's kind of a useless modification, all things considered, and the number of routines probably only bothers me.<br />
<br />
* * *<br />
<br />
I also modified the "shell" files included with Roodylib to automatically compile with the <i>-s </i>switch. This provides compilation statistics like number of objects, routines, etc. I always find this useful; I figure others will, too.<br />
<br />
* * *<br />
<br />
Sir Jiz has a lot of timers in his game- most of which he's been handling with the room <b>each_turn</b> property. I usually do this by keeping the number-of-turns-spent-in-room in the <b>misc</b> property so the <b>each_turn</b> property routine can have some "select self.misc" code and go from there. Long story short, Jiz was getting sick of reminding himself where the best place to set the <b>misc</b> value was. I figured, ah, yeah, I guess Roodylib could do something about that. So now there's a <b>RoomTurnCount</b> thing so nobody has to mess with <b>misc</b> anymore.<br />
<br />
<blockquote class="tr_bq">
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>select RoomTurnCount</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>case 0</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>"Runs as soon as player enters room."</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>case 1</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>"Runs after first turn."</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>case 2</blockquote>
<blockquote class="tr_bq">
<span class="Apple-tab-span" style="white-space: pre;"> </span>"And so on."</blockquote>
</blockquote>
<br />
Although maybe I should have pushed him towards using a daemon instead. Ah, well, always nice to have multiple ways to do things.<br />
<br />
* * *<br />
<br />
Some months ago, someone expressed interest in there being a Hugo Comp this year, so I tried to gauge interest from everybody at the joltcountry.com forums and throw some theme ideas around. I had been in the middle of playthrough of "Spellcasting 201: The Sorcerer's Appliance" so I figured a magic-themed comp would be fun. I even offered to throw together an extension for authors to use so they wouldn't have to write the magic system themselves.<br />
<br />
I started off by looking at Cardinal Teulbachs' (yes, back in the olden days, we used to have an IF community member named "Cardinal Teulbachs") take on a spellcasting system. His code strictly prohibited modification, though, so I was going to have to write my own thing by scratch (I don't always honor code licenses, but hey, this time I did).<br />
<br />
I think I came up with the base design for my system, but I decided I needed to refresh my memory on how spells worked in the Enchanter trilogy (how many memory slots the player has, if all spells can be memorized multiple times- stuff like that).<br />
<br />
The funny thing, though, is that I found myself super distracted by the fact that you could not read dropped scrolls in Teulbachs' sample game which was a departure from expected Infocom behavior. Just the same, it made some sense, and I decided it'd be nice to write an object class system for objects that had to be held to be read (like a pamphlet) while still allowing for ones that don't (like a billboard).<br />
<br />
More difficultly, I wanted to do this on the grammar level so all "You don't have that." messages didn't use up a turn. Truthfully, it's not easy to have varied behavior when it comes to held/unheld verbs. I knew that when I <i>did</i> get around to writing this system, I'd have to use my Roodylib "routine grammar helper" system.<br />
<br />
I finally got around to looking at this problem yesterday. It was one of those funny times where you return to an old problem a bit smarter and almost resent the obligation to improve your solution ("WHY CAN'T I JUST STAY STUPID FOREVER?").<br />
<br />
First, to help me design the readable object classes, I looked over some grammar classes I had made previously for containers that are emptied in different ways (those that had to be held vs those that don't and so forth). In my testing, though, the "empty" code wasn't working, and for a while there, I thought maybe I had broken <b>FindObject</b> somewhere along the way (and getting <b>FindObject</b> to do the things I already have it do was a scary, confusing journey so I wasn't looking forward to working on it again).<br />
<br />
It turned out that a call to <b>FindObject</b> from <b>AnythingTokenCheck</b> (which itself is called from within <b>FindObject</b>) should have used the "recurse" argument. Whew!<br />
<br />
I also decided that half of my original "routine grammar helper" code was unnecessary.<br />
<br />
But anyway, that's all working better now, although I might redesign the routine grammar helper again, possibly to use attributes instead of variable masking.<br />
<br />
And, oh yeah, if you were curious, no, I don't think the Hugo Comp is happening. That discussion fizzled out pretty quickly.<br />
<br />
* * *<br />
<br />
<b>STATUSTYPE </b>is a global variable that determines what kind of information is displayed in the upper right corner of the status window. One of the several options displays a game clock like in the game <i>Deadline</i>. Since the <b>HoursMinutes</b> routine used to print the time could also do military time, a while back, I added a <b>STATUSTYPE</b> value that provides a military time clock (like in <i>Border Zone</i>). It kind of bugged me that the code didn't have an easy way to switch between the military time with colon and without. While easy enough to provide a choice for the author, I really wanted it to be as unobtrusive as possible because, really, there's like no chance anyone is going to write a military time game again, and it'd just be embarrassing to show that I spent much time doing some sort of time-configuration system for a feature no one would ever use. I ended up with just going with a <b>#set NO_MILITARY_COLON </b>flag.<br />
<br />
* * *<br />
<br />
There are a couple other things, but I'm getting tired of writing. Anyway, probably will try to put out a Roodylib update within the next couple weeks and then maybe do a round of uploading-stuff-to-the-IF-archive. Then, maybe, write some IF? (gasp)Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com4tag:blogger.com,1999:blog-244261653878319863.post-5535567372083839652016-08-19T15:52:00.000-05:002016-08-19T15:52:15.850-05:00Summertime FrolickingOne of my favorite things about frolicking is how quickly I get sick of it and want to return to my projects. That said, August is lousy with birthdays among my friends and family (of course, I mean that in the quantitative, <i>Catcher in the Rye</i> sense and not the qualitative one), and I've still got some pool parties, a "pedal tavern," and possibly a trip to the Renaissance Faire in my future.<div>
<br /></div>
<div>
Still, I can't wait to submerge myself in something Hugo again. Earlier this week, I made some progress in my most recent problem; I had noticed how horribly broken the baby-naming code was in my silly, nonsensical game, "Baby Uncle New Year," and I wanted to fix it up.</div>
<div>
<br /></div>
<div>
I was hoping my new code would be general enough that I could easily throw it into Roodylib for everybody to use, but it ended up being too specifically purposed. When I get back to coding, writing that general purpose system will probably be my next task.</div>
<div>
<br /></div>
<div>
Ideally, I'd like it to do these things:</div>
<div>
<ol>
<li> If the game is being played on an interpreter that supports Hugo's timing system (and accessibility mode is not turned on), it would throw up a floating window like in my game "The Halloween Horror" and use my "fake prompt" code to capture the input and writing it straight to an array.</li>
<li>If the game is being played on a glk interpreter or has accessibility mode turned on, it has a prompt in the main window. Actual Hugo prompts are tricky because unless the text is within quotation marks, Hugo can only keep track of one unrecognized word. I'll have to find a tactful way to instruct the player accordingly.</li>
<li>Both of these will result in a, "'<blah>'? Is that correct?" response so the player can double-check how it was received. Even with whatever nudging I give, the main window Hugo prompts have a fair possibility of being wrong, like if the player used any of the "removal" words ("a", "an", "the", "some", "of") that Hugo automatically drops from input lines.</li>
<li>Include an option to write all unrecognized words to the game dictionary and apply them to an object.</li>
</ol>
<div>
At least one game in progress by another person uses my "fake prompt" code so I figure this system could be useful to others as well. Besides this, I need to reacquaint myself with my Hugo "to do" list and see if there's anything else I'd like to add before the next Roodylib release. I also have some real world research I want to do on one of my game ideas.</div>
</div>
<div>
<br /></div>
<div>
Here's to ending 2016 with a little more Hugo in the world!</div>
Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com2tag:blogger.com,1999:blog-244261653878319863.post-87124096002682933542016-07-27T13:34:00.000-05:002016-07-27T13:34:40.803-05:00some progress summerSince the last post, I helped that friend with that problem (GAME'S LOOKING GOOD, JIZ) and made some Roodylib progress (fixed some bugs, redesigned some stuff, and incorporated one or two new extensions). I have an out-of-town friend coming in this week, and I'd been meaning to recompile all of my old games with my default menu code and just try to make them look as consistent as possible.<br />
<br />
I've actually been meaning to do this for years, but this friend really doesn't know anything about IF so I kept putting it off because I wanted the consistency between games to be perfect... and honestly, I usually like to give a middle finger to perfection. It's too damn hard to finish projects in the first place.<br />
<br />
Still, applying something like Roodylib to old code is always interesting. It's getting to the point where the library application is a lot more seamless than it used to be, and I even found the culprit in my update to Christopher Tate's "converse" extension that was keeping it from working straight out of the box. That's been irking me for years, but now that it's fixed, my version is just about ready for public release, I think.<br />
<br />
Anyhow, despite all of that Roodylib work, I'm getting to the point where I feel I need to give more attention to my WIPs. One disappointment was the reminder that all of them are missing some big mid-game chunk of design. The plan is to sit down with some flowchart software one day and stare at the screen until inspiration strikes.<br />
<br />
But hey, it's summer and the days are beautiful, so it's been hard to make IF a priority. Have to enjoy these few months of sun and warmth that we get, so I'm trying to get out as much as possible. Frolicking, even.<br />
<br />
So much frolicking.Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com2tag:blogger.com,1999:blog-244261653878319863.post-29097567254923954382016-07-05T09:17:00.000-05:002016-07-05T09:17:38.880-05:00Roodylib 4.1.2I'm several months late in helping someone code a scene in their game, so me being me, that means I went and got Roodylib ready for a new release! SORRY, JIZ!<br />
<br />
The three main elements of this new update are:<br />
<br />
<ul>
<li>Incorporated the accessibility code mentioned one or two posts back into Roodylib and made them available by default. I may add another accessibility feature at some point- some kind of spelling system for uncommon words (as discussed on the intfiction.org forums)</li>
<li>Code supporting Nikos Chantziaras' Hugor opcodes system</li>
<li>Incorporated "newmenu.h" into Roodylib so one doesn't have to include the extra file. I added mouseclick support to menus sometime within the last handful of months, too.</li>
</ul>
<div>
<a href="https://goo.gl/0s67c4" target="_blank">Roodylib 4.1.2</a></div>
<div>
<a href="https://goo.gl/eEtN39" target="_blank">Latest Hugo Notepad++ Bundle</a></div>
<div>
<a href="https://drive.google.com/file/d/0B_4ZXs4Z_yoWclhaOFFYQ3JScjg/view?usp=sharing" target="_blank">Hugo Notepad++ Add-on</a></div>
<div>
<br /></div>
Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com0tag:blogger.com,1999:blog-244261653878319863.post-33914071094366368492016-05-29T19:50:00.000-05:002016-05-29T19:50:43.474-05:00"sandbox" modesAfter completing Michael Berlyn's <i>Suspended</i>, a player is given a special command that allows configuration of the main game- moving robots here and there, changing the timer, etc. I heard about this feature many years before I actually beat <i>Suspended</i>. At the time, it sounded like overkill for a game that I had bashed my head against (although in hindsight, it's really not the Herculean effort I thought it was).<br />
<br />
I have to admit that, having beaten the game and finally being familiar with how things fit together, the extra challenge mode seemed like a cool idea. Wow, a player could really make this game as hard or easy as they want to; I could see a fun optimization puzzle emerging. I have to admit that I never actually played much with this extra mode, but it was cool to see and finally understand.<br />
<br />
I've pondered nice ways to provide a similar experience for players, and the easiest answer I came up with was to give the player a magic word when the game is completed that turns on debugging mode. They'd be able to look at the object tree, move objects or the player around, or even control how daemons run. I thought this would be a fun way to share the innards of the game with the player; for some reason, having game source available doesn't provide the same thrill unless it's, say, in Hugo and I'm applying new Roodylib functionality to it or something for my own curiosity.<br />
<br />
Today's code sample supplies this magic word debugging system.<br />
<br />
<script src="https://gist.github.com/roodyyogurt/98d84ff6ed66a594242bce21cfff9b83.js"></script><br />
<br />
Now I just need to write a game that players would want to dig into!<br />
<br />Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com0tag:blogger.com,1999:blog-244261653878319863.post-55371065934767678262016-05-28T22:07:00.000-05:002016-05-28T22:07:25.283-05:00general update and "bags of holding"Some interesting news in Hugoville. <a href="http://ifwiki.org/index.php/Nikos_Chantziaras" title="Nikos Chantziaras">Nikos Chantziaras</a> has added an opcode system to Hugor, allowing for some special behavior here and there. Unfortunately, along with posting here about stuff more often, I've been meaning to update the Roodylib documentation to cover all of the new stuff and put out a new release. So, more news down the road!<br />
<br />
In the meantime, I thought I'd share some code examples I put together the other month; well, one now, one next time I write here.<br />
<br />
Today's bit of code will be for what IF lingo calls a "bag of holding." I'd say they were first popularized in late era commercial IF although they first showed up a bit earlier than that. Players still had set carrying capacities so object-management was required, but one object in the game- usually a bag or knapsack- could carry a limitless number of objects. As soon as you couldn't pick up anything more, you'd stick stuff in the bag of holding and, yay, looting can recommence!<br />
<br />
Bags of holding got even cooler when the game would automatically stick stuff in them for you. Today's code sample will be an automatic bag of holding system in Hugo.<br />
<br />
<script src="https://gist.github.com/roodyyogurt/b174cdb1c4d2f190fc89c21f73810885.js"></script><br />
<br />
Just set the bag_of_holding global to your bag of holding object, and there you go! Now, admittedly, this system is pretty simple. It only allows for swapping one object that, when moved, will create enough space for the new object. I considered writing another pass if the first one didn't find a suitable most, but I figured that this behavior would fit most games. If a game has large variance in object sizes, the large objects probably should get special treatment through before routines and such. Plus, it's always kind of ugly when you try to pick something up and then half of your inventory is moved to the bag of holding so I didn't want to encourage that.Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com0tag:blogger.com,1999:blog-244261653878319863.post-45189158152623897062016-02-15T00:25:00.002-06:002016-02-15T00:25:54.107-06:00Announcing the Hugo Notepad++ add-onSome people were unable to use my standalone Notepad++ package because they already had Notepad++ installed. I finally got around to putting together a package adding (most of) its functionality. Just download the following file and follow the instructions in the .pdf file!<br />
<br />
<a href="https://drive.google.com/file/d/0B_4ZXs4Z_yoWclhaOFFYQ3JScjg/view?usp=sharing" target="_blank">https://drive.google.com/file/d/0B_4ZXs4Z_yoWclhaOFFYQ3JScjg/view?usp=sharing</a><br />
<br />
It includes the compiler, an interpreter, and library files, so once installed, you'll be ready to start writing your Hugo game! As mentioned in the .pdf, all of the new commands will be under the Macros tab when you're done.Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com0tag:blogger.com,1999:blog-244261653878319863.post-76478326225497179482016-01-16T15:51:00.004-06:002016-01-16T15:51:44.959-06:00new ZIL blogJust a quick note that I've started an additional blog where I'll write about my experience exploring ZIL, the language used to write the Infocom games:<br /><br /><a href="http://zilcrazy.blogspot.com/" target="_blank">ZIL Crazy After All These Years</a><br />
<br />
Feel free to tag along!Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com0tag:blogger.com,1999:blog-244261653878319863.post-41464118258553114992016-01-09T17:06:00.001-06:002016-01-09T17:06:31.446-06:00Updates in AccessibilityI spoke about accessibility in the last post. It was brought to my attention that NVDA, another screen reader, <i>does</i> in fact work with some Hugo interpreters. This was exciting news as I could finally test my new accessibility code.<br />
<br />
For one thing, I was pleased to discover that my option to disallow screen-clearing was in fact justified; in-game screen clearing occasionally causes NVDA to lose track of the text. For the meantime, I'm taking the "clear every turn" option out until I learn of screen reader software that might work with. I'm also pretty pleased with the switching-the-prompt command; "Your command..." sounds a lot better than "greater than."<br />
<br />
If anyone wants to try NVDA out themselves, you can download it at <a href="http://www.nvaccess.org/download/" target="_blank">http://www.nvaccess.org/download/</a><br />
<br />
You can get the add-on someone wrote for several IF interpreters at <a href="http://jeff.tdrealms.com/Add-Ons/IfInterpreters-1.1.nvda-addon" target="_blank">http://jeff.tdrealms.com/Add-Ons/IfInterpreters-1.1.nvda-addon</a><br />
<br />
I found finding the place to install the add-on in NVDA was a bit of a search, but dig enough, and you'll find it.<br />
<br />
The add-on specifically targets the winglk Hugo interpreter which can be downloaded at <a href="http://ifarchive.org/if-archive/programming/hugo/executables/hugov31_winglk.zip">http://ifarchive.org/if-archive/programming/hugo/executables/hugov31_winglk.zip</a><br />
<br />
Lastly, download any of the following games, compiled with Roodylib's new accessibility code. Now, they're not my games (I'd much rather have people play something <i>good</i>) so please don't redistribute; these are just for personal use.<br />
<br />
Spur: <a href="https://drive.google.com/file/d/0B_4ZXs4Z_yoWOFg2b2FUZVBXeTQ/view?usp=sharing" target="_blank">https://drive.google.com/file/d/0B_4ZXs4Z_yoWOFg2b2FUZVBXeTQ/view?usp=sharing</a><br />
Guilty Bastards: <a href="https://drive.google.com/file/d/0B_4ZXs4Z_yoWNG5TX1BMem9TWmc/view?usp=sharing" target="_blank">https://drive.google.com/file/d/0B_4ZXs4Z_yoWNG5TX1BMem9TWmc/view?usp=sharing</a><br />
Down: <a href="https://drive.google.com/file/d/0B_4ZXs4Z_yoWZkVtUndXQ0VUcGs/view?usp=sharing" target="_blank">https://drive.google.com/file/d/0B_4ZXs4Z_yoWZkVtUndXQ0VUcGs/view?usp=sharing</a><br />
<br />
Accessibility commands are listed if someone types the suggested "INFO" command.<br />
<br />
Moving your mouse reverts NVDA to "hover over words" mode, so for best uninterrupted behavior, leave your mouse alone.<br />
<br />
These accessibility commands will be on by default in future releases of Roodylib.Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com1tag:blogger.com,1999:blog-244261653878319863.post-85478044408202581912015-12-16T20:47:00.000-06:002015-12-16T20:47:58.163-06:00Roodylib non-progress and a ZIL update (gasp!)Since the last Roodylib update, I've been working on a couple things. Unfortunately, none of them have been very successful which is especially unfortunate because I noticed a capitalization bug I introduced into the last Roodylib release (only seen when someone UNDOs after taking their inventory) and it'd be nice to put out an official release as soon as possible.<br />
<br />
<h4>
Plural Class Stuff</h4>
I have a folder of little bits of Hugo code to specifically test this or that functionality. For example, since I haven't really used Hugo's plural class support much in my own games and WIPs (I <i>have</i> used it a couple times but nothing that'll give the code a good workout), I made a dishwashing simulation where the game begins with 3 dirty dishes and as you wash them, they turn into clean dishes. Already this little bit of code has been useful to me since it helped me catch a typo in the original plural class code, but it never has been working perfectly so I put it aside to look at again one day.<br />
<br />
I took that closer look a few weeks ago; actually, before I started looking at the code again, I thought there might even be a chance that my tweaks to the plural class code since then might have resolved the original issue. Sadly, no, this was not the case, ha.<br />
<br />
The issue was that the game wasn't recognizing the references to the clean dishes once there were 2 or more of them. It turned out that, just how the attachables system makes the assumption that there is only one attachable in scope, the plural class system makes the assumption that there is only one item in scope with the same <b>noun </b>property.<br />
<br />
Hugo's plural class system is a complicated bit of pre and post engine-parsing parsing. Trying to fix the problem through little code tweaks was unsuccessful in the end, so I think I'll need to re-design the whole thing if I really want it to work. Like the only-one-attachable-in-scope thing, I don't think I'll revisit this problem until someone's game in progress requires me to do so (or I get <i>really really </i>bored).<br />
<br />
<h4>
Accessibility</h4>
<div>
Last month, there were a couple posts to the <a href="http://www.intfiction.org/forum/" target="_blank">intfiction.org forum</a> by people who use screenreaders to play IF. I had actually been wanting to get in touch with someone about that for months; at one point, I tried to write to the Audyssey mailing list but I think I used the wrong link and felt too self-conscious to keep trying, haha, so I was excited to finally have some people to talk to.</div>
<div>
<br /></div>
<div>
One got back to me right away, and I began working on extra Hugo commands to present the screen as nicely as possible to screenreaders. Eventually, I decided the wisest thing was to test it myself, so I installed JAWS for the first time in 10+ years and was painfully reminded that no Hugo interpreters- not even the glk one- work with it.</div>
<div>
<br /></div>
<div>
Still, some interesting threads came up in my research:</div>
<div>
<br /></div>
<div>
<a href="http://www.inthecompanyofgrues.com/?p=220" target="_blank">http://www.inthecompanyofgrues.com/?p=220</a> (and the <a href="http://www.intfiction.org/forum/viewtopic.php?f=6&t=1708&start=0" target="_blank">thread discussing it</a>) - Makes several interesting points about accessibility and was very useful in reassuring me about the usefulness of some of my ideas.</div>
<div>
<br /></div>
<div>
<a href="http://www.intfiction.org/forum/viewtopic.php?f=6&t=8690&start=0" target="_blank">http://www.intfiction.org/forum/viewtopic.php?f=6&t=8690&start=0</a> - Lists interpreters that already work well with screenreaders. Seems like the main deciding factor is whether text is selectable in the main window (without going to scrollback).</div>
<div>
<br /></div>
<div>
So yeah, my Hugo code is pretty useless until there's a Hugo interpreter that works with screenreaders (technically, there's a 16-bit simple DOS interpreter that should work but I've found that it crashes for larger games), so that project, too, goes on the backburner for a while. Possibly I'll implement it in ZIL in the meantime.</div>
<div>
<br /></div>
<h4>
ZIL!</h4>
<div>
Speaking of ZIL, I wanted to end this post with at least one tale of success. I was quite excited to see Jesse McGrew's <a href="http://zilf%200.7%20release/" target="_blank">ZILF 0.7 release</a>. It comes with his complete re-implementation of Adventure and has examples of the kind of character command code I need for my ZIL project ideas.</div>
<div>
<br /></div>
<div>
As I did for Hugo, I made a notepad++ ZIL distribution with some syntax highlighting and buttons for project creation, compiling, and running games. To be totally honest, I don't always keep the same kind of functions the same color, changing it up a bit for readability, but if people find that confusing, of course, feel free to edit it to your heart's desire (and I'd be interested to see what you do with it).</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf20BPC3yAJubxmSKi8p14jCFkc56_105Y37FAo9_Gd2QOl6YW3m4xJaWL3LK19LCb71b2XvSXISuoc88PNfisFwtRyKh1tMA3HAAq-45C1BK4lvsLzYMy8LEFV7MIbPOd76uSA9jiWPEF/s1600/Screenshot+2015-12-16+20.35.29.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="169" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhf20BPC3yAJubxmSKi8p14jCFkc56_105Y37FAo9_Gd2QOl6YW3m4xJaWL3LK19LCb71b2XvSXISuoc88PNfisFwtRyKh1tMA3HAAq-45C1BK4lvsLzYMy8LEFV7MIbPOd76uSA9jiWPEF/s320/Screenshot+2015-12-16+20.35.29.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">ZIL notepad++ screenshot</td></tr>
</tbody></table>
<div>
Unfortunately, these standalone versions of notepad++ don't seem to work for people who have notepad++ already installed (and are storing settings in user settings). At some point, I may write instructions on how to integrate these things into your own notepad++ installation, but it's complicated as the Customize Toolbar plugin I use to provide buttons doesn't currently allow for different-buttons-based-on-the-currently-open-file.</div>
<div>
<br /></div>
<div>
Anyhow, if you'd like to play around with it, you can get it <a href="https://goo.gl/Pb61FG" target="_blank">here</a>.</div>
Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com2tag:blogger.com,1999:blog-244261653878319863.post-26214378956007761922015-10-25T22:47:00.000-05:002015-10-25T22:47:02.148-05:00Announcing Roodylib 4.1.1 - the "Information" release!So, a couple months ago, I had recently added a donation button to this blog. A generous soul jumped on that right away. I decided the best way I could pay him back was to improve the Roodylib documentation so people wouldn't have to dig through "roodylib.h" for all of the hidden features.<br />
<br />
It took much longer than I had predicted, but I like to think that the final product is nicer than I originally foresaw, too. Plus, writing the documentation led to a couple updates in Roodylib itself, so all in all, I'd say this was a good deal!<br />
<br />
<a href="https://goo.gl/0s67c4" target="_blank">Download Roodylib 4.1.1 here</a><br />
<br />
or...<br />
<br />
<a href="https://goo.gl/eEtN39" target="_blank">Download the latest Hugo Notepad++ bundle</a><br />
<br />
<h3>
Changelog stuff</h3>
<div>
<div>
* updated - BeforeRoutines, AfterRoutines, RepaintScreen, DoInventory</div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span>* some additional HugoFix object tree organization, a HugoFix recording playback helper, $mp tweak</div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span>* made automatic-door-opening look nicer</div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span>* if a key_object is set quiet, it won't automatically open a door until after it has been explicitly used</div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span>* USE_SCOPE_REACT for checking react_before/after of scope objects</div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span>* changed PreParseError to BeforeParseError</div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span>* changed USE_SMART_PARENTS to SMART_PARENT_DIRECTIONS</div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span>* attachable behavior improved, especially with regards to pushable things</div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span>* USE_JUKEBOX, USE_CONFIG_SYSTEM added</div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span>* better DescribePlace configuration support</div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span>* cleaned up some rollable-objects code</div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span>* reworked how some FORMAT & LIST_F and indentation stuff works</div>
<div>
<span class="Apple-tab-span" style="white-space: pre;"> </span>* updated documentation</div>
</div>
Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com0tag:blogger.com,1999:blog-244261653878319863.post-36452126960913764662015-10-18T12:15:00.000-05:002015-10-18T16:54:00.737-05:00Games That Never WereSo, this post is a little late, as I've been meaning to write it for at least a week or so as followup gratitude for the last donation. Roodylib documentation is almost done- just some section introductions to write here and there and make some final decisions on text formatting (early shout-out to Paul Lee for proofreading!).<br />
<br />
Anyhow, I figure reading about game-ideas-that-died can be a fun read so I'll write about a couple collaboration ideas that met untimely demises.<br />
<br />
<h3>
Uncanny Valley (collaboration with Robb Sherwin)</h3>
<div>
<b>quick description:</b> Deadline-on-a-spaceship</div>
<div>
<br /></div>
<div>
In <i>Uncanny Valley</i>, you would play a female officer on a big spaceship with a large crew comprised of both humans and human-looking androids. Some murders happen. You investigate. The possibility is raised that some of the androids are going crazy. Some tense almost-killed-by-androids scenes happen. Turns out they were programmed by that evil dick captain (or somebody. I forget what we decided)!</div>
<div>
<br /></div>
<div>
I think we wanted to do a <i>Deadline</i> that played a little more fair- having time-sensitive scenes that were largely clued by game events or triggered by player knowledge. Robb had previously brought to my attention that <i>Suspect</i> pretty much had the <a href="http://infodoc.plover.net/manuals/temp/suspect.pdf" target="_blank">best manual ever</a>* (despite not being a very exciting game itself), and we wanted to contribute to the legacy of those games.</div>
<div>
<br /></div>
<div>
* I will always laugh at mentions of <i><span style="font-family: serif; font-size: 16.6667px;">"Good evening, I'm </span><span style="font-family: serif; font-size: 16.6667px;">Charles Edwards. I'm an emergency room surgeon. Have you ever </span></i><span style="font-family: serif; font-size: 16.6667px;"><i>been in an emergency room on Saturday night?"</i>.</span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;"><br /></span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;">Plus, I've always wanted to do something with Hugo's character scripting, and it seemed like androids were especially good for that.</span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;"><br /></span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;">We were also big fans of Jason Scott's <a href="http://www.bbsdocumentary.com/" target="_blank">The BBS Documentary</a> and we wanted to do a shout-out to BBS culture, so the ship was going to have a BBS-based inter-ship communication system. The player would read through hundreds of mostly-humorous messages, many from crew members you never meet in the game.</span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;"><br /></span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;">The ship BBS would be split into multiple sections, one where everybody has to post as themselves and one where people can use handles. As the game progressed, you'd figure out this or that person was this or that handle, and there'd be ways to unlock hidden boards on the BBS, too.</span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;"><br /></span></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOdRIWKHvvYTl5WCyuKD3-sElNVqVJ8Glw3HEGkc9GHF2bCJ2F2gWE5E8J4bPCB2SCI15RryDZjuzMA3FosD1tZrCOzNfh_EdQujGqlphOksuhDWUYilXNjLo_73XTzBJ8lWzH5TbTZQHo/s1600/UVcomputer.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="246" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOdRIWKHvvYTl5WCyuKD3-sElNVqVJ8Glw3HEGkc9GHF2bCJ2F2gWE5E8J4bPCB2SCI15RryDZjuzMA3FosD1tZrCOzNfh_EdQujGqlphOksuhDWUYilXNjLo_73XTzBJ8lWzH5TbTZQHo/s320/UVcomputer.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">This was my proof-of-concept of the computer system, where the top window would show the protagonist's thoughts as she learned important bits of information.</td></tr>
</tbody></table>
<div>
<span style="font-family: serif; font-size: 16.6667px;"><br /></span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;">I was excited about writing about a female protagonist, too, as that's something I've never done.</span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;"><br /></span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;">I had a vision for the game that when the game starts, your character would look out a porthole and see a bunch of ASCII stars, setting a desolate mood in a nicely retro way.</span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;"><br /></span></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwmulC-qs0fbDkSTdfpWUl_dwAwPMfMIyi_gPm91k9o-15nUi2vQnlVq_rUqusxraxQWyJBBIJfAzNB_J0HyNeDqXRXTMAFI-UmsZVq-de0AIOF9xlY_HIssfeHk9ymJdRNPwwoFxeRMlL/s1600/stars.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="249" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwmulC-qs0fbDkSTdfpWUl_dwAwPMfMIyi_gPm91k9o-15nUi2vQnlVq_rUqusxraxQWyJBBIJfAzNB_J0HyNeDqXRXTMAFI-UmsZVq-de0AIOF9xlY_HIssfeHk9ymJdRNPwwoFxeRMlL/s320/stars.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">My star-printing proof-of-concept</td></tr>
</tbody></table>
<div>
<span style="font-family: serif; font-size: 16.6667px;">I even considered writing the randomly-generated stars to arrays so if the player changed the window size, the same configuration would be printed again.</span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;"><br /></span></div>
<h4>
<span style="font-family: serif; font-size: 16.6667px;">Why It Didn't Happen and What Came of It</span></h4>
<div>
<span style="font-family: serif; font-size: 16.6667px;">Most importantly, UV was a break from other projects and we never really committed 100% of our attention to it. Eventually, we were distracted by the <i>next</i> project I'm going to talk about in this post.</span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;"><br /></span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;">Interestingly, Christine Love's <a href="http://scoutshonour.com/digital/" target="_blank">Digital: A Love Story</a> came out within the next several months, and while I didn't play it until much later, it also did the fake-BBS-society thing that I had loved in the 1988 adventure game, "Neuromancer" (and manages to do it in an enjoyable, concise way even) and was somewhat what we had aimed to replicate (and truthfully, I wasn't super excited to write all of the computer entries the game idea deserved).</span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;"><br /></span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;">What I <i>did</i> notice is that two space-based AIF games came out within the following year with similarities to our idea (one murder mystery with computers and one had a similar ship layout to what I had imagined), and that also made me less excited about ours.</span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;"><br /></span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;">My star-printing code helped inspire some of the random stuff in <i>The Next Day </i>eventually.</span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;"><br /></span></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoptGg_sEZFe6ckl9j6PIFIGRvFiJRKfVScLxiraSuzmXsIPkAdlvgKz6eNMf1YfuXdYspzId_Apehkypu97XrKLiv3gEMfGPSMB5RLxZh0pTvc0VZZsIN8EdPOi2w8e_c-Kcpk6n1CBXU/s1600/ndstore.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="249" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoptGg_sEZFe6ckl9j6PIFIGRvFiJRKfVScLxiraSuzmXsIPkAdlvgKz6eNMf1YfuXdYspzId_Apehkypu97XrKLiv3gEMfGPSMB5RLxZh0pTvc0VZZsIN8EdPOi2w8e_c-Kcpk6n1CBXU/s320/ndstore.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">getting sleepy</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSo1enfk8Meshxr0TTt54K6oyu65VHduWENM7kzw9o6IWC8oCSyhHUtlAJ3aBq93yvdMM3e9YhJAtZHo1khX_D4_raDYX4wTh2M6IzNs071_a3ABFoeP5MLfKlZ2T6snm0UtHoN-n0pemN/s1600/ndrobots.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="248" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSo1enfk8Meshxr0TTt54K6oyu65VHduWENM7kzw9o6IWC8oCSyhHUtlAJ3aBq93yvdMM3e9YhJAtZHo1khX_D4_raDYX4wTh2M6IzNs071_a3ABFoeP5MLfKlZ2T6snm0UtHoN-n0pemN/s320/ndrobots.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">dreaming</td></tr>
</tbody></table>
<br />
<h3>
<span style="font-family: serif; font-size: 16.6667px;">Loose Cannon (collaboration with Robb Sherwin and J. Robinson Wheeler)</span></h3>
<div>
<span style="font-family: serif; font-size: 16.6667px;"><b>quick description</b>: comedic homage to 80s cop show/movie tropes</span></div>
<div>
<span style="font-family: serif; font-size: 16.6667px;"><br /></span></div>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;">The first <a href="http://east.paxsite.com/" target="_blank">PAX East</a> attracted a bunch of us IF enthusiasts, rallied together for a screening of Jason Scott's latest documentary, <a href="http://www.getlamp.com/" target="_blank">Get Lamp</a>.</span></span></div>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;"><br /></span></span></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0nCior4lQVIFCxbBH0CbmdKZv45xiMvSh_pr1a7v0AMCbjHgepDxRSPT2xM4XAw37m5bdX5kYfrABYnP__2-KuPrh8oce91WfCLHqQIrQzbfUZtiqqbj-lrCaad0onud3ahCMyMFaUXJl/s1600/ell-zarf-rob_infocom_hq.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="219" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0nCior4lQVIFCxbBH0CbmdKZv45xiMvSh_pr1a7v0AMCbjHgepDxRSPT2xM4XAw37m5bdX5kYfrABYnP__2-KuPrh8oce91WfCLHqQIrQzbfUZtiqqbj-lrCaad0onud3ahCMyMFaUXJl/s320/ell-zarf-rob_infocom_hq.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">A few of us made a side trip to check out Infocom's old headquarters (and I'm wearing a jacket- I wasn't trying to bring flannel shirts back!)</td></tr>
</tbody></table>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;">I had the great pleasure of meeting a bunch of awesome people for the first time but also got to see some great people again like Robb Sherwin and J. Robinson Wheeler. At one point, somebody suggested that we all do something together.</span></span></div>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;"><br /></span></span></div>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;">It was going to be set in that same sort of seedy, near-future of films like "Robocop." As you probably would have guessed, you'd play the kind of character at whom a police captain screams, "You're a loose cannon!". There was going to be a main villain who kills your partner. I was even looking forward to doing a sort of slow-motion-presented-textually scene where the player could earn easter egg points by typing <b>>NOOOOOOOOO</b> <b>>OOOOOOOOOO</b> over several turns; this would have been a challenge both in properly cluing to the player and handling on a parser level in Hugo, but I was looking forward to both.</span></span></div>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;"><br /></span></span></div>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;">Then we were going to team up the player with an android cop, a plot point that I wasn't entirely happy with (I thought Rob already had enough androids in his games!), but hey, I really wanted to give the first partner a death scene!</span></span></div>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;"><br /></span></span></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1PUY-QweMStBYeiZPcRY9CUwqT5-4-iBhZTzbhXPoKZH84ikzWzO5qJthJDSqk7sOExNYpUH2pDI_HAC5tyBL8zjBlo6WHVR1Lx4Iy_5YSvDo0Gagr6bb35-zZiHfXXCaxS0TQ8BXguF0/s1600/loosecannon.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1PUY-QweMStBYeiZPcRY9CUwqT5-4-iBhZTzbhXPoKZH84ikzWzO5qJthJDSqk7sOExNYpUH2pDI_HAC5tyBL8zjBlo6WHVR1Lx4Iy_5YSvDo0Gagr6bb35-zZiHfXXCaxS0TQ8BXguF0/s320/loosecannon.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">I wanted each section to begin with what looks like a torn piece of paper from script- didn't perfect the effect before the game was abandoned</td></tr>
</tbody></table>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;"><br /></span></span></div>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;">Several scenes were going to rely on a particular game mechanic. There was going to be a shooting gallery shootout, a car chase, and so on. I even wanted to do a scene in a strip club with the protagonist sitting at the bar with only the strippers' legs within game scope.</span></span></div>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;"><br /></span></span></div>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;">Robb wanted the score to be sort of meaninglessly insane, where you can get hundreds or thousands of points at a time. Since Hugo integers can only go to 32767, this involved coding a special scoring system.</span></span></div>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;"><br /></span></span></div>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;">What little we did also inspired some updates to one of my conversation extensions (long since put on the backburner in favor of Roodylib but I'll be quite happy with it when it's done).</span></span></div>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;"><br /></span></span></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5C5rlQQIg2NZppX5L_UJWS6bS4dj3WxGXUNcNVdQ9IEukH-7PCaqleAcnYAwJB3q92NTNx2F8GRpd-fUoVHDb-RsIf6C6zINTkTS-JmpUUVaKaUqcTjShmtbAArIxYUYFAjwX1f3UhMP3/s1600/lcconvo.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="251" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5C5rlQQIg2NZppX5L_UJWS6bS4dj3WxGXUNcNVdQ9IEukH-7PCaqleAcnYAwJB3q92NTNx2F8GRpd-fUoVHDb-RsIf6C6zINTkTS-JmpUUVaKaUqcTjShmtbAArIxYUYFAjwX1f3UhMP3/s320/lcconvo.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">you can't really *see* the cool things the conversation system does here but they're there!</td></tr>
</tbody></table>
<h4>
<span style="font-family: serif;"><span style="font-size: 16.6667px;">Why It Didn't Happen and What Came of It</span></span></h4>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;">I think early on it became clear that we didn't all have the same vision for it, and communication and attention to it fell away and everybody went back to their own projects.</span></span><br />
<span style="font-family: serif;"><span style="font-size: 16.6667px;"><br /></span></span>
<span style="font-family: serif;"><span style="font-size: 16.6667px;">In 2013, J.J. Abrams produced a buddy cop tv show called "Almost Human" where the protagonist gets partnered with an android. When I first heard of it, I joked that Abrams had hacked our e-mails (Abrams is also an Infocom fan, strangely enough).</span></span></div>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;"><br /></span></span></div>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;">I felt some elements of this game idea showed up in J. Robinson Wheeler's 2015 work, <a href="http://ifdb.tads.org/viewgame?id=2qs53ox50q4b6376" target="_blank">Moonbase Indigo</a>, so if that sounds appealing to you, you should go check that out!</span></span></div>
<div>
<span style="font-family: serif;"><span style="font-size: 16.6667px;"><br /></span></span></div>
<div>
Later that year (2011), Robb released <a href="http://www.joltcountry.com/index.php/robbsherwin_videogame/cryptozookeeper" target="_blank">Cryptozookeeper</a>. You can help his latest WIP get Steam Greenlit <a href="http://steamcommunity.com/sharedfiles/filedetails/?id=438139803" target="_blank">here</a>!</div>
Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com1tag:blogger.com,1999:blog-244261653878319863.post-20375113806911675822015-10-03T01:32:00.002-05:002015-10-03T01:32:53.877-05:00Trizbort! Maps!So, first off, I had another super awesome donation to the blog, and this particular person <i>loves</i> maps so I thought I'd do a map-themed post. The timing for it is great because <a href="http://www.trizbort.com/" target="_blank">Trizbort</a>, the IF mapping program, recently added a feature to export maps straight to Hugo code!<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoWZ70g1V8dWguJKLYD0n7gvUsiitVe9-z66fYxdKUGlHPbOudas-3ym_eR0QmjRYCZoGwU7ChYM41kW8R0e8p-YbGA2Ds3kiTP89rXwshyJwPw17VTh2LOY6bqjw5Rc5E06Wi4D5L1yt2/s1600/rtd.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="472" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoWZ70g1V8dWguJKLYD0n7gvUsiitVe9-z66fYxdKUGlHPbOudas-3ym_eR0QmjRYCZoGwU7ChYM41kW8R0e8p-YbGA2Ds3kiTP89rXwshyJwPw17VTh2LOY6bqjw5Rc5E06Wi4D5L1yt2/s640/rtd.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">One of my Trizbort maps. Recent versions of Trizbort have the ability to declare groups of rooms as "regions," giving them whatever color you choose. I'd like to make my old maps even prettier one day but picking colors and such is always such a headache.</td></tr>
</tbody></table>
Drawing a map can be a great way to get a head start on coding a game so I'm quite psyched that Hugo-code support has been added! I tried the code export tonight; I <i>did </i>find some problems, but the release notes made it clear that is expected and I look forward to sharing my notes with Jason about the problems and a couple other suggestions!<br />
<br />
Unfortunately, my map-loving patron has an Apple computer so she can't make Trizbort maps herself. Maybe I'll try to map another, smaller game and make it as pretty as possible for her donation!<br />
<br />
<h4>
Documentation Update</h4>
<div>
Been making a lot of progress on the Roodylib documentation lately. It's taken longer than I expected, but I'm pleased with how it's coming together and it has already resulted in some making-things-more-intuitive changes to Roodylib (with a couple more planned). If I keep up this pace, I may have it done within a couple weeks, and Roodylib (and the Hugo notepad++ distribution) should both get official updates soon after!</div>
Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com0tag:blogger.com,1999:blog-244261653878319863.post-54915984662072392192015-08-17T16:27:00.000-05:002015-08-17T18:06:31.673-05:00so many cool-ass people doing cool-ass thingsThe other week, when I added a Paypal ™ button to this blog, I said something about wanting to list people I would donate money to if I could. I didn't have links to share for everybody at the time, but I do now. In no particular order:<br />
<ul>
<li><b>Nikos Chantziaras</b>: While Kent Tessman went to a lot of trouble to provide a full-featured Hugo interpreter for Apple computers, the chosen method used a software method that was largely abandoned (or, at least, if it was updated, the Hugo interpreter was not updated along with it). Eventually, Nikos came along and wrote <a href="http://ifwiki.org/index.php/Hugor" target="_blank">Hugor</a>. Besides bringing Hugo multimedia back to Mac and Linux users, Hugor is a very nice experiment in IF interpreters, providing several features not found in any other. Besides Hugor, Nikos also wrote the QTads and FrobTADS interpreters. I'd highly recommend them!<br /><br />You can help support Nikos at his <a href="http://qtads.sourceforge.net/" target="_blank">sourceforge page</a>.<br /></li>
<li><b>Juhana Leinonen</b>: Juhana has done so many cool projects, it's hard to know which ones to give top-billing. <a href="http://vorple-if.com/" target="_blank">Vorple</a>, a javascript library for adding multimedia to <a href="http://undum.com/" target="_blank">Undum</a> and <a href="http://inform7.com/" target="_blank">Inform 7</a> games, has probably received the most acclaim despite having only seen a tiny percentage of its possibilities (I'm particularly impressed with some of its internet-using capabilities). More recently, he announced <a href="http://nitku.net/blog/2014/11/introducing-texture/" target="_blank">Texture</a>, an IF system designed with mobile devices in mind. Personally, I've only recently gotten into smart phones and tablets, and I have to say that it was kind of disappointing shock to see how much of a hassle it is to play IF on them so I naturally loved this announcement.<br /><br />In the world of Hugo, he was the first to get Hugo games in a web browser (using a <a href="http://nitku.net/if/hugo/" target="_blank">DOSbox implementation</a>). He also put together an <a href="http://nitku.net/if/hugo/hexparser/" target="_blank">online "story file parser"</a> for checking out games' innards.<br /><br />Check out <a href="http://ifwiki.org/index.php/Juhana_Leinonen" target="_blank">this page</a> for a full list of his contributions (I really need to use that "IF Transcript Beautifier" more often).<br /><br />In any case, there is no way to donate money to Juhana, but he has some ideas for IF monetization in the future (especially in the realm of mobile apps), so go subscribe to <a href="http://nitku.net/blog/" target="_blank">his blog</a> and watch for further developments!<br /></li>
<li><b>Jesse McGrew</b>: Jesse doesn't tinker in the world of Hugo, but he is cut from the same cloth as these others who improve the tools and such at our disposal out of a love for the medium. His first wildly ambitious project was <a href="http://ifwiki.org/index.php/Guncho" target="_blank">Guncho</a>, a MUD ("multi-user dungeon") where authors can add new realms by writing Inform 7 code, making it possible to write truly-multiplayer interactive fiction using interactive fiction tools.<br /><br />These days, a lot of attention has gone to his <a href="https://bitbucket.org/jmcgrew/zilf/wiki/Home" target="_blank">ZILF compiler</a>, a project that makes it once again possible to write games in ZIL, the same language created and used by the Infocom "Implementers." If I was not working on taking Hugo as far as I can take it, I would probably be spending all of my time with ZIL. While not exactly easy to code in for a non-programmer as myself, I find it wonderfully powerful in certain ways, and it's cool that once again, it is within our power to write <i>good</i> games that could conceivably be played on an Apple IIgs or TI calculator.<br /><br />You can follow the <a href="https://www.intfic.com/t/adventure-colossal-cave-for-zil-beta-testing/161" target="_blank">ZILF updates as he perfects his port of the game "Adventure" here</a>, and you can donate to his IF endeavors <a href="http://hansprestige.com/if-donate.php" target="_blank">here</a>.<br /></li>
<li><b>Jimmy Maher</b>: With his blog <a href="http://www.filfre.net/" target="_blank">"The Digital Antiquarian,"</a> Maher delves into classic computer gaming- both IF and not- and consistently provides enlightening forays into the stories behind the games of our youth (and a bit about the games themselves). Of course, such a project of passion isn't going to completely free of the occasional editorial opinion, but even when I disagree with the sentiment on display, it's always great to see so much attention being given to something that also affected me so many years ago.<br /><br />I'm also am a fan of his <a href="http://maher.filfre.net/filfre/" target="_blank">Filfre interpreter</a> for z-code and Glulx games; it's often my interpreter of choice for Glulx games that have graphics. You can also get his <a href="http://www.amazon.com/The-King-Shreds-Patches/dp/B00515LD0K" target="_blank">King of Shreds and Patches</a> game for the Amazon Kindle. That is the first and only IF game I have played on the Kindle, and while a little sluggish (I had one of the earliest Kindle models), overall, I was very happy with the experience.<br /></li>
<li><b>Robb Sherwin</b>: For the most part, the only reason anyone even remembers that Hugo exists for the last 15 years is because of the games of Mr. Sherwin. Anyone unfamiliar with his work should check out his <a href="http://www.joltcountry.com/index.php/robbsherwin_videogame" target="_blank">games page</a>.<br /><br />You can help Robb now by helping his latest game get approved on <a href="http://steamcommunity.com/sharedfiles/filedetails/?id=438139803" target="_blank">Steam Greenlight</a>!<br /></li>
<li><b>Kent Tessman</b>: Of course, Hugo would not exist if not for its creator. These days, his attention is devoted to his <a href="http://www.fadeinpro.com/" target="_blank">fantastic screenwriting program, Fade In</a>. I highly encourage anyone who has ever slightly entertained the "WAIT COULD I BE A SCREENWRITER?" idea to go get his program. It continues to receive high praise from all sorts of industry greats, and compared to its competition, $50 for a lifetime license is not a bad deal at all.<br /><br />You can hear his latest screenplay, Chrome Noir, be given the "table read" treatment by a bunch of well-known actors (included Fargo's Colin Hanks) <a href="http://blacklist.wolfpop.com/audio/35178/chrome-noir-pt-1" target="_blank">here</a>. </li>
</ul>
Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com0tag:blogger.com,1999:blog-244261653878319863.post-72574614663476524452015-08-10T02:41:00.001-05:002015-08-10T02:41:18.994-05:00documentation updateSo, work started off slower on the documentation than I predicted, but I'm pretty happy with the styling and approach I've come up with (lots of picture examples to show options in action with a little bit of IF theory thrown in here and there, too). It'll probably be weeks before I'm finished, I think- and I'll probably tweak fonts and stuff to make it look as nice as possible- but I figured I'd share what I've done so far.<br />
<br />
Check out the start of the <a href="https://drive.google.com/file/d/0B_4ZXs4Z_yoWWVBvMU5saU9kQ0E/view?usp=sharing" target="_blank">new Roodylib documentation</a>!<br />
<br />
Suggestions are welcome.Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com0tag:blogger.com,1999:blog-244261653878319863.post-38239578125662699462015-07-31T13:46:00.001-05:002015-07-31T13:46:55.652-05:00WowWithin just a couple hours of that last post, I was blown away by the generosity of a donation. Not having any huge Roodylib-related tasks on my plate right now, I decided that it's time I put more effort into making Roodylib's documentation presentable. I spent a couple hours already making an outline of topics I'd like to cover (with it all being easily browsable), resulting in this:<br />
<br />
<a href="https://docs.google.com/document/d/1Il43tgoKx1urUcJMkpAJLVH9UupLFi3IL_ICEbg9QNU/edit?usp=sharing" target="_blank">https://docs.google.com/document/d/1Il43tgoKx1urUcJMkpAJLVH9UupLFi3IL_ICEbg9QNU/edit?usp=sharing</a><br />
<br />
I still have to order it so all of the things most useful to new authors and authors-getting-acquainted-with-Roodylib are explained first. Right now, the plan is to write the entire thing in LibreOffice, but I may export to PDF for the final copy (in the past, I used an open document just because I figured I could use it basically as a fancy readme text file, but I guess there's no real reason I can't just make the whole thing look nicer).<br />
<br />
Anyhow, one thing I'd probably like to do in the documentation is have bits of sample code here and there. Anyone have any experience with inserting code in open documents (what styles/formatting look best, is there a nice extension for this, etc)? So far, googling hasn't exactly been my friend, and any advice would be appreciated.Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com0tag:blogger.com,1999:blog-244261653878319863.post-49399682962504570982015-07-30T12:55:00.000-05:002015-07-30T12:55:09.581-05:00added a paypal buttonNow, considering that Hugo has like 5 users in the world, I don't actually expect any money to come in, especially with everyone having mortgages and family and this and that to take care of. Just the same, things have been tight for me, too, and I figured I might as well put the option out there just in case anyone wants to contribute but just hadn't thought of it yet.<br />
<br />
To be perfectly honest, donations probably wouldn't make the next major release of Roodylib come out any quicker (since I work on it pretty consistently anyhow), but if any patron has a particular feature they'd like to see incorporated into Roodylib (or the creation of a useful object class), those things will be given a high priority. Actually, even if you can't afford to donate anything, if anyone has anything they'd like to see, just let me know. I'll probably do it, ha.<br />
<br />
I was going to finish this post with links to other people who I feel contribute a lot (much more than myself) and would be great options to support, but finding donation buttons for them was harder than I remembered. I'll have to edit this post after I've talked to them to see if there are pages I've missed.Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com0tag:blogger.com,1999:blog-244261653878319863.post-74336427236817163382015-07-29T11:38:00.001-05:002015-07-29T11:38:48.398-05:00Configuration FilesI don't remember what prompted it, but something got me thinking about configuration files in Hugo and how I never perfectly designed a way to detect if an interpreter fully supports them.<br />
<br />
See, the FILE_CHECK constant-checking method described in the Hugo manual doesn't work with Gargoyle. Not only that, but Gargoyle can <b>read</b> configuration files- just not write to them- so if a configuration file has been created by another interpreter, previously, the game could easily be tricked into thinking everything is working fine. Adding even more complication is that configuration-file-writing <i>does</i> work in the glk Hugo interpreter (even though no one ever uses that one) so I couldn't just do a simple "minimal port"check.<br />
<br />
So I brought my attention to this the other day. Eventually, my fix for the problem involved using Hugo's system-time-catching functionality (along with <i>Future Boy!</i>'s time-handling routines) to take the current time, save it to the configuration file along with everything else, then read the time back from the configuration file. Then it calculates the difference between the two times, and if it's longer than 5 seconds (I'm trying to account for <i>really</i> slow computers here even if a 2 second timer would probably still be playing it safe), it calls the configuration error routine (so a game like "the Halloween Horror" can quit out, as it relies on configuration files).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2w1jPRPBxwrvGztzxM08bPgOwyzTLnMddlXSFZYebSjXTW7s9hDBVWLncS3GKZTlUyUPCoJeFMZkPsVS1xPl7PZkjjAV2pL7UU1Uj_vd1BNond8Bh867pg46GtZR8FkXPeblT4WI38WPJ/s1600/error.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2w1jPRPBxwrvGztzxM08bPgOwyzTLnMddlXSFZYebSjXTW7s9hDBVWLncS3GKZTlUyUPCoJeFMZkPsVS1xPl7PZkjjAV2pL7UU1Uj_vd1BNond8Bh867pg46GtZR8FkXPeblT4WI38WPJ/s320/error.jpg" width="293" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h4 style="clear: both; text-align: left;">
In other news</h4>
<div>
Herr Jizaboz finished his demo game about a tourist in North Korea. I've helped him with it here and there. I hope people get a big kick out of it!</div>
<div>
<br /></div>
<div>
<a href="http://retrolab.servebeer.com/lab/projects/if/dprk/" target="_blank">A Day in DPRK</a></div>
<div>
<br /></div>
<div>
Also....</div>
<div>
<br /></div>
<div>
Looks like there was a <a href="https://notepad-plus-plus.org/" target="_blank">Notepad++</a> update so I also updated the Hugo Notepad++ distribution. <a href="https://goo.gl/eEtN39" target="_blank">You can get it here</a>.</div>
<br />Roodyhttp://www.blogger.com/profile/09735423363908850213noreply@blogger.com0