My Text Adventure Authoring System

I hope this is the right forum for this.

I made a text adventure authoring system. Started working on it way back in the early 90s when I got hooked on Zork. In the last 3 years I spent a considerable amount of time to make a release version.

Some characteristics:

  • written in C;
  • interpreter based;
  • English parser;
  • text only;
  • the development language is less complex than a programming language, but it's not like natural language;
  • Runs on Windows and Linux. Story and save files generated on windows can be used on Linux and vice versa;
  • There are 2 versions of the interpreter. A console version (windows cmd, linux terminal) and a version integrated with Andrew Plotkin's Glk libraries;
  • To prove that this is not some "Work-In-Progress-and-an-impression-of-what-it-could-finally-look-like" thing, I ported the medium large Inform 7 game 'Bronze' (Bronze is written by Emily Short and has a license that allows derivative works). The port is about 14.000 lines and compiles in 2 seconds;
  • I made a sample story 'Escape' to illustrate the authoring system's possibilities. In Escape your mission is to get out a building with help from an npc named Fred.
  • Of course a Cloak of Darkness implementation is also available.

My next steps are:

  1. invest in a (used) macbook and make a Mac OS version;
  2. make a browser based parser so stories can be played online.

I would appreciate feedback on the current release as to help me decide whether it is worthwhile to invest more time and also some money (for a Macbook) in this project.

Executables, sources, documentation and sample stories are at:

-- edit: new version.
https://www.dropbox.com/sh/2mhitd376gc4osh/AAClQJME_PCXHgzaTM94I5HSa?dl=0
-- edit

Thanks for reading...


Hi, Great work!

I built both the interpreter and compiler and they worked right away.

If i get time, i might make a Brahman adaptor for an xvan "engine", then it could run in a graphical environment and on mobiles.

interesting.


Thought i'd try a Brahman GLK adapter engine onto xvan... ho ho!


also, have this bugfix,

void GetGlkInput(line_buf)
char *line_buf;
{
  int     gotline;

  int     len;
  event_t ev;

  glk_request_line_event(mainwin, line_buf, INPUT_LINE_LEN, 0);  // not 255
  gotline = 0;


How did you do that? Can it also be ran from a browser then?

I am going to look into the bugfix. I do everything for a reason and INPUT_LINE_LEN has value 80. I must backtrack why I set it to hardcoded 255.

WE cannot send PM on this forum?


Hi Marnix,

I'm currently developing a graphical front-end for IF engines. The engines work as plugins. I was tempted to try xvan by adapting the GLK version. This means it wouldn't be too hard to connect any GLK compliant engine. I'd need to do a bit more work because right now I've only connected the essentials.

BUT, you could have graphics and fancy fonts!

GLK has windows, but Brahman has channels. You write text to a channel and Brahman will display it. I've only wired up the main text channel. For example, another channel is the status line. Other channels are things like pictures, icons and sound.

For your question, no sorry it won't run in a browser, but it can compile for most platforms including Android.


Look! no tying!


Hi jkj yuio,

I'm trying to get an understanding of the readiness of Brahman. Apparently you're using the Cloak of Darkness out.dat storyfile. Suppose you would replace it with out.dat from Escape or the Bronze port? Would that work straight away?


Yes, but you don't automatically get links, but the inventory drawer works. The links only work if you put markup in the game text. I did this for COD experimentally.

eg,

   d_entr_long  "You are standing in a spacious hall, splendidly decorated in red /
                 and gold, with glittering [[chandeliers](x chandeliers) overhead. The entrance from /
                 the street is to the [[north](n), and there are doorways [[south](s) and [[west](w)."

also for generic things like this:

  print("There is [a] [[[this]](get [this]) [this.r_preposition] [the] ")  
  print(owner(%this))
  printcr(".")

I made an updated version. There is now a tutorial that shows how to implement a story from scratch.

It can be downloaded from:

https://www.dropbox.com/sh/2mhitd376gc4osh/AAClQJME_PCXHgzaTM94I5HSa?dl=0


Based on a very brief look at the tutorial, your approach looks similar to that of Alan 3: the authoring system gives you no verbs by default, but gives you all the tools to make your own easily (which is how I ended up writing my own standard library, and an article about it on top of that). Which makes it a lot easier to customize and experiment with than more mainstream authoring systems. Hopefully enough people will find it a compelling feature, because we need more games made with alternatives to Inform 7.


Yes, you're right. Well, there is 1 predefined verb, "go". That's because the parser will insert is as the action for direction commands like n, s, .. But the implementation of go is up to the writer and he may decide to leave it empty. I wanted much flexibility and thus little predefined things in the language, so there's also no special objects like doors, stairs, etc. But theses can be created easily and reused.
I'm not a good author, so to test the completeness and possibilities of the language I ported the existing Inform 7 game Bronze to my system.


Right! Alan 3 also has "go" built-in, along with "undo". That makes sense. And good work on porting Bronze. XVAN must be quite powerful.


Do you have a link to the article you mentioned in you earlier post? I would like to read it.


Sure thing! With apologies for the shameless plug: http://felix.plesoianu.ro/wiki/index.php/Intfic/DesignIFstdlib -- hope this helps.

Edit: I now realize how old that article is; in the mean time, I considerably expanded the library for another game. You can find the new version on GitHub: https://github.com/notimetoplay/city-of-dead-leaves/blob/master/retrolib.i


This topic is now closed. Topics are closed after 180 days of inactivity.

Support

Forums