prev | toc | next

2.6 Building the Argo Database

Building the Argo database — the collection of definitions for skills, spells, psionic abilities, advantages, disadvantages, character templates, weapons and other objects, NPCs and creatures that give substance and life to the RP environment — is easily the most time-consuming part of setting up Argo. A number of entries must be made for each entity in the database, and in all likelihood you will frequently find yourself `backtracking' as you realize that a planned addition to the database requires other, logically prior additions: for example, you want to define a new type of weapon, and in the process of doing so realize that you also need to define a skill that regulates its use, other objects that provide defences against it, still more objects required as tools or materials if players are to be able to make instances of the object, and possibly still more skills, tools, and materials necessary to make or use the supporting materials.

To a certain extent, this process can be shortened by the use of configuration scripts: uploadable files containing property settings that together consititute database entries. By their very nature, though, these scripts will invariably produce generic database entries that are neither as detailed nor as specific to your world as would be thoughtful definitions that you and the other staff members develop on your own. (The scripts available on the Argo website will be introduced at relevent points in the following discussions.) Staff members on Argo MUCKs are encouraged to use the lsprop and ex commands to capture the properties that constitute database entries for well thought-out abilities, objects, templates, etc., that they have developed, and mail them to this website: workable submissions will be collected, put into upload script form, and made available for download.

It should probably be noted at the outset of these discussions that while the manual frequently refers to `the Argo database', it is not a separate object or file on the server, or even a true database in the commonly accepted usage of the term: it is simply a collection of property directories within the @a/ propdir of room #0 or the parent room of a realm. (Players and other Argo-enabled objects also have an @a/ propdir, in which settings specific to that object are stored.) You can get a good start on understanding `the Argo database' by examining the contents of the @a/ propdir set on your world's room #0. (Only wizards have access to this, or any property or propdir with a leading @ `at' character in the name.)

As you will see in the following discussions, all database entries belong to a `category': the general type of whatever is being defined, such as `skill', `spell', `object', `template', etc.

Almost all entries to the database are made with the +define command, which puts you at a prompt that steps through the process of creating the different types of database entries. As with all Argo prompts, you can talk and pose while at the prompt line, but cannot use other MUCK commands. Entries can be removed from the database with the +remove command, which prompts for the category and instance of the entry you want to remove, and then deletes it from the realm's database. All database entries exist at a realm-wide scope (the entries will be readable from anywhere in the realm; different realms have different databases).

There is no utility for modifying individual properties within a database entry. For example, you cannot change how much damage a broadsword does without completely redefining the object. A wizard can, however, directly @set the property to be changed. When modifying the database in this way, first closely study existing properties for the entry in question and other entries within the same category to ensure the value you are setting is in the format Argo requires, and test it before announcing its availability.

Database entries can be copied to another entry, having a different name but the same category, within a realm or to another realm, with the +realm #copy command, using the following syntax:

  +realm #copy <realm>=<category>/<instance> <realm>=<category>/<instance>

Entries may be moved or renamed with the +realm #move command:

  +realm #move <realm>=<category>/<instance> <realm>=<category>/<instance>

Note that while commands like +info let players get information about any entry in the database, editing the online manual to provide detailed descriptions, discussion of the entry's purpose, and any relavent policies is a separate step. Staff members are strongly encouraged to get in the habit of editing the online manual to provide entries for all but the most trivial definitions in the database.

The following pages discuss the process of defining entries for each category in greater detail. The first of these, on defining skills, goes into considerable detail about the +define interface. Subsequent discussions are abbreviated, covering only those aspects of the definintion process unique to the category under consideration.

prev | toc | top | next