Teeny Weeny Microgame Engine project is a console/curses interface for playing near-arbitrary board games.
Version: 2005.02.27Teeny Weeny Microgame Engine project is a console/curses interface for playing near-arbitrary board games.
License: Public Domain
Operating System: Linux
The Teeny Weeny Microgame Engine is a specification for the portable play of board- style games in a wide variety of computing environments. As proof-of-concept, teeny-cpp implements the Teeny LRFC (Lesser RFC) and many extended features with a shell-like console interface and a curses-based UI.
Despite their simple appearances, they are very extensible via C++ and basic game script code using the commands defined in the LRFC. It is intended for hard-core hobby board gamers or war gamers.
Here are some key features of "Teeny Weeny Microgame Engine":
· Acts as a reference implementation of and an experimentation ground for the Teeny LRFC.
· It has two major modes of operation: console mode (for the Power User) and curses mode (for a colorful UI).
· Internally controlled almost completely via the ''command language'' interface described in the Teeny LRFC. This allows us to extend the list of game options almost indefinately without having to change the internals of the framework. This also inherently allows us to operate the game environment via scripts containing lists of game commands.
· The scriptability means we can use arbitrary tools to generate game data. For example, creating games using bash scripts is often easier than hand-writing game scripts because we can take advantage of the advanced features of such a shell, like loops and conditionals (which are lacking in our code).
· The curses UI allows some keys to be programmed to arbitrary command strings. This makes doing common operations a snap. (i hope to improve this support to cover most keys.) For example, map a key to the command 'teeny-board rotate' to quicky rotate your game board.
· For boardgame designers it offers a pretty simple interface for prototyping game designs.
· Generic plugins/DLL support means clients may plug in their own commands or even plug in their own plugin base types. As a demonstration, the source comes with EDeck, a plugin for handling abstract ''decks'' of ''cards'' (i.e., lists of shuffleable items from which we may pull items off the top). Of course... this plugin can be controlled via the command language interface, so it's scriptable.
· The curses UI has support for manipulating all commonly-used curses text attributes, including colors, bold, blink, underline, etc., for the game board. Attributes are specified on a per-Avatar basis, and each set of attributes (''colormap'') may be named, loaded and saved at will. As usual, these are controlled via the command language, and are thus scriptable.
· Most parts of the interface support the use of $VARIABLES from the user. e.g., loading $TEENY_HOME/file.s11n will load the file ~/.teeny/foo.s11n. You may of course define and manipulate these variables as you wish.
· Startup of the app can be customized via a script. e.g., to load a game or macro keys, set up environment variables, etc.
· Powerful, flexible object serialization support, which means that we can add support for saving/loading near-arbitrary data with extremely little effort, without having to worry one iota about the underlying data formats, transport layers, and other bogusness. We can independently save and load almost all parts of the game's state if we wish, as well. Shameless plug: http://s11n.net
· The source code is fairly hackable, if i may say so. Adding command handlers and DLLs is especially simple for even ''entry-level'' C++ coders. i'm always looking for ways to improve the code, so feel free to contribute :).
· ncurses and ncurses++. Only tested with version 5.4. These come preinstalled on the majority of Linux boxes.
· libs11n 1.0.x provides the save/load support plus a lot of utility code.
· libeshell, version 2005.02.21 or higher, provides the shell-like features, including the console mode and the ''command handler'' back-end.