Added Character Age Document
This commit is contained in:
parent
0ffe678d87
commit
42325ab738
@ -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.
|
||||
Loading…
x
Reference in New Issue
Block a user