Does anyone have a system to produce different VMs w/RemGlk?

At Collaborative playing online? - #21 by joelburton, I’ve been tinkering with a “good-enough-for-me” way to collaboratively play IF w/friends in a browser (without the kind of Slack/Discord/MUD interfaces).

That’s working decently, but a big sticking point for others using it is that it’s a hassle to find and compile the different VMs w/RemGlk — while there are packages in different OSes for IF VMs, these are never compiled against RemGlk.

Instead, you have to download those individually, often tweak a Makefile, and compile it, and put the generated executable in a predictable place.

This is tricky because:

  • some VMs don’t have a clear download-latest-release place; instead, it appears to be “clone main”
  • almost all seem to use Make, but some don’t allow you to pass variables on the CLI to make, and instead need to edit the Makefile to set variables
  • all the ones I’ve seen create executables with their “normal” names (“glulxe”, “bocfel”, etc), so it can be easy to confuse the one with a normal Glk-end with the RemGlk one). On my computer, I’ve just put them in /usr/local/bin, with a “r”-prefix (“rglulxe”, etc)

To help people try out the collaborative player, I’ve written some rough docs on how to do this. I could turn this into a hacky-shell script to automate some of it.

I’m hoping someone has a better idea, or has built something like this, or has a repo of VMs compiled against RemGlk?


Alternatively, there’s EmGlkEn, which provide a bunch of VMs compiled down to JS, so they’re OS-neutral; you just need Node (which is easy to get from your OS). This works as a plays-anything system, but it uses @Dannii 's GlkOte TS replacement and GlkRem Rust replacement. Somewhere in that system, it loses the ability to emit URLs for embedded images in blorb files.

TS and Rust aren’t great strengths of mine, so I’m a bit over my head on this path. If anyone has done anything here and can help out , that’d be great.

Thanks for any pointers.

1 Like

Are you familiar with CMake? Both Gargoyle and Emglken use it to build their multiple VMs. It lets you extract out the commonalities, while letting you control your own particularities, like binary names etc.

Most IF interpreters are pretty stable, so cloning from Git is usually fine. You could wait for releases if you preferred. Not everyone likes Git submodules, but you can use them too, I do in Emglken and Parchment.

I’m so-so on CMake; I can see that they’re using it in their terps sections. I’ll dig into that. Thanks, @Dannii !