Online IF game hosting at Borogove.io

I’ve set up a free hosting service for IF games at Borogove.io. It’s a companion to the Borogove.app online editor but is a separate entity (uploading directly from the editor is coming later.)

You can upload Z-Machine, Glulx, TADS 2 and 3, Hugo, Dialog, Texture and Ink game files as well as single-page HTML files which includes Twine and other formats that export to HTML. It sets up an online interpreter and you then get a shareable link that leads to a page to play the game online.

Uploaded games can be set public, which makes them appear on the public gallery on the front page, or private, which gives you just the link. The game can be played by following the link but private games aren’t listed on the front page or anywhere else on the site.

You need to log in with a Google account to upload games. No account is needed for playing.

The service is produced in cooperation with IFTF and it’s meant as a lightweight alternative to Itch.io and a replacement for the old philome.la site that hosted Twine games but has now been read-only for a couple of years.

Have fun and let me know if you have any questions.

19 Likes

Cool! I’m curious, is it possible to customize the browser client and/or have it and a Tads parser game interact?

The interpreters themselves can’t be customized, they’re always the same. Also should be noted that the TADS interpreter is for “normal” TADS games, there’s no WebUI support.

Nice! I always appreciate attempts to build community-specific infrastructure. I know that itch.io tends not to be excellent for finding IF amidst the ocean of indie games content. Hopefully this provides a nice place to keep up a thrum of activity outside of competitions or IFDB delving.

One question though: does Borogrove auto-record transcripts like IFComp? I always find it unnerving to feel like the author is looking over my shoulder as I play.

No transcript recording! HTML file uploads may contain whatever the author has put there but parser games use unmodified plain interpreters.

1 Like

Weird thing: I put up my game The Job there, in z5 format. The statusline is printed correctly when the game starts, showing location name and time. After that, the location name is updated as I move around, but the time doesn’t change. Even weirder: If I enter a menu the statusline is replaced with menu stuff. When I exit the menu, the statusline is printed again, and still the time shown is the time that was shown before. And it all works perfectly in Frotz etc.

Can you check if it works in Lectrote? It’s the closest equivalent to the online interpreters.

Good thing to try!

It fails in exactly the same way in Lectrote as in Parchment.

Someone tried hte z3 version on borogove, and it works fine. Of course, that’s to be expected since the terp handles the statusline.

The z5 version of The Job uses PunyInform’s standard statusline for z5, which uses a few special tricks to do its job:

  1. It reads the width of the screen in the Z-code header.
  2. After printing one of the statusline fields, it reads the current cursor position to determine whether to back up, move forward or stay where it is, before printing the next part of the statusline
  3. It uses the @print_table opcode to print up to ten spaces at a time, to make it faster.

(1) is also done by the standard library, wheras (2) and (3) are not.

I’m that “someone”. Funny thing! During a time at work I also was known as “someone”. As in the sentence: “Someone should make coffee.”

Isn’t this an indication that the culprit is Lectrote? My understanding is that Lectrote is the backend of Parchment.

I also tried a couple of Zilf-compiled games that have issues in the version of Parchment used on IFDB, but they work fine as far as I can see on Borogove.

1 Like

Well they all use ZVM, but the iplayif.com version of ZVM is much outdated.

I thought that I’d fixed all the status line issues. So maybe it’s print_table, as it’s so rarely used?

Is there any way for an author to find out the number of times a game has been accessed?

Could that value be made public and displayed near a game’s icon?

Edited to add:
It’d be nice if some other information could be displayed, too, like the size of the game.

Thanks a lot for providing this service!

1 Like

I’m debugging it now. It doesn’t seem to be print_table or get_cursor. I’m getting some very strange results now, but I’m sure I’ll get to the bottom of this.

1 Like

Found it. The interpreter clears bit 1 of byte 1 in the header. This bit bears the meaning “Should the statusline show time?”. For z3 its value is read and used by the intpreter. For z4, z5, z7 and z8 the interpreter should just leave the bit alone, since both Inform 6 and PunyInform games use it to remember whether to show time or not. PunyInform will show the time anyway, but it won’t increase the time if this flag is clear.

1 Like

It doesn’t count the plays yet, but when it does it’s a good idea to show it to the author. The count probably won’t be shown publicly because I’m a bit concerned it would encourage trying to artificially increase the number.

2 Likes

Hmmm. I didn’t know they used it after version 3. I kind of don’t like that, but it must have been like it for decades by now. I’ll fix it in ZVM, and also raise a ticket for the Z-Machine spec saying it should be noted that Inform uses it so don’t reset it.

1 Like

The standard v1.1 leaves the bit undefined for v4,v5,v7,v8 really, and just like with bytes in the header that are undefined, the interpreter should never change them. The bits and bytes marked with * in the Int column are the only parts of the header that the interpreter may alter.

3 Likes

I noted a little issue with the site. This is run on Chrome under Windows 7.

If you, as in this case, use the fixed font in the game. It works correct from the start but reverts to the default font for session 2 onward. I don’t know how the site remembers where I was in the game but it doesn’t remember the font preference. The game sets the font when starting and don’t touch the settings anymore. See screenshot.

Update: It’s the same in Lectrote so I guess that it’s a ZVM problem.

Borogove

Lectrote 1.3.5

Isn’t the font information also stored in the header of the Z-machine?

It’s easy to fix the games by resetting the prefered font everytime the prompt is printed. So it’s not a big issue.

The only text formatting option that is part of the save state is the header bit, which is deprecated and shouldn’t be used.

However those look like autosaves, which can store more info. I thought I was storing all the IO state, so I’ll have to check again.

Edit: Actually I am storing all the IO state, I just need to use it when autorestoring. Ooops!

Edit 2: Hmm, but actually, I thought GlkOte should be taking care of it all. So I’m not sure what the actual problem is.

2 Likes