Contents

  1. Introduction
  2. Typographical Conventions
  3. Installation
    1. Compilation
      1. Configure Options
      2. Optional Google Sign-In Dependencies
    2. Playing the Sample Games
    3. cgijacl and fcgijacl
    4. Playing the Sample Games in a Browser
    5. Using JACL with FastCGI and Apache
    6. Automated Setup
    7. Manual Setup
    8. Troubleshooting
    9. The iPad Interpreter
      1. Packaging a Game
      2. Getting a Game onto the iPad
    10. Editor Support
  4. Playing Interactive Fiction
    1. Moving Around
    2. Manipulating Objects
    3. Interacting with Characters
    4. Meta Commands
  5. Tutorial Game
    1. Language Syntax
    2. Program Structure
    3. Getting Started
    4. Locations
    5. The Player
    6. Some Introductory Text
    7. Objects
    8. Verbs and Functions
    9. Overriding Functions
    10. Doors
    11. Non-player Characters
    12. The Passing of Time
    13. Winning and Losing the Game
  6. Testing, Debugging and Releasing
    1. The WALKTHRU Command
    2. Transcripts
    3. The Debug Library
    4. The INSPECT Command
    5. The Verb VALUEOF
    6. The Verb FETCH
    7. Other Debug Verbs
    8. Releasing Your Game
    9. Linting Source with jacl-lint.py
  7. Screen Display
    1. The WRITE Command
      1. Special Characters
      2. Printing the Value of Variables
      3. Printing the Value of Item Elements
      4. Printing the Names and Descriptions of Objects
      5. Sentences Referring to Varying Objects
      6. Custom Macros
      7. Printing the Value of Strings
    2. The PRINT Command
    3. The OUTPUT Command
    4. The LOOK Command
    5. The MORE Command
  8. Glk and Multimedia
    1. Blorb Files (Glk) and Media Files (Web)
    2. The IMAGE Command
    3. The SOUND Command
    4. The VOLUME Command
    5. The STOP Command
    6. The TIMER Command
    7. The STYLE Command
    8. The STYLEHINT Declaration
    9. The Status Window
    10. The UPDATESTATUS Command
  9. HTTP and HTML
    1. Document Structure
    2. Linebreaks
    3. The Player's User ID
    4. The Player's Commands
    5. Ajax Requests
    6. The BUTTON Command
    7. The HYPERLINK and HYPERLINKNE Commands
    8. The CONTROL Command
    9. The OPTION Command
    10. The GETENV Command
    11. The IMAGE Command
    12. Google Sign-In Authentication
    13. The Media File
  10. GUI Web Interface
    1. Using the Interface
    2. The Link Bar
    3. DOM Contract
    4. Pending-Question Prompts
    5. Voice (Text-to-Speech)
    6. Authorial Scaffolding
  11. Flow Control
    1. The IF, IFALL, ENDIF and ENDALL Commands
    2. The IFSTRING Command
    3. The IFEXECUTE Command
    4. The ELSE Command
    5. The LOOP and ENDLOOP Commands
    6. The SELECT and ENDSELECT Commands
    7. The REPEAT, UNTIL and UNTILALL Commands
    8. The WHILE, WHILEALL and ENDWHILE Commands
    9. The ITERATE, ENDITERATE, UPDATE and ENDUPDATE Commands
    10. The BREAK Command
    11. The RETURN Command
  12. Changing Data
    1. The SET Command
    2. Type Casting
    3. The SETSTRING and ADDSTRING Commands
    4. The ESCAPESTRING Command
    5. The PADSTRING Command
    6. The SPLIT Command
  13. Movement
    1. The MOVE Command
    2. The TRAVEL Command
    3. Moving Non-player Characters
    4. The DIR_TO and NPC_TO Commands
  14. Special-Purpose Commands
    1. The POINTS Command
    2. The PROXY Command
    3. Trigonometry
      1. The POSITION Command
      2. The BEARING Command
      3. The DISTANCE Command
    4. The ASKNUMBER and GETNUMBER Commands
    5. The GETSTRING Command
    6. The GETYESORNO Command
    7. The SAVEGAME and RESTOREGAME Commands
    8. The FLUSH Command
    9. The TERMINATE Command
    10. The UNDOMOVE Command
  15. Attributes
    1. The ENSURE Command
    2. Object Attributes
    3. Location Attributes
    4. User Attributes
  16. Functions
    1. The EXECUTE and CALL Commands
      1. Passing Arguments to a Function
    2. The function-call count
    3. The RETURN Command
    4. Responding to the Player's Moves
    5. Special Functions
    6. Utility Functions
  17. Creating New Verbs
  18. Pointers
    1. Object Pointers
    2. Location Pointers
  19. Object Resolution
    1. Object Naming
    2. Resolving Ambiguity
  20. Definitions in Detail
    1. Objects
    2. Locations
    3. Integer Variables
      1. Internal Integer Variables
    4. String Variables
    5. Arrays
    6. Constants
    7. Synonyms
    8. Filters
    9. Grammar Statements
    10. User Attributes
    11. Parameters
  21. Internals
    1. Constants and Random
    2. Internal Commands
  22. The Menu Library
  23. CSV Files
    1. The ITERATE and ENDITERATE Commands
    2. The UPDATE, ENDUPDATE and INSERT Commands
    3. The APPEND Command
    4. The APPEND_FC, APPEND_NT and APPEND_LC Commands
  24. Appendix A: JACL Attributes
  25. Appendix B: Library Verb Functions
  26. Appendix C: Tutorial Game Source Code
  27. Glossary