Added Character Age Document

This commit is contained in:
Nick Beckley 2026-06-14 16:14:10 +01:00
parent 0ffe678d87
commit 42325ab738

View File

@ -0,0 +1,255 @@
# PlotDirector Feature Specification: Character Age and Story Date Management
## Overview
PlotDirector should support both precise age calculations and
approximate author-supplied ages without forcing authors into
unnecessary data entry.
The primary goal is to assist authors with continuity and timeline
management while respecting the fact that not every character requires
an exact birth date.
The system should only perform calculations when sufficient information
has been explicitly provided by the author.
## Design Principles
### 1. Only Calculate What the Author Defines
PlotDirector should never invent information.
If an author provides:
- A Date of Birth
- A scene with a resolvable date
Then PlotDirector should calculate exact ages.
If an author only provides:
- "45 years old"
- "Mid forties"
- "About 30"
Then PlotDirector should preserve that approximate information without
attempting to generate birthdays or age progression.
### 2. Precision Should Match Author Intent
Authors intentionally vary the precision of character information.
Characters with known birthdays should benefit from automatic age
calculation. Characters with approximate ages should remain descriptive
only.
## Story Calendar Model
### Project Story Start Date
Projects may optionally define a Story Start Date that acts as a default
reference point.
### Book Story Start Date
Each book may optionally override the project start date. If specified,
the book start date takes precedence.
## Scene Date Resolution
Scenes may have varying levels of temporal precision.
Supported modes:
- Exact Date
- Exact Date and Time
- Relative Day Offset
- Relative Sequence Only
- Unknown
## Effective Scene Date
The system should derive an EffectiveSceneDate used for calculations.
Rules:
1. Use exact scene date if specified.
2. Use relative day calculations if possible.
3. Use inherited dates only where the author has explicitly enabled
such behaviour.
4. Otherwise, leave unresolved.
The system should avoid silently making assumptions.
## Character Age Model
### Exact Age Tracking
Characters with a Date of Birth participate in automatic age
calculations.
Required Data:
``` csharp
DateTime? DateOfBirth
```
Example output:
- Maggie Grant: 17 years, 8 months
- Beth MacDonald: 18 years, 0 months
### Approximate Age Tracking
Characters without a Date of Birth may store an approximate age.
Required Data:
``` csharp
int? ApproximateAge
```
Optional:
``` csharp
DateTime? ApproximateAgeAsOfDate
```
Example:
- Mary Grant: Approximately 45 years old
No further calculations occur.
## Age Calculation Rules
### Exact Ages
Calculate only when:
- Date of Birth exists
- Effective Scene Date exists
Formula:
``` text
Scene Date - Date of Birth
```
Display:
- 17 years, 8 months
- 18 years, 0 months
- 22 years, 3 months
### Approximate Ages
Display author-entered values unchanged.
No progression occurs.
No birthdays are inferred.
No calculations are performed.
### Unknown Ages
If neither Date of Birth nor Approximate Age exists:
Display:
``` text
Unknown
```
## Continuity Assistance Features
These features should only apply to characters with exact birth dates.
### Birthday Transition Warnings
Example:
- Beth turns 18 between Scene 14 and Scene 15.
### Incorrect Age References
Example:
- Character notes describe Maggie as 17 years old.
- However, in this scene she is actually 18 years old.
### Timeline Insights
Possible reporting:
- Character age at start of book.
- Character age at end of book.
- Character age range throughout series.
## User Interface Recommendations
### Character Editor
#### Exact Age Section
- Date of Birth: \[Date Picker\]
- Enable automatic age calculation.
#### Approximate Age Section
- Approximate Age: \[45\]
- As of: \[Book Start\]
Help text:
> Use this when the exact birth date is unknown or unimportant to the
> story.
### Scene Inspector
Display age contextually.
Exact age example:
- Maggie Grant
- Date of Birth: 1 September 1965
- Age in this Scene: 17 years, 8 months
Approximate age example:
- Mary Grant
- Approximate Age: 45
- Age in this Scene: Approximately 45
Unknown example:
- Barbara Jones
- Age: Unknown
## System Behaviour Summary
Character Data Scene Date Available Result
----------------- ---------------------- -----------------------------------
DOB Yes Calculate exact age
DOB No Display DOB only
Approximate Age Yes Display approximate age unchanged
Approximate Age No Display approximate age unchanged
No age data Any Display unknown
## Key Philosophy
PlotDirector should function as an intelligent continuity assistant
rather than an automated co-author.
The system should:
- Calculate exact information when sufficient data exists.
- Preserve ambiguity when the author intentionally provides
approximate information.
- Never invent birthdays or age progression.
- Never assume precision beyond the information supplied.
This approach provides powerful continuity support for plot-critical
characters while remaining lightweight and flexible for secondary
characters.