diff --git a/README.md b/README.md new file mode 100644 index 0000000..d5696d8 --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# AGES - Adventure Game Engine, Stupid + +This is a dumb little text adventure game engine I'm working on. + +You can try out the example game by running: + +`python -m agame examplegame` + +I believe this requires only Python 3.6, but was written in Python 3.9. Tread +with some caution. + +# Concepts + +**Actions** are at the heart of the engine. These display things (such as the +`PrintAction`), as well as change the state of the game (such as +`TeleportAction` and `RevealItemAction`). They are invoked by triggers, +described below. + +**Triggers** are what drive the game, and turn human input into actions that are +executed. They are responsible for parsing input, and executing actions based on +input and game state. Items in a game have a mapping of the triggers that can +activate a list of actions. + +**Items** are what carry the behavior of actions, and what triggers look for to +activate themselves. Items have descriptions for how they should be announced in +the room, plus the actions for appropriate actions. Triggers will also use the +list of synonyms provided by items to identify them. + +**ItemInsts** are instances of items. Usually when you're dealing with items, +you're actually dealing with an `ItemInst`. An `Item`is stored in the game +database, while an `ItemInst` is used in rooms and the player's inventory. + +**Rooms** hold sets of items. The player is present in only one room at a time; +this is mostly an organizational tool for locations in a game. + +**Variables** are a simple string->value mapping held in the game's database. + +The **database** is a single source of information for the game to use. The +database contains all items, triggers, rooms, and variables that are used in the +game. The database is *not* immutable; the rooms and variables in the database +are expected to be altered at runtime. (Maybe this should change, although I +don't feel like doing so right now.) \ No newline at end of file