Booktasy:

Booktasy

Hello there people, this is my introductory post where I also introduce something I have been working on for some time!

Booktasy(Book+Fantasy) is tool to specifically make parser-based interactive fiction. The system itself is a shell similar to a couple of fantasy consoles out there, though Booktasy doesn’t incorporate hard limits for software made with it, meaning that there is no character restrictions or anything of the sort.

To start I could list off a few features of the engine:

Features

  • Growing API that eases the creation of a parser based interactive fiction
  • Easy to produce and distribute your game
  • Easy Lua language API
  • Small size
  • Complete game-making environment

Now that being said, there is still much to be done and I acknowledge that. The current product is in no way the complete version and things will improve even more in the future.

Why make yet another tool?

The reason I started to make this is because I really wish there was a simpler way of making parser-based IF without having to use systems such as Inform and Adrift for example, not that I hate them but I just don’t feel comfortable with them. Other systems for IF such as Twine are very much their own thing and not at all designed in the way I would like them to be. I guess you could call this my own attempt at “remaking the wheel”.

I also made this in hopes of simplifying the entire IF making process. Having the engine immediately spit out an .exe or an index.html file is way easier than having to follow a guide on how to compile old formats to modern systems.

Why am I here, specifically?

I am here first of all to announce this to the world! I like IF of all types and I would love if maybe one day my system was used to make a super cool game!

Besides making my system known I am also here to give out some free keys since I figured that it would be nice to have developers here try my tool without cost and even make little games with it. Of course, any feedback given would be GREATLY appreciated.

Please send me a private message if you wish to get a free key!

AI Usage disclosure

What about AI? Well, I used AI in the making of this project, the reason for such is simply because even though I understand the programming of the project I wouldn’t be able to do things quite as fast as AI can. I also made example games by feeding the the AI with the API itself so I could have game files to quickly test new things.

My own human-made ideas will come in game format after I make sure that Booktasy is a decent product for people to use first.

Why a paid system?

Surely some of you are questioning: “Wait, this is paid? Why?”

The real life truth is that I already am engaging in a couple of (free) projects, between these projects and my actual job I really need some incentive to keep this going. I figured that a 10$ amount would be fair as it is even cheaper than other tool’s licenses out there. One time buy should get you both the current software as well as any updates that come after.

There is no “piracy-check” or any kind of annoying system in place so if you really wanted you could just give your friends a copy of the software and I would never know. I do ask however that even if you don’t buy it, try to understand where I am coming from with this.

License

License is basically do whatever you want with the products you made using Booktasy, as long as you aren’t selling Booktasy itself or claiming it to be your creation you can use your stories in any commercial or non-commercial capacity.

Link for Store Page and Documentation

3 Likes

Examples page is 404:

https://booktasy.vercel.app/docs/example_game/

Sorry, this is because of a difference between example_game and example-game. The correct one is the last one.

That shows the source code. Where is a link to where we can play something built with this system?

For now the only demo of content is this older story made with an earlier version of the system. I will post a newer(and better) story made with the system later on itch too.

Bloody Job, a vampire game from my account dreamy-sheep on itch io. I can’t seem to be able to post links here.

Yeah, new users aren’t allowed to post links until they’ve spent a certain amount of time reading and interacting with the forum. We get enough spammers that it’s proved a useful countermeasure to have. I manually approved the links in the first post here.

For now, though—it’s always nice seeing new parser authoring systems, but what selling points does this one have over Inform/Dialog/TADS/Adventuron/etc? How exactly does it make it easier to write IF? What in particular does it help with? With so many free systems out there, why should people pay $10 for this one?

This isn’t meant to be discouraging, but as a Linux-user, I can’t try it out even if I buy it or get a discount code, and you say you don’t have any demo games built with the current version. What should be hooking me right now? What should make me interested in this?

(Examples: Dialog is a modern, mostly-cruft-free language where the parser can be easily customized and you can use hyperlinks alongside text input. Inform 7 has its natural-language syntax and relations and descriptions. Inform 6 is close to the bare metal of the Z-machine and lets you do anything the virtual machine can. Adventuron is easy to get started with and designed for classroom use. TADS is immensely powerful in general non-domain-specific ways that let you implement anything you want, while still having very powerful libraries specifically for IF. And so on.)

5 Likes

Having the engine immediately spit out an .exe or an index.html file is way easier

Hello. Is the feature mentioned above a reality? For example, can the example game be turned into an EXE or HTML by your system in its current form? Are there any docs on this? Are any other targets supported, eg mobile?

If so, i recommend you have a playable web link to your example.

Best of luck.

1 Like

First of all, thank you for taking the time to reply. Thanks for approving the links too.

Before anything else I have to say that this is my first commercial project like that, even though I’m mostly a beginner in the product designing side of things I am striving for providing the best experience I can with my little software. I sincerely apologize if I wasn’t very clear or descriptive while putting my thoughts to writing here.

Other IF software?

You mentioned a couple of software and I would like to answer why people would choose Booktasy and not other systems:

Inform

I personally liked it but the “natural language” isn’t as intuitive as one would expect, I had some troubles with it. Especially since not everyone comes from an english-speaking country. Of course, it’s a perfectly useable engine.

One fact though is that Inform doesn’t directly compile to an .exe, .appimage or .html file. Is this a dealbreaker? No not really, but still there are people who would prefer a system where they can simply give a command and the system spits out binaries and a web version, similar to fantasy consoles for example.

Adventuron

I actually really do like Adventuron! The big problem for me though is that the license in the website itself states that it should be used only for personal and free projects. From where I remember the author wrote that it’s not for commercial use, it’s mostly for learning, and that’s ok! But some people would like a system where they can publish their games without any licensing issues. In Booktasy games are, as I said before, your property, you can do whatever you want with them.

TADS

Also doesn’t directly makes an executable. I never really used it in the development of any projects but as far as I know it’s a robust system with a lot of power behind it, good! But Booktasy is also a powerful alternative by using Lua, quite a few tools out there use Lua as a scripting language for their games, Lua allows for doing complex things while still being a simpler programming language.

Other Engines

Some of the other engines here are very good. I’m even partial to using some of them when I started looking around. I see each engine as it’s own world, some of them are far from offering a parser-based experience for example, others do offer the parser-based experience but are somehow very different than Booktasy in terms of structure. I sincerely believe Booktasy is different enough from other engines out there to make it worth it’s usage.

My Own Engine

The reason as to why people would choose Booktasy is a complicated question to answer.

Other than the features that I have already discussed people can choose Booktasy just because they like my own idea of what the interface should look like. Perhaps people would choose it because of the way I structured the API. There are quite a few reasons as to why people would choose Booktasy and these can be very subjective.

Take PICO-8 for example, PICO-8 is a fantasy console that allows one to create a game in a simple way and also publish this game to the major platforms. PICO-8 is not the only one in the market however, out of the top of my head there are other systems such as TIC-80 and even Pyxel. Why do people still choose PICO-8 when there are free alternatives? Shouldn’t everyone flock to the free software?

No games?

This is a valid concern. I very much recognize that it’s hard to hook someone on something where they have no visible examples of how it would work, this is EXACTLY why I am telling people to ask me for the keys, this is the birth of this little project and I would like people other than me to make cool games with it.

As of right now though there are two projects that allow the user to see Booktasy’s functionality. I updated the website, one of them is already playable there.

Linux?

I didn’t forget about linux-users since I’m one myself, for now I have to admit that I didn’t really think on a linux version, the reason being that I assumed most people are Windows users and mostly windows users would be interested. Not to worry though, I will provide a linux version soon.

1 Like

Inform does directly compile to an HTML file.

It is true that compiling to a standalone executable is hard with Inform. I think Lectrote is the best option, but it’s hard to use.

This is a bit beside the point, but since you mentioned it: I don’t feel like exporting to executables is a traditional “fantasy console” feature. PICO-8, which you mentioned, can do it, but it’s not exactly its defining feature - the PICO-8 ecosystem also consists of “cartridges” that people exchange on itch.io and the built-in BBS, and other fantasy consoles follow the same paradigm (Octo, Decker, etc). The Z-machine itself can be considered a fantasy console (one of the first, after CHIP-8 probably) and the story files its cartridges. More important to how this delivery mechanism shapes its medium, though, is the fact that binary executables eventually don’t work anymore (probably), while story files for an open “fantasy console” can always be made to run on new hardware.

All that aside, good luck on your project! I’ve seen all the new platforms pop up lately, and I’ve actually thought that someone should make one that uses Lua, so I’m glad to see you using it.

1 Like

Thank you for the correction and for taking the time to read it!

I didn’t want to make the usual cartridge system and all of that jazz because I don’t really see Booktasy as being a fantasy console. I mentioned fantasy consoles more like an example. Booktasy doesn’t have limitations and a virtual machine so it’s actually more of an engine or tool. I have to say though that the Booktasy’s system also allows for the direct playing of a .lua file so even if for some reason binaries become unusable in the near future the users can still share their games in a .lua format!

Thank you again and if you feel inclined to test it just ask me for a free key!

Your game:

> get torch
Unknown command: 'get'.

Sorry, I can only suggest you do a bit more work on your system first.

1 Like

This was an oversight, something easy to fix. Did you make it to the end?

Most interpreters that are commonly recommended are also really easy to use. Lectrote and Gargoyle (and undoubtedly others) open automatically when you open a .z8 file (or whatever).

No, I gave up. Even very basic parser inputs do not work. Frankly, this makes your “system” look quite bad indeed.

I highly recommend you endeavour to make significant improvements and get more people to play test.

Tower Entrance : You stand before a large stone tower. The door is open.
You see here: Torch.
Also here: Old Wizard.
Exits: north

> get torch
Unknown command: 'get'.

> x torch
Unknown command: 'x'.

> look at me
Don't see that.

> look at door
Don't see that.

> close door
Unknown command: 'close'.

> go through door
Can't go that way.


> look at wizard
Don't see that.

> look at old wizard
#[E]{Old Wizard : A frail man in blue robes.

> take old wizard
Don't see that.

2 Likes

I poked through the docs in a casual way. I appreciate how you’ve scoped everything to the top level Booktasy object. It looks like an interesting start at writing a parser framework, though still very bare bones. I tried a few turns of your example game, but it fails to handle some very basic IF conventions. I think you might be a little premature in “announcing” it, but this might be a good opportunity to ask for some beta testers.

You see here: Torch.
Also here: Old Wizard.
Exits: north
 
> get torch
Unknown command: 'get'.
 
> take torch
Took Torch.
 
> look at torch
Torch : A wooden torch.
 
> x wizard
Unknown command: 'x'.
 
> examine wizard
Unknown command: 'examine'.
 
> look wizard
Don't see that.
3 Likes

I appreciate it, I will take some time to make the improvements needed! Now I have a question then: Is there a standard that I could base myself on? I mean, what other conventions I can look into implementing? I genuinely want to make this work with a good base-standard.

1 Like

I guess the obvious answer is to play a bunch of text games. You can find plenty of them at IFDB. I’m sure other folks can chime in with particular recommendations.

Then, it’s good to just ask people how they expect a parser based game to behave. Your example game doesn’t handle “x thing” or “examine thing” in place of “look thing” and that’s a bedrock behavior that most parser-based interactive fiction players would expect to be able to do. It doesn’t handle “look wizard” because it’s expecting “look old wizard”, and most players will expect to be able to use a partial name. (I understand that it’s probably doing some kind of string lookup under the hood - and that just needs to be a bit more robust.)

I’m developing a new parser too, and this is an ongoing thread that I’ve found useful. It goes pretty deep into the weeds with a lot of stuff you might not need right now, but I’ve been finding it all very interesting.

And then, it might be that you only want to write a two-word parser, like the post that begins that conversation. There’s been some discussion about that too. Two-word parsers are fine! As long as you teach your players what to expect. Possibly your example game might benefit from some explanation up front about what it understands and how to interact with it.

1 Like

At the bare minimum:

  • LOOK/L for reprinting the room description
  • TAKE/GET [thing] to acquire an object
  • DROP to get rid of an object
  • EXAMINE/LOOK AT/X [thing] to print the object description
  • GO/-- [direction] to travel in a direction, bypassing open doors automatically
  • TAKE should do implicit actions (e.g. first taking the box, then taking the book out of the box)
  • objects should be identifiable by a single word, possibly with disambiguation
  • directions should be able to abbreviated to one- or two-word names (e.g. N, SE)
  • objects in the description should have descriptions
  • actions that cannot be done should be justified in-game
  • non-traditional commands should be adequately hinted at
  • robust synonym support
  • improper commands should include hints as to how to properly input commands, or should work implicitly (e.g. ATTACK TROLL WITH SWORD → You don’t need to use prepositions in this game.).
5 Likes

Yes, of course - I didn’t mean that Lectrote is hard to use as an interpreter of story files, but it’s relatively hard to use (but definitely possible, which is why I mentioned it at all in that context!) as a vehicle for releasing games as (bundled) executables.

3 Likes

I don’t mean to bring you down, OP, but it looks like you’ve never played a modern IF game before, let alone an Infocom, Magnetic Scrolls or Level 9 game before. Understanding look/L, examine/X, and take/get should be the absolute minimum for any parser IF engine. Opening and closing doors, containers, surfaces/supporters, Etc. are also required IMHO. It also looks like you want to create non-player characters, but with the only example we’ve seen so far, the wizard, we can’t even look at the guy, let alone talk to him. If you’re going for a more Scott Adams style game, then that’s cool, I guess, but ScottKit, Adventuron and DAAD (the latter two being more complex than ScottKit, as there are certain restrictions on the Scott Adams format) exist for this purpose.

4 Likes