Skip to content
/ TAME Public

The main TAME Interactive Fiction implementation (Java and JS) plus compiler/console client.

License

Notifications You must be signed in to change notification settings

TAME-IF/TAME

Repository files navigation

TAME (Text Adventure Module Engine)

Copyright (c) 2015-2019 Matt Tropiano. All rights reserved.

Required Libraries

NONE

Required Java Modules

java.base

Optional JavaScript/NPM Packages

UglifyJS (via uglify-es 3.3.9+)
https://www.npmjs.com/package/uglify-es
For TAME JS minification on build.

Introduction

This library reads, compiles, and executes TAME modules.

WARNING: TAME is in an incomplete state. The commands in the language, its structure, and their behavior may change before version 1.0, but it is completely functional and consistent in both the Java and JS implementations.

Until otherwise specified, any changes to the TAME commands set may invalidate TAME modules that are compiled to the serialized format or JS modules (but not embedded ones - those are safe).

Known Issues

  • Serialization of game state that has circular references in its structure is not handled as gracefully as it should be. this is not expected to come up very often in user's modules.
  • The JS implementation of TAME limits integers to roughly 53 bits, as it uses Number as its primary internal numeric format.

Library

Contained in this release is a series of libraries that allow reading, compiling, writing, and executing TAME module files/archives, found in the com.tameif.tame packages.

Branches

The master branch is assumed to be stable and contains consistent implementations between Java and JS. All other branches should be considered "unstable."

Compiling with Ant

To compile this project, type:

ant compile

Shell scripts (CMD/Bash) will also be created in the project directory that will run the main entry points of the compiled code, depending on your OS.

To make a JAR of just TAME's classes (no bundled dependencies), and the stand-alones (both main programs with entry points and necessary dependencies) plus scripts to run them, type:

ant jar

Jars will be placed in the build/jar directory by default.

The build.properties file is ignored by Git - you may make changes to this to suit your build environment.

Files and Directories

Used In Build
	src/main/java
	src/main/resources
Used for Testing
	src/test/java
	src/test/nodejs
	src/test/scripts
Ignored

The following files/directories are generated by build and ignored by .gitignore:

	bin
	build
	deps
	dist
	*.cmd
	*.sh
	*.log
Other Files

There is a Notepad++ Syntax Highlighter config in docs/UDL.xml.

The files in the src/test/scripts/tame directory are sample TAMEScript programs that are used for testing. All of them should be working, but there may be a few that don't during major changes.

Licensing

This program and the accompanying materials are made available under the terms of the GNU Lesser Public License v2.1 which accompanies this distribution, and is available at https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html

A copy of the LGPL should have been included in this release (LICENSE.txt). If it was not, please contact us for a copy, or to notify us of a distribution that has not included it.

This contains code copied from Black Rook Base, under the terms of the MIT License (docs/blackrook-base-license.txt).