Skip to content

Latest commit

 

History

History
39 lines (32 loc) · 4.03 KB

README.org

File metadata and controls

39 lines (32 loc) · 4.03 KB

Darkflare: Time Travel Tracking Platform

WORK IN PROGRESS: Nothing works, all subject to change

Introduction

Darkflare is a web platform for the collection and display of data relating to time-travel scenarios. It was originally designed as a companion app for the tabletop RPG Continuum but has since been generalized to support more generalized time-travel mechanics for other RPG systems, mapping out time-travel fiction, etc.

Definitions

This document will use the following definitions from Continuum for more clarity when discussing time-travel scenarios.

  • Age - the subjective past of the character, regardless of how much time-traveling they’ve done. Ex: you may have been in Paris in 1975 10 years ago in your Age, regardless of the fact you’re currently in 1963. age may also be used in lowercase fashion to denote the more usual usage: the amount of time that has passed since the character’s birth, again regardless of how much time-traveling they’ve done.
  • Yet - the subjective future of the character. If a character witnesses an older version of themselves perform an action, or someone tells them that they do something in their subjective future, then they have gotten information about their Yet.

    Depending on the time travel mechanics being used, these actions may be required actions that the character must fulfill to avoid paradox, or could just be information about the way things will unfold unless specific actions are taken, etc.

  • Down - the objective past from the current perspective of the character. Ex: 1963 is 12 years Down from 1975.
  • Up - the objective future from the current perspective of the character. Ex: 1975 is 12 years Up from 1963.

Concepts

The two main underlying concepts that Darkflare uses to organize information are Ranges and Events.

Ranges

A range is a contiguous block of spacetime that a character inhabits. This is usually denoted by a start date, an end date, a location, etc. A Range also corresponds to a specific contiguous block of the character’s Age. Ex: a character might be in Tokyo from 1992 to 1997, from when they are 30 to 35 years old.

Ranges allow Darkflare to easily answer questions like:

  • How many versions of the character are running around in 2006, and where are they?
  • Has the character ever existed past 2070, and if so, where?
  • Give me the character’s complete time travel history, ordered by their Age.

Events

Events are specific occurrences of interest that happen within a range. These could just be notes (“character robbed a bank in 1981”), or could denote the birth/death of the character, etc.

Events are used to create and modify ranges. For example, engaging in time travel or changing location implies creating a new range for their updated spacetime “coordinates”. In addition, adding an event will extend the character’s current range to the event date, and will cause the character to accrue age.

Ex: A character has existed in San Francisco since 1989. They then time travel from 1994 to 1953, teleporting to Seattle in the process. This causes the San Francisco range to be extended to 1994, accruing 5 years of age to the character, and creating a new range in Seattle in 1953. If a new event is created saying that the character robs a bank in Seattle in 1955, the Seattle range is extended to 1955 and 2 years of age are accrued to the character.

Paradox and Divergence

Paradox can be resolved/unresolved, connected to Events, can stack (killing of both maternal/paternal grandfathers).

Divergence implies new char spawned from point of divergence (kidnapping younger self).

Multiple Universes

Universes are really just a generalization of “location” for Range purposes, but get special status in the data schema to make modeling this common scenario easier.

Technical Details

Project setup, DB migrations, etc.

Example Data

Model popular time-travel fiction datasets (Dark, Back to the Future, etc.) and provide them in some import/export format (probably pg_dump).