Planned ABML Changes

ABML was originally developed back in 1999 and I largely ignored standards and conventions at the time, basing it loosely on the current state of HTML. This is a list of changes and additions to the definitions I hope to implement.

Overall Changes

  1. Make all tags lowercase compulsory
    This is to comply with xml standards.  Requires all existing references here to be updated.
  2. Define a dtd
  3. Add an xml declaration
  4. Allow xhtml and css
    Partially done (css outstanding, xhtml requires further and continued appraisal)
  5. Define Input Tags
  6. ? Add comment attribute to all SEL using tags (documentation and text only output purposes)

Tag Specific Changes:

  • <tt>
    ? script attribute output location – actions?
    + Make visits attribute SEL evaluated
    ? Re-evaluate visits attribute on page reloading and keep separate register of actual visits, or maintain existing system?
  • <tti />
    ? What to do with inherited ‘ref’ attribute?  Make default for empty box submissions?
    ? scriptref is currently defined as optional but since this is meant to inherit from <tts> should it not be required?  Maybe not make this inherit from <tts> since the tag open/close fashion is different too.
    * Attributes (inherit): Inherit all proposed <tts> attributes and relevant tag behaviour.
    * Attribute (optional): “label” = text to precurse the input box
    * Attribute (optional): “button” = text to display on the button
    * Attribute (optional): “value” = default text for the input box (omitting leaves it blank).
  • <tts>
    * Attribute (required): “name” = Unique identifier for this tag within this reference, required for possible failure options.
  • <bookend>
    + Add ‘Success’ option to adventure attribute
  • <event>
    ? Remove output, leave inline or relocate to actions?
  • <option>
    – rename tag to ‘action’ (major work)
    – Make scriptcount attribute obsolete, parser to interpret a non-integer count attribute value as a request to determine the value through a script call.
    ? scriptcount (to become count) – re-evaluate on page reload and maintain seperate register, or maintain existing system?
  • <info>
    – Reconsider ‘seperator’ attribute, maybe abandon as it is too closely tied to this specific implementation and not generally portable.
  • <if>
    *Attribute – Hide, hides false condition <if> tags
    Remove ‘hidden’ from color attributes
  • <else>
    *Attribute – Hide, hides false condition <else> tags
    Remove ‘hidden’ from color attributes
  • <script>
    – No changes planned
  • <include>
    – No changes planned
  • <external>
    Deprecated, to be removed.

New Tags (suggestive):

  • <visits /> Tag to set a register value of how many times this reference may be visited upon arriving for the first time.  Once these visits have been exhausted <tt>, <tti> and <tts> tags in other references with the ref attribute referring to this reference will be disabled, and <tts> and <tti> attempts to this reference will fail.  Relevant for a <head> portion of a reference.
  • <bookmark /> Tag to generate a bookmark (as per the <tt> tag bookmark attribute) for the reference in which it is included.  Relevant for a <head> portion of a reference.
  • <actiongroup>
    Mostly intended for the current <option> (note option to be renamed action eventually) tag though there may well be applications for other tags, this tag will enclose a group of <option> tags such that only one (by default) option may be selected, though this may be altered by the count attribute.  Effectively disables all enclosed options once an option has been selected (or once the total count has been achieved if that is in effect).  Action groups may contain other action groups.
    * Attribute (optional): “count” = Total number of times selections from the group may be made, defaults to 1 if omitted.  If the total exceeds the total count values of enclosed options then the group is deemed to be exhausted when enclosed options are exhausted.
    * Attribute (optional): “enforce” (boolean, presen not present): When present this attribute prevents the further processing of the page until the actiongroup count  has been exhausted.
  • <ttgroup>
    Encloses a set of <tt> or <tti> or <tts> tags, creates a bookmark if no bookmark is present such that only one (by default) turn to action will be allowed from the group for the duration of the adventure, though this may be altered by the count attribute.  Effectively disables all turn to tags in the group should the reference be revisited (or once the total count has been achieved if that is in effect).  ttgroups may contain other ttgroups.
    * Attribute (optional): “count” = Total number of times Turn To actions from the group may be made, defaults to 1 if omitted.  If the total exceeds the total ‘visits’ values of the enclosed tags the group is deemed to be exhausted when the enclosed tags visits are exhausted.
    * Attribute (optional): “enforce” (boolean present/not present): Disables subsequent tag processing until the group has been exhausted.
  • ? combine ttgroup and actiongroup somehow ? <linkgroup> attribute?
  • <leavescript>
    A script to perform on leaving the reference on which the tag is located regardless of the tag used to leave it.

 

Book XML Tags – Tags to define the non-play aspects of a gamebook.

  • <book>
    This is intended to describe the entire book and it’s attributes.  It encloses all <page>  tags.
  • <ref> Child of <adventure>
    This will wrap an entire ABML reference, additionally with an attribute ‘reference-type’ to support different types of Book reference, the preliminary type list being:  adventure (for actual story relevant files) and system (for pages such as the Character Sheet or Item Usage Definition references).  Also something describing/referencing the book it’s owned by, furthermore if reference specific SEL files ever get implemented some method of referencing that.
    *Attribute (required): “Type”: Preliminary Reference Type List (suggestive):
    Adventure – For references that form part of the actual adventure (this would include a Fighting Fantasy ‘background’ reference.
    System – For references such as Character Sheets, Item Usage Definitions etc..
    * Attribute (optional): “Source” = Filename/URI
  • <page>  Child of <book>
    This tag is intended for all pages that are not involved in the gameplay of a book.  This includes (not exhaustive): Credits, Acknowledgements, Forewords, Cover, Backcover ‘Blurb’, Publishing Information etc. and is essentially an XHTML document.
  • <adventure> Child of <book>
    Encloses all <ref> tags
  • <rules>  – Child of <book>
    For pages that describe information relevant to the gameplay of  book which includes rules but also charts and tables etc. for the reader to be able to refer to during an adventure.
  • <credit> –  Child of <book>?
    To allow crediting to Authors, Illustrators, Editors, Proofreaders, Playtesters, Coders etc.
  • <scripting> – Child of <book>
    To describe the technical scripting requirements for the adventure.  Still unclear on how/what to express here.  A command line, output path and some form of input descriptor is all I got in mind right now.  Currently because of the <info> tag the scripting language is required to have a method of gaining the termination/exit value that is not related to the succesful operation of the script processor itself.  How much and how little of this information is relevant to an xml document is what is causing me difficulty.

Leave a Reply

Straight outta Blacksand