108 lines
2.8 KiB
Markdown
108 lines
2.8 KiB
Markdown
# Game Log
|
|
|
|
RPGs I've played
|
|
|
|
## 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/>
|