1. What you are building
A TADS game is parser-based interactive fiction: the player explores a world and types commands such as look, take key, open door and ask Morgan about parcel.
AccessiIf gives you a structured TADS 3 authoring workspace. You describe the game through dialogs and the Project Explorer; AccessiIf generates the TADS source and makefile underneath.
The main building blocks are:
- Rooms — places the player can occupy.
- Connections — directions between rooms.
- Objects — portable things, scenery, containers and supporters.
- Characters and topics — people and conversation.
- Doors — passages which may open, close or require keys.
- Boolean variables — true/false facts remembered by the story.
- Timed events — events which fire after a number of turns.
- Custom verbs and interactions — story-specific actions.
- Endings — conditions which win or lose the game.
2. Create a TADS 3 project
Use Ctrl+N from the main Creator and enter a project name, optional author name and projects folder.
Under Story type, choose Parser interactive fiction with TADS 3 - players type commands.
When the project opens, AccessiIf creates a separate TADS 3 creator window.
3. Understand the TADS Creator
The TADS Creator has two main panes:
- TADS project explorer on the left — structured rooms, objects, characters, doors, events, variables, verbs, interactions and endings.
- Generated TADS source, read only on the right — the source AccessiIf currently generates from the project model.
The status area reports project counts and build information.
The generated source pane is intentionally read-only. Make ordinary changes through the project tools so the structured project and generated source remain in agreement.
4. Rooms and the starting room
Choose Add → Room... or use the Project Explorer context menu.
A room needs a name and description.
Reception A narrow reception area with a battered desk and a door to the north. A framed notice insists that all parcels must be signed for.
The project always keeps at least one room. One room is the starting room, shown with [start] in the explorer.
To change it, select a room, open its context menu with the Applications key or Shift+F10, and choose Set as starting room.
5. Connections and directions
Once you have at least two rooms, choose Add → Connection....
Select:
- The room you are travelling from.
- The direction.
- The destination room.
- Whether AccessiIf should also create the reverse connection.
Supported directions are north, northeast, east, southeast, south, southwest, west, northwest, up, down, in and out.
Reception --north--> Corridor Corridor --south--> Reception
Also create the reverse connection is selected by default. This is convenient for ordinary maps. Turn it off for one-way movement.
6. Objects, scenery, containers and supporters
Choose Add → Object.... Each object has a name, description and starting room.
The object type can be:
| Type | Use it for |
|---|---|
| Thing | An ordinary object such as a key, parcel, coin or notebook. |
| Scenery | A fixed detail of the location which should not normally be carried away. |
| Container | Something which can contain other things. It can optionally be openable and start open. |
| Supporter | A surface which can support objects. |
The Player can take this object checkbox controls portability. For a container, you can additionally select Container can be opened and closed and Container starts open.
Parcel Type: Thing Starting room: Reception Player can take this object: yes Description: A square parcel wrapped in brown paper and far too much tape.
Give important objects descriptions which distinguish them from the room prose. Parser players examine things. Occasionally they even read what you wrote.
7. Characters and general conversation
Choose Add → Character....
A character has:
- Name.
- Description.
- Starting room.
- Greeting.
- General conversation response.
Morgan Starting room: Office Greeting: "Can I help you?" General response: Morgan glances at the parcel and waits.
The general response gives the character something sensible to say when a more specific topic does not apply.
8. Ask and tell topics
After creating a character, choose Add → Conversation topic....
A topic belongs to a character and is either an ask topic or a tell topic. Give it keywords and the response which should be printed.
Character: Morgan Kind: ask Keywords: parcel package delivery Response: "I've been waiting for that all morning," Morgan says.
Use several natural keywords when players might reasonably use different words for the same subject.
9. Doors, locks and keys
With at least two rooms available, choose Add → Door....
A door joins two rooms and has a direction on each side. It can start open or closed, and can be locked.
If the door starts locked, you can associate an existing object as its key.
Office door Reception side: north Office side: south Starts locked: yes Key: brass key
Project Health warns if a locked door has no key or refers to a missing key object.
10. Boolean variables
Choose Add → Boolean variable....
A Boolean variable is either true or false. It is useful for remembering facts such as:
alarmDisabled = false morganTrustsPlayer = false parcelSigned = false
Variables can be tested by custom verbs, interactions and give rules. Those actions can also set a variable true, set it false or toggle it.
Timed events can change variables too, and an ending can trigger when a variable reaches the required value.
11. Timed events
Choose Add → Timed event....
A timed event occurs after a specified number of turns. It can print a message and optionally change a Boolean variable.
Name: Phone rings After: 4 turns Message: A telephone begins ringing somewhere beyond the office door. Effect: set phoneRinging to true
A timed event can be configured as a one-time event. Use this for changes which should happen once rather than repeatedly.
12. Custom verbs
Choose Add → Custom verb... for a command specific to your story.
A custom verb can target no specific object, an object, or a character. It can have:
- A command.
- Success and failure text.
- An optional Boolean condition.
- An optional Boolean effect.
- An optional ending which happens immediately on success.
Name: Sign parcel Command: sign parcel Target: parcel Condition: carryingPen must be true Success: You sign the delivery slip with a heroic flourish. Effect: set parcelSigned to true
Use a custom verb when the action is genuinely story-specific. Ordinary parser actions such as taking, examining and opening should normally be left to TADS.
13. First-class interactions
Choose Add → First-class interaction....
Interactions let you customise common actions involving existing objects, characters or doors without inventing a completely new verb. An interaction has a primary participant and, where the action requires one, a secondary target.
Like custom verbs, interactions can check a Boolean variable, change one, and trigger an ending.
Interaction: Unlock office door with brass key Success: The key turns with a reluctant clunk. Effect: set officeUnlocked to true
Use interactions when the player's command belongs to an ordinary action but your story needs special consequences.
14. Giving objects to characters
If the project contains both objects and characters, choose Add → Give item to character....
A give rule handles a specific object being given to a specific character. It supports success and failure text, an optional Boolean condition, an optional Boolean effect and an optional ending.
Give: parcel to Morgan Success: Morgan takes the parcel and signs the receipt. Effect: set parcelDelivered to true
This is useful for delivery puzzles, bribery, gifts, quest turn-ins and the ancient interactive-fiction ritual of handing every inventory item to every person until something happens.
15. Win and loss conditions
Choose Add → Win/loss condition....
An ending has a name, a type — win or loss — and an ending message. It can trigger when:
- The player is in a particular room.
- The player is carrying a particular object.
- The player is with a particular character.
- A Boolean variable has a specified value.
Name: Delivery complete Type: Win Trigger: Boolean variable has a value Variable: parcelDelivered Required value: true Message: Morgan signs the receipt. Your first day as a courier may yet end without litigation.
Custom verbs, interactions and give rules can also point directly to an ending and trigger it immediately when that action succeeds.
16. Project Explorer, editing and references
The Project Explorer groups the project into Rooms, Objects, Characters, Doors, Timed events, Variables, Custom verbs, Interactions, Give interactions and Win and loss conditions.
Activate an item or use Ctrl+E to edit the selected item. Press Delete to delete it.
Several item types can be duplicated with Ctrl+D. Rename supported items with Ctrl+R.
Ctrl+F searches names, descriptions, dialogue, verbs and messages across the TADS project.
Ctrl+L shows references to the selected item where supported. This is particularly useful before deleting a room, object, character, variable or ending which other rules may depend upon.
17. Generated TADS source
The right-hand pane continuously shows the generated TADS source. It is read-only.
That source is useful for understanding what AccessiIf generates and for matching compiler errors to the project. The canonical editable data, however, is the structured AccessiIf project.
story.t as the primary editor for a structured project. AccessiIf can regenerate it when the project is saved, so manual edits may be overwritten.18. Project Health
Use Build → Check project health or Ctrl+F8.
Project Health checks for obvious structural problems before you compile, including:
- No rooms or a missing starting room.
- Connections which point to missing rooms.
- Objects or characters with missing starting rooms.
- Conversation topics with missing characters.
- Doors with missing rooms or missing keys.
- Timed events with invalid delays or missing effect variables.
- Verbs and interactions with missing targets, variables or endings.
- Give rules with missing objects, characters, variables or endings.
- Endings whose trigger targets no longer exist.
- Rooms which cannot be reached from the starting room.
A clean health check does not prove the game is fun or solvable, but it catches a gratifying number of mistakes before the compiler gets involved.
19. Install or locate the TADS 3 compiler
AccessiIf builds TADS projects using t3make.exe from the TADS 3 Author's Kit.
On the first build, AccessiIf tries to locate the compiler automatically. If it cannot, it asks whether you want to locate t3make.exe yourself.
Choose the actual t3make.exe file from your TADS 3 installation. AccessiIf remembers the selected compiler path.
The generated games use the standard TADS system library and Adv3 library. If AccessiIf cannot see system.tl or the Adv3 library near the compiler, it reports a toolchain warning. Some installed configurations may still let t3make find those libraries through its own configuration, but a portable toolchain needs the required libraries as well as the executable.
.t3 game.20. Build, debug and play
Use Build → Build TADS game or press F8.
Before invoking the compiler, AccessiIf saves the project and performs a generated-project preflight check. It then runs t3make and shows a build-results dialog containing parsed errors and warnings plus the raw compiler output.
Use Ctrl+F9 for a debug build.
Use Build → Build and play or F9 to compile the game and, when successful, launch the resulting game through AccessiIf's player.
21. Project files and output
A TADS project contains AccessiIf's project metadata plus generated TADS build files.
| Path | Purpose |
|---|---|
accessi-tads-project.json | AccessiIf's structured project data. |
story.t | Generated TADS source. |
makefile.t3m | Generated TADS makefile used by t3make. |
Build/ | Compiler output, object files and symbols. |
Build/<game name>.t3 | The compiled TADS 3 game. |
Release/ | Location reserved for packaged release output. |
The .t3 file is the game players need. Keep the project folder as your editable source project.
22. TADS Creator keystrokes
| Key | Action |
|---|---|
| Ctrl+S | Save project. |
| Ctrl+E | Edit selected item. |
| Ctrl+D | Duplicate supported selected item. |
| Ctrl+R | Rename supported selected item. |
| Ctrl+F | Search the TADS project. |
| Ctrl+L | Show references to the selected item. |
| Delete | Delete selected item. |
| Ctrl+F8 | Check project health. |
| F8 | Build TADS game. |
| Ctrl+F9 | Build a debug game. |
| F9 | Build and play. |
| Alt+F4 | Close the TADS Creator. |
| Applications key or Shift+F10 | Open the Project Explorer context menu. |
23. Worked game: The Parcel and the Locked Office
This tiny game uses most of the basic TADS workflow without attempting to become the next seventeen-volume fantasy epic.
Step 1: Create the rooms
Create Reception and Office. Make Reception the starting room.
Step 2: Add a connection or door
Create a door between Reception and Office, north from Reception and south from Office.
Step 3: Add the key and parcel
Add a portable brass key and a portable parcel to Reception.
Step 4: Lock the office
Edit the office door so it starts locked and uses the brass key.
Step 5: Add Morgan
Create Morgan in the Office. Give Morgan a greeting and a useful general response.
Step 6: Add a parcel topic
Add an ask topic for Morgan with keywords such as parcel package delivery.
Step 7: Add story state
Create a Boolean variable named parcel delivered, initially false.
Step 8: Add the give interaction
Create a give rule for giving the parcel to Morgan. On success, set parcel delivered to true.
Step 9: Add the ending
Create a win condition which triggers when parcel delivered is true.
Step 10: Test it
LOOK TAKE KEY TAKE PARCEL UNLOCK DOOR WITH KEY OPEN DOOR NORTH ASK MORGAN ABOUT PARCEL GIVE PARCEL TO MORGAN
Then test several wrong routes: try the door without the key, leave the parcel behind, ask Morgan about nonsense, and give Morgan the key instead. The failure behaviour is part of the game too.
24. Understanding TADS build errors
If a build fails, AccessiIf shows the compiler's results rather than merely announcing that something somewhere has gone wrong, which would be traditional but unhelpful.
Start with the first reported error. Later errors are often consequences of the first one.
Useful questions include:
- Did Project Health report a missing target or reference?
- Does the error point into generated
story.t? - Is
t3make.exethe correct compiler? - Can the compiler find the TADS system and Adv3 libraries?
- Did the project build before the most recent change?
If a generated-source error appears to come from a perfectly ordinary project entry, save the project again and reproduce the build before manually altering generated files.
25. Design advice
Build a small playable loop first. Two rooms, one useful object, one obstacle and one ending teach you more than twenty empty rooms.
Write for parser behaviour. If a room mentions a desk, sign or suspicious parcel, players will try to examine it. Make important nouns exist or make the prose clear enough that they are decorative.
Use variables for facts, not for everything. A Boolean variable is excellent for “alarm disabled” and terrible for storing seventeen different grades of wizard resentment.
Prefer ordinary actions when they already fit. Use first-class interactions to customise common verbs and custom verbs for genuinely new commands.
Test synonyms and failure cases. A solution is not robust merely because the author, who already knows the exact wording, can type it.
Keep the critical path readable. If the player must talk to Morgan, make Morgan noticeable. If the player needs the brass key, provide a reason to search where it is.
26. Troubleshooting
The Build command cannot find TADS
Install the TADS 3 Author's Kit or locate its t3make.exe when AccessiIf asks. Make sure you selected t3make.exe, not the game interpreter.
AccessiIf warns about system.tl or Adv3
The compiler executable was found, but AccessiIf cannot visibly find the expected libraries nearby. Check that you have a complete TADS development installation rather than a lone copied executable.
A room cannot be reached
Run Project Health. Inspect connections and doors leading toward that room. Check whether a reverse connection was intentionally or accidentally omitted.
I deleted something and another rule stopped making sense
Before deleting heavily referenced items, use Ctrl+L or Show references. Project Health can also find many broken references afterward.
My source edits disappeared
The source is generated from the structured project. Make the change through AccessiIf's project tools rather than treating generated story.t as the durable source of truth.
The game builds but my puzzle does not work
Compilation only proves the game is syntactically buildable. Play through the exact intended path and inspect each condition, variable effect, target and ending involved.
27. TADS glossary
- TADS
- Text Adventure Development System, an authoring system for parser interactive fiction.
- TADS 3
- The TADS version used by AccessiIf's TADS Creator.
- Adv3
- The TADS 3 adventure library used by generated AccessiIf games.
- t3make
- The TADS 3 compiler/build tool used to turn source into a
.t3game. - .t3 file
- A compiled TADS 3 game.
- Parser
- The part of the game which interprets typed player commands.
- Boolean variable
- A stored value which is either true or false.
- Interaction
- A customised ordinary action involving project objects, characters or doors.
- Generated source
- TADS source written by AccessiIf from the structured project.
- Project Health
- AccessiIf's structural check for missing references, unreachable rooms and similar project problems.