/speedo

Emacs Speedrun Timer

Primary LanguageEmacs Lisp

Speedo: Lightweight Emacs Split timer 🩲

Speedo is a lightweight speedrun split timer.

DEMO

https://img.youtube.com/vi/2ML7Du4Bq_A/0.jpg

Motivation

I was not satisfied with the native split timer options for Linux. Running a split timer in a browser is an option, but caused hiccups during game play due to how CPU intensive they were. I also wanted record more information than the average split timer in order to develop tools to aid speed running practice.

File Format

Speedo stores game settings and data in an elisp plist. This makes it easy to read and interact with programmatically. An example database:

( :title "TITLE"
  :category "CATEGORY"
  :segments ((:name "One")
             (:name "Two")
             (:name "Three"))
  :attempts
  ;; a run (complete attempt)
  (( :start "2020-01-01 00:00"
     :segments (( :name "One"   :duration "1:00.33")
                ( :name "Two"   :duration "1:33.45")
                ( :name "Three" :duration "2:41")))
   ;; an incomplete attempt
   ( :start "2020-01-01 00:00"
     :segments (( :name "One"   :duration "1:00.24")
                ( :name "Two"   :duration "2:33.08"
                  :mistakes ("2:03.35")))
     :reset "3:25.75"))
  :config
  ;; game specific customizations
  ((setq speedo-buffer "*My Buffer Title*")))