Object Oriented Games

Author: David Librik

[Note from Amit: TADS is now available for free.]

Hi there,

This is my second message to this delightful medium, which I have only
recently discovered. The first one was about the report I am writing
about the possibilities of using object-oriented programming in game
design. I got some very useful replies to that one (thank you very
much), so I'll try another one.

My report should be finished near the end of November. After that I will
choose a subject to finish my studies with and this will probably be the
design of a new object-oriented system for adventure games. Now I can
hear you say "Aren't there already several systems around?", to which I
can reply "Hey, count the number of wordprocessors and desktop
publishers". But this is not the point. The important thing is: this
could be the first official study project on a university, dealing with
adventure games (Well, at least the first at my university, that is).

I already have some ideas of the different possibilities that I could
come across:

1. The system should be as general as possible, of course, to allow the
development of a multitude of adventure games (which will not be my
job). Trivial.

2. Repeating descriptions of area's/objects/actions and answers of NPC's
should be variable according to all possible systems: linear, circular,
random, whatever. This should also be the case for the results of
actions, position of objects, storyline, etc.

3. There should be virtually no difference between NPC's and the players
character. NPC's should be able to communicate with each other (like in
Lure of the Temptress), perform actions on objects, carry them,

4. It would be nice to introduce a state of mind for all the NPC's. The
number of games that make the NPC's forget that I kicked or insulted
them within seconds are innumerable. The storyline could depend on how
you treat other characters. Changing feelings of NPC's towards other
characters could make the game very enjoyable.

5. NPC's should be able to know things of other characters. This could
be only the face, also the name and job or even their actions up to a
certain degree. Then it would be very interesting communicating with all
of them.

6. I believe many game makers make the mistake of dividing the world in
characters, objects and area's. This could make several situations
almost impossible, like carrying dwarfs (a character could only carry
objects), putting them in a box (an object could only hold other
objects) or entering a new world that's inside a suitcase (area's hold
objects, not vice versa). Everything should be possible. After all,
that's what many adventure games are all about.

7. Maybe I will use aspects of RPG's like character statistics and
combat issues, for RPG's and adventure games are very related to each
other. (Well, that's what I think!)

8. The possibility of playing the game with several players controlling
different characters should be left open. 

9. I will have to deal with things like interpreters, multi-tasking,
garbage-collection, etcetera, etcetera...

10. The most important thing about it is that I want everything to feel
like "real". Like characters should not stay on one position during the
entire game, as in many Sierra-like games, 'cause "normal" creatures
don't do that. I just look around here and find that many object have
their own characteristics. Some objects can be connected to each other,
forming one new object, others perform actions periodically (at certain
intervals or at random), and some objects change form when certain
actions are performed on it. This could all be modelled in an object-
oriented design.

Now, finally, here's my question to the readers of this newsgroup. I am
expected to find people that can assist me in my quest for information
about this matter. My teachers know all about OOP but nothing about
computergames. If I find people who have experience in
designing/implementing adventure games/rpg's they could take a look at
my results every now and then and comment on it. I will be open to any
criticism and ideas that could lead to some nice results in this
project. When I do not find enough help from outside this university,
I'm afraid I'll be forced to find another subject to finish my studies


Several remarks:

- My project will start in december and the final report should be
finished in july 1993.

- The primary focus will be on object-oriented design. The
implementation could be carried out when there's any time left, or in my
spare time after I'm graduated.

- Some previously mentioned ideas may seem too ambitious for a one-
person project, but that's just what I want to find out. Like a child
before Xmas, I put anything on my wishlist not expecting it all to come

- I love to get similar ideas from other people. Don't hesitate.

- Of course, anyone who has given me useful information during this
project, is entitled to receive a copy of my report next year. (So I'll
have to write it in English, oh-ooh...)

- I have some quite clear ideas on what I want to do, but it all depends
on my teachers who may want to move this project into another direction
or even replace it with another. So, don't say I promised you anything.

Hope to read some nice replies, bye,


| Jurgen Appelo                | Delft University of Technology   |
| Hooikade 28                  | Faculty of Technical Informatics |
| 2627 AB Delft                | Julianalaan 132                  |
| The Netherlands              | 2628 BL Delft                    |
| +3115-618668                 | The Netherlands                  |
| appelo@dutiag.twi.tudelft.nl |                                  |
You want to do a study of object-oriented Adventure Games?  Well, step 1,
familiarize yourself with what's out there already.  TADS is a popular
system.  It's written by Mike Roberts and is shareware: you can FTP it
from msdos.archive.umich.edu, file /pub/msdos/games/adventure/tads.zip
(there are also Macintosh and Atari versions on the same machine, probably
under /pub/mac/... and /pub/atari/... though I'm not sure of the paths.)
TADS is similar to C++ in appearance.  However, to really pick up much about
the system, you'll have to register and get the big manual with lots
of sample source code and tools.  It's quite cheap and I recommend it.
You can get registration information by sending e-mail to Mike Roberts
at 73737.417@compuserve.com, or by looking in the shareware TADS package.

There are several other Adventure Development Systems, all more-or-less
object oriented.  ALAN is a popular one; you get the source code to the
compiler for that.  ADVSYS and AGT are also good.  I believe these are
all LISP-like in appearance.  I don't know how you'd get them, though;
perhaps someone else can help.

As for TADS, which I'm more familiar with, I don't know how well it
matches your criteria but it certainly can be extended.  What you call
"NPCs" (other Actors) are not quite as general as you want: they do run
independently, but Adventure games are mostly structured around your
command and responses to it.  If you want "smart" Actors you'll have to
write some AI-like code.  I'm sure Dave Baggett at the MIT AI lab, the
author of the classic "Unnkuulian Unventure II" Adventure game, will be
full of suggestions.

By the way, I'm not sure I follow what you mean about Sierra games.  Sierra
On-Line hasn't made an adventure game since the days of TimeZone and
The Wizard And The Princess, have they?  Graphics would certainly be
nice but any sort of non-static graphics is hard to do in any Adventure
development system I've ever seen -- they're not oriented towards that
sort of stuff.

If you really want lots of discussion of this, you should post your note
in REC.ARTS.INT-FICTION.  That is the newsgroup for people writing Adventure
games.  You should get more advice than you'll ever need.

- David Librik

"You are standing before a roughly-hewn doorway in the rock.  Mist curls out
of the blackness beyond.  The arch above is carved with the words 'WRITING
YOUR OWN ADVENTURE SYSTEM.'  A small sign next to the door reads 'ABANDON
Email me at redblobgames@gmail.com, or tweet to @redblobgames, or post a public comment: