Home


Search

Back issues

Guestbook

Community

Related links

Subscribe

FAQ

XYZZYnews

More Tales From the Code Front:
Porting from OS/2?
Rexx-Adventure Steps Up to the Plate

by Mike DeSanto

The idea of writing a text adventure engine (the term interactive fiction is a new one to me) has been wandering around in my head for about 4 years. I played with AGT while I was in college, but got bogged down with classes and never really got anywhere. I also spent some time fiddling with LambdaMOO in the Metaverse at Illuminati Online (io.com). That never really went anywhere either.

I always get frustrated, you see, with "guess the verb" problems. With graphic adventures it got even worse with "find the pixel" garbage. The other problem with most adventures, text or graphics, is telling background objects from objects you can manipulate. The usual routes around this are 1) including only objects you can manipulate in the descriptions or 2) spending a lot of time reading "I don't know what the XXXX is."

I wanted a game where it was always clear exactly what you could manipulate and how you could manipulate it. Take, for example, the aquarium in Zork II. You have to break the aquarium by throwing the sword at it. Swords, in my experience, are not made to be thrown. You throw spears, rocks, or knives. You do not throw swords. If throwing is an option for the sword, I bloody well want to know that before I go looking for a hammer!

So, Rexx-Adventure was born. Since 90 percent of creativity is intellectual property theft, I will credit my sources. Much of the data storage design was inspired by LambdaMOO. I loved the simple IF-THEN-ELSE CONTINUE structure of AGT. The screen layout was inspired by the early Legend games (Time Quest in particular), and the Magnetic Scrolls series.

So, I started working on Rexx-Adventure. In the design, I tried to meet the following goals:

  1. Simple to use. Playing a game should not require instructions. Simply start the engine, load the source, and play.
  2. Simple to program. A simple game should not require extensive programming knowledge.
  3. Everything based on objects, not on fixed flags and verb lists. Every object has its own verb list and arbitrary flags.
  4. No guessing about what you can and can not manipulate, or how you can manipulate it.

These goals have been met. Rexx-Adventure will automatically load and run a game simply by double-clicking the game source file. The source files are easy to read and reasonably logically laid out. All checks done every turn are stored in a centralized place (a special object just for that task).

Every object can have any number of flags to determine light, weight, open/closed, or any other property you wish. Fewer than five flags are required, and several of those can be ignored if you want to. Programming is simple, with 20 or so functions providing everything you need for the average game. If you need more, outside functions can be added. In fact, any program that will run under OS/2 can be a part of Rexx-Adventure.

However, there are a couple of serious limitations, hopefully to be fixed in the next release. First, there is no implementation of indirect objects. When I started, I said "Adventure didn't need indirect objects, why do I?" Now I know better. The other major limitation is the absence of "object in object" support. For example, "water (in the bottle)" or "fluff (In the thing-your-grandmother-gave-you-that-you-don't-know-what-it-is).

Despite these limitations, I am proud of Rexx-Adventure. It is a very powerful engine with (hopefully) a promising future. I hope all of you out there with OS/2 will try it. Rexx-Adventure is released as freeware. Feel free to write shareware games using the engine, as long as it is clear that the fee is for your game, not my engine.

Rexx-Adventure requires OS/2 Presentation Manager. It was written using VX-REXX from Watcom Inc.

If anyone is interested in porting Rexx-Adventure to other REXX platforms, I will help in any way I can, including giving you the source code. REXX interpreters are available for all IBM mainframes, Macintosh and Amiga. REXX is also included with IBMs PC DOS 7, and MS-DOS interpreters are available.

Matthew Raymond has inquired to me about writing an AGT-to-Rexx-Adventure conversion program. He can be contacted at mraymond@acs.bu.edu.

I would be glad to hear any questions or comments about both Rexx-Adventure and The Resident. I can be reached at desantom@io.com.


Go to the next page in this issue
Flip back to the previous page
Go to the XYZZYnews home page
This site is maintained by Eileen Mullin
Legal information