foundry-ironsworn
foundry-ironsworn copied to clipboard
Rework progress items to be more usable
A long discussion in Discord turned up the following fact: when you want to make a "connection" in the game, there are four disjoint ways of organizing connections:
- Use the "Connections" tab on a character sheet; connections are progress items
- These connections cannot appear on the map
- Cannot link to connections from elsewhere
- In a shared game, each player has their own copy, and they can get out of sync
- Each connection gets its own "Shared" sheet
- Has a notes section and progress controls at the top level, no need to click "edit"
- Can drag to map and editable areas
- But also includes extra controls that don't make any sense, like Supply
- No central organization, bonds track can get out of sync
- Use a "Foe" sheet (which should really be renamed "NPC")
- More focused on a single progress item
- Can drag to map and editable areas
- Can't edit notes without clicking "edit", which opens a nearly-identical sheet
- No central organization, bonds track can get out of sync
- Paired "connection" item and Journal entry
- Splits UI into two pieces
- Not draggable to the map
- Easily linkable from other notes fields
- No help getting from one to the other
- Still have to decide how to manage them in a shared game
That's… not ideal. Every one of these has problems with it, and none of them provide a smooth experience. Here are the goals for a better system:
- Connections should all show up in a central list
- Editing their descriptions should be easy
- They should be easily linkable from any open-text field (i.e. "Brother of Ol' Joshy, lives in a cave on Mistral")
- They can be dragged to the map
Foundry can do all of these things, but not with a single entity.
A loose thought: maybe content for progress items gets stored in journal entries, and progress items just store a reference to the JE. We could augment both UIs to add a "create/open actor" button, which would create an NPC shell around the item so it could be placed on the map.
Another loose thought: the ability to mark items as "global," meaning they belong to all actors in the game. They'd actually be moved to a new, singular, "global" actor, which is the owner of record for all of these items, and then projections of them could be placed on individual sheets (i.e. a ship sheet, which only displays ship and module assets).
copy-pasted myself (+ editing for clarity) from the discord. TLDR: what if we didn't even bother with progress as items at all? what if it was all delegated to journal, and instad of adding additional complexity to the overall experience with an additional tab on the sheet, the PC just used the foundry's journal (with some progress-specific extension from the system)?
i wonder how well post-v10 journal entries would work as a "global" progress objects. there's a certain logic there 🤔 like, the journal being the center of quests, past and present, is a familiar paradigm to many. solves the problem of having to switch back and forth to journal stuff by making them the same thing.
i reckon being able to assign progress tracks to specific PCs is less important for multiplayer gameplay than being able to share progress tracks. like, as a player, if i had to choose between "all tracks belong to one player only" and "all tracks are visible to all players", i'd def choose the latter (and to a solo player, there isn't really a difference). it may also be easier to hack something to associate specific PCs with a global item rather than hacking a PC-specific to be associable with other PCs.
that could also solve the problem of "need an actor to have map representation", because map pins can be associated to journals (and they're also slated for some improvements in v10). that's all predicated on map notes not sucking anymore, natch, but if they're getting a major revision, chances are good that they'll improve.
EDIT: cleaned up my use of terminology.
journal entry pages: https://github.com/foundryvtt/foundryvtt/issues/6945 (so far they don't seem to be on the API site, though numerous issues mention them 🤷
sketching out some notes on an IronswornJournalEntry (and/or IronswornJournalEntryPage? 🤔 ) extension as i code a lil prototype:
How many tracks per entry?
in other words: would progess entries have exactly one track, or could they hold multiple progress tracks?
i'd be inclined to make them 1:1 with JournalEntryPage. it keeps the structure simple, and lets users use the journal organization tools like folders to group progress items.
Should clocks and progress tracks have an option for labels distinct from the journal entry page title?
i'd lean towards 'no' to keep it simple - i think it's best to avoid additional detail within the page object. also, there's a place to put text in the journal entry page, and if it's at most a clock and a progress track per page, then individual labelling is of limited-at-best-utility anyways.
in other words, the journal entry page should be an atomic unit of progress track organization. then we can rely on foundry's tools for managing journal entries rather than implementing a way to organize progress tracks within journal entries.
How are legacy tracks handled?
i think the best way to handle this is to leave them in place on the PC. they're specific to each PC, and abstract enough that associating them with events/tasks in the journal may not back sense.
How are shared tracks handled? What about ones specific to a given player?
honestly, i don't think we need special handling for that. consider the following play styles:
- solo player: journal visibility/ownership doesn't matter here, because they all belong to one peson.
- co-op play: it'd be pretty weird to hide progress tracks from people you're co-opping with, IMO... but there's always the built in permissions. it might matter for the purposes of record-keeping, but i don't think a specific interface to handle/manage it is much of a value-add here; the great thing about journal entries is you can add notes to them easily.
- guided play: much the same as co-op play. if people want secret GM notes, they can rely on foundry's builtin journal permissions.
How are clocks handled?
i'm thinking the current model - where "has a clock" is a boolean that can be toggled on a progress item - would work fine here.
What about "Mark as completed" functionality?
so, i reckon one of the reasons this feature was necessary in the first place is that the current progress Item doesn't have a satisfactory way of controlling clutter otherwise. i suspect v10 journal entries won't suffer from the same problem - they can be organized into a directory-like structure, or sent to the compendium for archiving.
What is the relationship of a progress journal entry page to actors?
linking them would definitely be easier if they were all journal entry pages (and i'm pretty sure i saw a feature in the works to make it easier for users to do that). worth investigating, IMO, but big enough to be its own (or several) issue: #386
While I'm at it, are there any misc features that might be worth adding?
- more progress track type options to cover the "canonical" types. currently, we're missing Journeys, Expeditions, Combat
- recommit mechanics (see Delve the Depths, SF's Fulfill Your Vow, etc)
- separate them by game
- custom progress track type option where user can enter their own label?
- alternately: if journal entries end up with some kind of tag system, leverage journal tags instead?
- unify progress resolution to a single method rather than one for vows and one for everything else
- it'd be cool to retain the association there. the track type data could include a move ID; a user setting a custom type could then set a custom move to use
- other possibilities for useful move data:
- a default icon (so a combat track looks different from a vow track)
- other associated moves (to provide a shortcut to jump to the move info)
- clock types, even if it's just as a label to differentiate them: Tension clock, campaign clock
- leave space for future extension is desired (for example: set a default chance an ask the oracle roll from a campaign clock)