snestracker
snestracker copied to clipboard
Milestone System
NOTE: work-in-progress post.. not fully fleshed out yet
To make 'playing' snestracker more fun, construct a core milestones system. At the heart is persistent record keeping of the user's history. Here are some examples (work in progress).
Can track per session and across lifetime
#times tracking
Samples
- number of samples loaded
- number of samples saved
- number of samples zapped
- number of times sample editor opened
- number of times each sample control used
Instruments
- #times instrument loaded / saved / zapped
- #times inst panel opened
- #times each inst control used
to avoid this getting long-winded, let's basically say the #times anything has been done, haha.
length tracking
Pattern Sequencer
- Amnt time before sequence updated
Pattern Editor
- amnt time until patterns exhibits user update
- amnt time user spent in one track
- amnt time user has stayed in same octave
- amnt time user has used same instrument
- amnt time before user inserts 1st effect
Song Settings
- amnt time before user customizes echo
other
Fun
- #times an editor panel has been toggled within 3 seconds
These kind of statistics will be referenced by a (hopefully scriptable) event system that will be fronted by the tracker's mascot (tbd), who will behave like Clippy.
Ideally, the system can be constructed in a way that doesn't require 'telling' the other tracker classes that there even is a milestone system. Or, perhaps I need to subclass them and their functions to also post milestones-based metadata or emit signals to a milestones mothership.
when finished
Once this has been layed out in code and operating well:
- define a scripting syntax in, say, XML (since i'm already planning on using xml for the other formats).
- implement where those files will be located, and how they load into the milestones system.
- Design a tutorial scriptable system.
WISDOM/FUNNY quotes should come only when you CLICK on the mascot.... whereas ACHIEVEMENT quotes come after specific achievements or periods of time. Less chance of pissing users off!