"Perfection is achieved, not when there is nothing left to add,
but when there is nothing left to remove."
- Antoine de Saint-Exupery
If you need to do maintenance on a game written using a previous
version of JIFFEE, you can find all the documentation (and even
the code) here for each major release (except for 0.1 and 0.2,
which weren't worth saving.)
0.1 (June 2007)
- Allowed the definition of traits ("slots"), places, and commands.
- Caught all exceptions and reported them to the user display.
- Used JsUnit-based automated unit tests.
- Started to isolate language dependencies.
- Included the first "Sunny Day" demo.
- Hosted demo game and auto-translated documentation on the web.
- A useful first attempt, but part of
the basic architecture hit a dead end when state persistence
proved to be impossible.
0.2 (April 2008)
- Based on ideas from 0.1 but was a complete re-write based on mix-in classes.
- Introduced a completely re-designed traits mechanism (typed traits)
to make persistence feasible.
- Had a re-designed priority/agenda mechanism to increase modularity and flexibility.
- Used JSDoc for internal documentation.
- First version to get any alpha-testing
(by students in a Citizen Schools apprenticeship).
0.3 (October 2008)
- Extensively re-factored the module-linking mechanism
to a more normal object-oriented architecture.
- Finally implemented state persistence (cookies).
- Included better language isolation.
- Added a smaller, simpler "Barnyard" demo for younger players.
- Hosted on jiffeegames.com/.org domain names.
- Used JSLint to improve code quality.
- Tested on Firefox, IE, Safari, Opera, Netscape, Chrome, and T-Mobile G1.
- Made major improvements to web site including HTML validation
and spell checking of all pages.
- Continued alpha-testing with Citizen Schools: semesters 2, 3, 4.
0.4 (January 2010)
The current stable release.
- Switched to SHA fingerprints for cookie-names to make saved-state
collisions highly unlikely.
- Made set() "just work" by replacing change/set with set/freeze and
automatically figuring out what the game author probably wants.
- Enabled solid multi-lingual support by completely changing
the representation of verbs and totally redesigning the parser.
This finally teased apart the internal representation ("author names") from
the external representation ("player names" in a target language).
- Restructured command processing to make verb functions easier to write
by automatically detecting when an event has been handled.
- Improved much of the terminology, including some to
reflect a better analogy between
Interactive Fiction and theater.
- Added places.describe(), props.describe(), and verbs.describe(). These form the
basis of a small set of "level 1" commands that help complete beginners get started
- Reversed the order of arguments to
places.connect() to match normal intuition.
- Restructured init/locate/closures/local module references.
- Made the Engine module responsible for starting each module.
- Restructured scheduling/events/rules/actions.
- Revised and extended legal forms of string actions and allowed lists
- Rationalized the use of verb overrides and specializations.
- Continued to improve and expand the internal build tools.
- Improved and expanded the web site.
0.5 (targeted for Spring 2010)
Work in progress, subject to frequent change.
- A web-based GUI to ease the learning curve for novice authors.
- Automatic web hosting.
- Support for collaboration for multi-author games.
- A facility for logging of incorrect commands to help authors
improve their games.
Rather than create a big system in one fell swoop, I've tried to build up JIFFEE
in small manageable steps, making sure the system was usable at each point.
This means there is always a "wish list" of
desirable but as yet unscheduled features, but that's OK.
The order in which features are implemented (or appear on the list) is determined
by two criteria:
The highest-risk work should go first, so that problems can be discovered as early
as possible, but the features most useful to authors and players should also go first
so that we can gain real-world experience with the system.
As with all engineering, it's a balancing act that involves judgment.
- JAWT (JIFFEE Authors' Web Tool) to provide better error-checking,
faster and easier game creation, collaboration, and automatic hosting.
- Spanish input parser.
- Chinese input parser (traditional, simplified, and pinyin).
- Add an IME for pinyin with tone-marks
(type "Bei3jing1", see "Běijīng")
- Alpha-testing in a second school.
- "undo" and "redo" commands.
- Darkness or fog module.
- Add a way to answer questions (e.g. yes/no).
- Testing facilities for both framework and games.
- Predefined spatial manipulation (in, on, under, etc.) of objects.
- A good, thorough tutorial.
- More input parsers (French, Italian, German, Russian, Japanese, Esperanto)
- String obfuscation, to deter casual use of "view source" to cheat.
- Transcript recording for alpha and beta testers.
- Debugging commands.
- Enhanced "help" command.
- "wait" command.
- "back" command.
- Facilities for adding simple sound and graphics.
- Specialized HTML template for mobile devices.
- Command-buffer editing.
- All web pages converted to XHTML for proper rendering by mobile
- Extend backwards-compatibility to IE5.
- A facility for game authors to log incorrect commands so they can
improve their games.
JIFFEE and JIFFEEgames.com copyright © 2007-2010 by Michael S. Kenniston. All rights reserved. This page was last updated on 2010-01-17.