While timer is declared as an DerbyXML element, it is almost never needed (and frequently not desired). Its main purpose is to synchronize a jam timer (or scoreboard operator) with a scoreboard display. For timers, we work the same concept as is used by the CRG scoreboard:
  1. Period Timer - usually counts down from 30:00 (or 20:00 for many home/exhibition bouts)
  2. Jam Timer - usually counts down, from 2:00
  3. Lineup Timer - usually counts up, potentially starting the jam when it hit a 0:30 second threshold (or possibly starting a timeout)
  4. Timeout Timer - Counts up, with no limit (though after 1:00, a team timeout should switch to an official time out)
  5. Intermission Timer - Counts down, somethings counting down until a specific time ("13:12 Until Derby"), sometimes until the next period is ready to start
Most of these timers can be configured from the ruleset used (which determines the length of the period, jam, lineup, as well as timer directions). The intermission timer is a potential exception, especially if it is used for double duty to also count down until the start of the bout.

What's more, the actual value of these timers can be derived from DerbyXML timestamp entries. We consider an element to be "active" if it has a starting timestamp but not a closing one.
  1. The wall clock time of the start of the period is recorded, the current period clock is based on that less the duration of any time outs. The period clock is running if there isn't an active timeout element.
  2. The current jam elapsed time starts when the jam is started (which, if it is a period clock, can be readily converted to wall clock time). The jam timer is running if the most recent jam element is active (we need to ignore possible additional jam elements that are after the currently active jam, which may be entered because we may know that a skater may still have pending penalty time, so automatically enter a lineup element for them)
  3. The lineup timer is based on the end of the last jam. If the period element is active, but there are no active jam elements, and not active timeout elements, we have a running lineup timer
  4. A timeout timer starts when a time out event is created, and that starting timestamp determines the time. Active timeout element, running timeout clock
  5. Intermission timer can be based on the end of the last jam (which is the end of the last period). We could be "smart" and determine if there is an intermission, or a countdown based on the number of active period elements.
These heuristics all assume standard ruleset conventions. If the bout is "real time" (i.e., don't stop the period clock for a timeout), we can just tweak the period clock heuristic.

Timers can also be used to manage the penalty box. Penalty timers would count down, normally from 1:00 and would be active with the enter-box element, and be "closed" at the corresponding exit-box element. The time, of course, would be started/stopped with the jam timer, but can easily be derived.

These timers, however, could be optionally transmitted to support simpler client that don't have backend DerbyXML support