gamelog/README.md

111 lines
2.9 KiB
Markdown

# Game Log
RPGs I've played
http://tilde.town/~dozens/gamelog/
## About
This is a log of all the games I've played starting in 2021.
I'm keeping this log in anticipation of writing a "Every game I played in 2021" blog post in 2022.
I decided to use recutils for this because, why not.
## Getting Started
You don't need to install anything if you don't want to. You can just edit the rec file.
## Dependencies
- GNU recutils
- just (optional)
## Considerations
What kind of stuff am I interested in keeping track of?
- Role: Player or DM?
- Format: In person? (Ha, one day.) Roll20/Discord? Play by post?
- Length: One-shot, adventure, campaign?
- Crew: Who did I play with?
## Schema
You should probably just read the recfile because that will always be the source of truth, but at the time of this writing, the schema is as follows.
Game:
```
%rec: Game
%doc: a ttrpg game I have played or am playing
%key: Id
%type: Id int
%type: System,Module,Format line
%type: Started date
%typedef: Role enum DM Player
%typedef: Length enum Campaign Adventure Oneshot
%typedef: Status enum Ongoing Complete Hiatus Dead
%auto: Id Started
%mandatory: Id System Module Format Started Role Length Status
%unique: Id
```
Game Update:
```
%rec: Update
%doc: an update for a game!
%type: Game rec Game
%key: Id
%type: Id int
%type: Created date
%auto: Id Created
%mandatory: Id Created Text
%allowed: Id Created Text Game
%unique: Id
%sort: Id
```
This database originally just had the one `Game` record with updates to games unofficially recorded in the Notes field.
This lead to the primary datatype being the campaign, or the adventure, or the oneshot.
And individual session logs didn't really exist anywhere.
I didn't like this because it meant I never new how many actual games I've played.
For example, I had been playing Strixhaven on a weekly basis for months,
but still to this day only have three 'updates' for it.
So I migrated all notes and updates for each game to a new `Update` type.
And the new goal is to create and retire Games as needed,
and to create a new Update for every session played.
So I actually know how many games I've played for real.
Note that after doing this,
I am still not using `recsel`'s "join" feature,
because recsel joins are messy.
## Learnings
check out [doc/learnings.md](doc/learnings.md)
## Recsel examples
- `recsel -t Game -e "Role = 'Player'" games.rec`
See `justfile` for more examples
## Todo
- [x] Add types/enums
- [x] ~~tui?~~ run `just new`
- [x] add Update to CLI
- [x] add Date to update menu. sometimes i add the session log after the session has happened!
- [x] refactor edit/update search functions
- [x] change Recent Games from 'recently created' to 'recently updated' ?
- [ ] CLI flags mode
- [ ] rename Update to Log or Session Log?
## Resources
- <https://labs.tomasino.org/gnu-recutils/>
- <https://github.com/zaid/vim-rec>
- <https://www.gnu.org/software/recutils/manual/>