Gruescript
Gruescript is a tool for creating point-and-click text adventures which feel like classic 'puzzlebox' games while eliminating the need for the player to type, making the games friendly to modern devices and players. You build your game online and download it as a playable HTML page, which you can host on your own itch.io site or elsewhere.
Click "Run Tool" (above) to run Gruescript. Documentation is available under "Download" (below).
If you prefer to develop offline, download "gruescript-beta.zip" below. This contains a copy of Gruescript for offline use (it's exactly the same as the online version), as well as a syntax highlighting file for Notepad++.
For an example of a full game made with Gruescript, see The Party Line. (The source for The Party Line is available from the "Examples" menu in the Gruescript editor.)
Gruescript is currently in beta. Please report bugs to robindouglasjohnson@gmail.com, with details of what happened, what you were doing, and what browser you were using, or post in the comments here, or raise an issue on github below. Thanks!
Gruescript is released under the open-source MIT License. There's a public repo at https://github.com/robindouglasjohnson/gruescript (issues and pull requests are welcome.) Share and Enjoy!
- 🏆 Winner, Best Technological Development in IF in the 2021 Xyzzy Awards
Thanks to: Leonardo Boselli, Ruber Eaglenest, Eve, Stephen Fowler, Laurent Gontier, Leopold Tal, Ninja Kitty Go, and all my Patreon supporters
Design principles (click to read)
Interactive fiction (IF) is broadly divided into "parser games" and "choice games". Parser games are the ones you type instructions into. Probably the most famous ones are the old ones, like Colossal Cave and Zork. Choice games give you buttons or links to make decisions, a bit like "choose your own adventure" books (with a little more state).
In the last decade or so there's been an explosion in IF forms, and a bunch of new authoring systems like Twine, Ink, and Choicescript. These mostly target mobile and web playability, because it's the 21st century, and mostly make choice games, a natural fit for mobile interfaces. (I want to make one thing absolutely clear: that is awesome. There's a subset of parser game fans who resent the fact that choice games exist. Gruescript is neither by, nor for, those people.)
Authoring systems, game interfaces, and game design are closely linked. Choice interfaces tend to favour story-centric rather than puzzle-centric design. Puzzle design is a Hard Problem if the player has to be able to see all their options all the time. This isn't to say there aren't excellent examples of puzzly choice games; but none of those systems make it particularly easy, at least with the type of puzzles parser games are remembered for.
Parser games still have an active subculture (just look at IFComp) but they've become more and more unintuitive to outsiders. It's not just that modern mobile devices don't have keyboards. Command prompts just aren't a familiar way of interacting with computers now.
So, this is my attempt to create a web/mobile-friendly authoring system for parserlike games, that identifies and preserves the qualities that make the parser interface suitable for those puzzly games—snappy prose, a tight world model, rapid back-and-forth interaction between the player and the game, with generalised verbs that don't give away your options before you think of them yourself, which are the things that most parser game fans actually enjoy about parser games—while eliminating the parser itself, which is the thing that most parser game dislikers actually dislike about parser games. It had to go.
(You may have seen the front-end before; I've used it in homebrew Javascript games, including Detectiveland, which was the first non-parser game to win IFComp in 2016. Like many "first non-X"s, it couldn't have won without imitating X as closely as possible.)
Gruescript's online editor is modelled after two tools I admire for their accessibility, cuteness, and strong followings among fringe gamedevs: Bitsy and Puzzlescript. My aspiration for Gruescript is to be IF's answer to those.
Status | In development |
Category | Tool |
Platforms | HTML5 |
Rating | Rated 4.9 out of 5 stars (18 total ratings) |
Author | Robin Johnson |
Genre | Interactive Fiction, Puzzle |
Tags | if, parser, parser-choice-hybrid, Point & Click, scripting, storygame, text-adventure, Text based |
Code license | MIT License |
Average session | A few hours |
Languages | English |
Accessibility | Blind friendly |
Download
Click download now to get access to the following files:
Development log
- Gruescript is now in open beta releaseAug 16, 2021
Comments
Log in with itch.io to leave a comment.
Cross posted on Reddit...
I'm joining the party late...downloaded it and am taking it for a spin. I like the design approach: hybrid parser, download finished game into a single HTML file, game data is separated from game engine, editor is HTML based, comes with examples, and a nice PDF manual. I don't see an easy way to include graphics?
No, there's no native support for graphics (yet) except to "say" html (and you have to avoid colons, which I wish I'd thought of when I made them syntactic, so use deprecated attributes or classes rather than proper HTML4+ style attributes) or muck about with javascript and use the js command, if that's your thing. There are various reasons why this is fiddly, including where the graphics go (am I going to need to let you upload them somehow?) but it's probably the single most common request I get, so I'll have a look at it next time I'm on a Gruescript dev spree. Lots of priority life stuff going on at the moment so I don't know when that will be! Glad you're enjoying it :-)
Thank you! I'll try "say" html way to display images. I'm currently learning the syntax so can't offer much at the moment, but my idea was to display a small image when a specific verb is used on an object. I'm hoping something like say <img src='image.jpg'> will work.
Yes, that should work, with the path to image.jpg relative to the index.html file (i.e. "image.jpg" if it's in the same folder, "images/monster.jpg" if it's in an 'images' subfolder, or whatever) - you'll probably want to download Gruescript and run it locally.
That worked for me. The more that I use this, the more that I like. I highly recommend it. Thank you for creating this and making it available.
Thank you, it's really cool to hear from people who are enjoying using it!
I still love Grue, hopefully you can find the time again someday for updating. :)
Really nice work, I hope you will find the time and energy to build on it. But imho, it should bring u a dollar instead of free for all (when they want), just to give you a point to still work on it.
Thanks! I choose to make it free, IF has always been an open culture and I wouldn't have been able to make any of my own games without free software by other people so it's nice to give something back
Maybe i found some errors in the manual. Where to report this?
Scroll up a bit ;)
"Please report bugs to robindouglasjohnson@gmail.com"
absolutely understandable
Hi Robin, I'm in the process of translating Coat of Darkness to French (and also make a French commented little game template. I'll let you know when it's done) and I was wondering if you plan to support images in a near future. It would be great to be able to display a location image, NPC's portrait and why not images for objects in locations. Amazing work so far. (BTW, I'm the Laurent Gontier you credit upper in this page)
In the built-in Party Line game, the first clickable command result has a typo:
prompt knock on $this
should be
prompt knock on {$this}
otherwise it prints "$this" into the transcript. Only pointing out the nitpick because the example is supposed to teach the syntax.
I put one of your sample games up on Observable to test out the export. It works great! ( Except save game which depends on prompt() but that's easily fixable )
https://observablehq.com/@triptych/hello-gruescript
Ah, interesting! I actually rewrote the save/restore interface without prompt() for Gruesome (which, despite being a parser game, uses much of the same engine), so I'll try to make that change to GS soon.
Thanks! Google Chrome folks are out to get things like alert and prompt deprecated. I don't think they should but it's good to not depend on those methods for the engine.
The latest version gets rid of the prompts and uses nice slidey modals instead.
This is amazing! Since it's open source does that mean you might accept pull requests? As a webdev passionate about IF it'd be great to contribute if possible?
yes, pull requests are welcome! Somebody already spotted and fixed a mistake in the build log.
Awesome! I'll take a look and see how I might help in some way.
I’ve only played with it a little bit but I really love it so far.
Looks like a great engine! Pity it doesn't support non-Basic Latin names for rooms and verbs...
It's just the internal names that have to be basic letters, numbers and underscores, if that's what you mean. You can set the display names to anything you like:
Looks like what I was looking for, thank you!
Exciting! Thanks for providing, I'll have to check this out...
A brilliant idea. I hope this takes off, and will use it if I find the time.