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