Some 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!
https://drive.google.com/file/d/0B_4ZXs4Z_yoWclhaOFFYQ3JScjg/view?usp=sharing
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.
Monday, February 15, 2016
Saturday, January 16, 2016
new ZIL blog
Just 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:
ZIL Crazy After All These Years
Feel free to tag along!
ZIL Crazy After All These Years
Feel free to tag along!
Saturday, January 9, 2016
Updates in Accessibility
I spoke about accessibility in the last post. It was brought to my attention that NVDA, another screen reader, does in fact work with some Hugo interpreters. This was exciting news as I could finally test my new accessibility code.
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."
If anyone wants to try NVDA out themselves, you can download it at http://www.nvaccess.org/download/
You can get the add-on someone wrote for several IF interpreters at http://jeff.tdrealms.com/Add-Ons/IfInterpreters-1.1.nvda-addon
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.
The add-on specifically targets the winglk Hugo interpreter which can be downloaded at http://ifarchive.org/if-archive/programming/hugo/executables/hugov31_winglk.zip
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 good) so please don't redistribute; these are just for personal use.
Spur: https://drive.google.com/file/d/0B_4ZXs4Z_yoWOFg2b2FUZVBXeTQ/view?usp=sharing
Guilty Bastards: https://drive.google.com/file/d/0B_4ZXs4Z_yoWNG5TX1BMem9TWmc/view?usp=sharing
Down: https://drive.google.com/file/d/0B_4ZXs4Z_yoWZkVtUndXQ0VUcGs/view?usp=sharing
Accessibility commands are listed if someone types the suggested "INFO" command.
Moving your mouse reverts NVDA to "hover over words" mode, so for best uninterrupted behavior, leave your mouse alone.
These accessibility commands will be on by default in future releases of Roodylib.
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."
If anyone wants to try NVDA out themselves, you can download it at http://www.nvaccess.org/download/
You can get the add-on someone wrote for several IF interpreters at http://jeff.tdrealms.com/Add-Ons/IfInterpreters-1.1.nvda-addon
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.
The add-on specifically targets the winglk Hugo interpreter which can be downloaded at http://ifarchive.org/if-archive/programming/hugo/executables/hugov31_winglk.zip
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 good) so please don't redistribute; these are just for personal use.
Spur: https://drive.google.com/file/d/0B_4ZXs4Z_yoWOFg2b2FUZVBXeTQ/view?usp=sharing
Guilty Bastards: https://drive.google.com/file/d/0B_4ZXs4Z_yoWNG5TX1BMem9TWmc/view?usp=sharing
Down: https://drive.google.com/file/d/0B_4ZXs4Z_yoWZkVtUndXQ0VUcGs/view?usp=sharing
Accessibility commands are listed if someone types the suggested "INFO" command.
Moving your mouse reverts NVDA to "hover over words" mode, so for best uninterrupted behavior, leave your mouse alone.
These accessibility commands will be on by default in future releases of Roodylib.
Wednesday, December 16, 2015
Roodylib 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.
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.
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 noun property.
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 really really bored).
Plural Class Stuff
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 have 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.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.
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 noun property.
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 really really bored).
Accessibility
Last month, there were a couple posts to the intfiction.org forum 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.
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.
Still, some interesting threads came up in my research:
http://www.inthecompanyofgrues.com/?p=220 (and the thread discussing it) - Makes several interesting points about accessibility and was very useful in reassuring me about the usefulness of some of my ideas.
http://www.intfiction.org/forum/viewtopic.php?f=6&t=8690&start=0 - 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).
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.
ZIL!
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 ZILF 0.7 release. 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.
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).
![]() |
| ZIL notepad++ screenshot |
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.
Anyhow, if you'd like to play around with it, you can get it here.
Sunday, October 25, 2015
Announcing 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.
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!
Download Roodylib 4.1.1 here
or...
Download the latest Hugo Notepad++ bundle
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!
Download Roodylib 4.1.1 here
or...
Download the latest Hugo Notepad++ bundle
Changelog stuff
* updated - BeforeRoutines, AfterRoutines, RepaintScreen, DoInventory
* some additional HugoFix object tree organization, a HugoFix recording playback helper, $mp tweak
* made automatic-door-opening look nicer
* if a key_object is set quiet, it won't automatically open a door until after it has been explicitly used
* USE_SCOPE_REACT for checking react_before/after of scope objects
* changed PreParseError to BeforeParseError
* changed USE_SMART_PARENTS to SMART_PARENT_DIRECTIONS
* attachable behavior improved, especially with regards to pushable things
* USE_JUKEBOX, USE_CONFIG_SYSTEM added
* better DescribePlace configuration support
* cleaned up some rollable-objects code
* reworked how some FORMAT & LIST_F and indentation stuff works
* updated documentation
Sunday, October 18, 2015
Games That Never Were
So, 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!).
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.
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.
Uncanny Valley (collaboration with Robb Sherwin)
quick description: Deadline-on-a-spaceship
In Uncanny Valley, 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)!
I think we wanted to do a Deadline 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 Suspect pretty much had the best manual ever* (despite not being a very exciting game itself), and we wanted to contribute to the legacy of those games.
* I will always laugh at mentions of "Good evening, I'm Charles Edwards. I'm an emergency room surgeon. Have you ever been in an emergency room on Saturday night?".
Plus, I've always wanted to do something with Hugo's character scripting, and it seemed like androids were especially good for that.
We were also big fans of Jason Scott's The BBS Documentary 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.
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.
![]() |
| 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. |
I was excited about writing about a female protagonist, too, as that's something I've never done.
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.
![]() |
| My star-printing proof-of-concept |
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.
Why It Didn't Happen and What Came of It
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 next project I'm going to talk about in this post.
Interestingly, Christine Love's Digital: A Love Story 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).
What I did 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.
My star-printing code helped inspire some of the random stuff in The Next Day eventually.
![]() |
| getting sleepy |
![]() |
| dreaming |
Loose Cannon (collaboration with Robb Sherwin and J. Robinson Wheeler)
quick description: comedic homage to 80s cop show/movie tropes
The first PAX East attracted a bunch of us IF enthusiasts, rallied together for a screening of Jason Scott's latest documentary, Get Lamp.
![]() |
| 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!) |
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.
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 >NOOOOOOOOO >OOOOOOOOOO 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.
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!
![]() |
| 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 |
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.
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.
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).
![]() |
| you can't really *see* the cool things the conversation system does here but they're there! |
Why It Didn't Happen and What Came of It
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.
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).
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).
I felt some elements of this game idea showed up in J. Robinson Wheeler's 2015 work, Moonbase Indigo, so if that sounds appealing to you, you should go check that out!
Later that year (2011), Robb released Cryptozookeeper. You can help his latest WIP get Steam Greenlit here!
Saturday, October 3, 2015
Trizbort! Maps!
So, first off, I had another super awesome donation to the blog, and this particular person loves maps so I thought I'd do a map-themed post. The timing for it is great because Trizbort, the IF mapping program, recently added a feature to export maps straight to Hugo code!
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!
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!
Documentation Update
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!
Subscribe to:
Posts (Atom)








