olivierkes / manuskript

A open-source tool for writers
http://www.theologeek.ch/manuskript
GNU General Public License v3.0
1.71k stars 226 forks source link

Characters change with time #1230

Open FastusNumen opened 9 months ago

FastusNumen commented 9 months ago

Just a request for future enhancement, if possible.

While I write I have characters that change (growing up, getting fatter, changing perspective, etc...) and inside the character sheet of a specific character, I would like to have the latest details shown, but I would also like to have the option to go back and see how he looked in a specific chapter or age.

For example: I write everything I need about a Bob character in Chapter 1, then in Chapter 25 there's a time skip and I have to make some changes. Right now the only option I have is to either modify the character or to create a new one named "Bob - Chapter 25" or "Bob - age 20". I think it would be good to have the possibility of choosing, on top of the "Basic info, Summary, Notes, Detailed info", to add a whole new set of them, so when you enter Bob's character, on top, you have "Chapter 25, Chapter 1" and below, you have a "Basic info, Summary, Notes, Detailed info" for chapter 25, while you see a different one if you click on Chapter 1. (Or "Age 20, Age 10" which may be better.)

TheJackiMonster commented 9 months ago

So I would think you want to have something like multiple editable pages/tabs of one character? I think the example with aging makes a lot of sense but you could also have characters with multiple personalities or characters experiencing events which might change a lot in a story.

Maybe having multiple tabs or pages with editable values would make sense. Then all info fields could still point towards the first page/tab as default and linking to the character in other fields could additionally add a number/index to refer to the specific page/tab.

FastusNumen commented 9 months ago

Yes, multiple editable tabs could be the right description. You click on the character and you see the latest tab as the default, but you can click on the others to see the past self or other personalities.

Like this:

Screenshot 2023-10-01 150858

With the option of changing "Tab1", "Tab2", etc, to "Age 12" or "Jekyll persona".

obw commented 9 months ago

It's a nice idea! But also, it's not easy to implement!! I would solve this like it's solved in Most wikis! Make Snapshot, whenever something change (The snapshot could technical a simple zip, with all the data of the character)

[BUTTON: Character archive] [🡣 {INTERNAL Number} Select older Version: Name / Note (read only)]

Workflow:

Whenever [change save] is used, a simple dialog shows up and ask for a one line not, which used later used in the select box to show it to the user!

  1. Exists archive DIR for character
    • no
    • create it
    • create empty ini file in archive dir
  2. get the biggest number and add 1
    • write ID=note
    • create the filename ID + ".zip"
    • create the zip out of the Character Data into the character archive dir! (ID + ".zip")
    • Perhaps add a ini-file whith following Data:
      • Date of creation
      • Perhaps a context (Scene / Chapter), where the change happened!
      • the note exactly how the user had given it!
  3. update selectbox

DONE!

Problems I see directly:

What's happen when the character name changes?

My solution would look like: The function of the renaming of the data file, also should rename the archive directory!

With this way of handling, it should be, only a little coding needed!

The solution with TABS, is from my point of view, not a good way, because, after two or three long name/notes, of six to ten short once, the usability goes downstairs! With a Selectbox we can work with hundreds of changes! Without running into layout problems!

TheJackiMonster commented 9 months ago

The solution with TABS, is from my point of view, not a good way, because, after two or three long name/notes, of six to ten short once, the usability goes downstairs! With a Selectbox we can work with hundreds of changes! Without running into layout problems!

I think that's not really a huge problem. We don't want to do versioning or revisions here but only implement minor variations between a character along the story. So I don't think it's very likely to have that many variations. Also it's still possible to create different characters for such use cases.

Obviously a character will change very often in a story which people could plot down very detailed in hundred of layers. But I would argue that's not really the intent of this functionality. Because in that case I would think authors write things into their plot which belongs into the story, doesn't it? I mean not every decision of a character in a story needs to be explained in a plot, does it?

Also we could opt for something like a TabView from libadwaita in some future which allows a 2D raster view for tabs to select one as well as searching in them.

Otherwise I'm not fully convinced a Selectbox scales better in terms of usability. It should be possible to implement sideways scrolling for tabs giving you equal access than vertical scrolling in a Selectbox. However a Selectbox would be slower to use when having only a few tabs (the case which I think is more likely).

obw commented 9 months ago

@TheJackiMonster

Also we could opt for something like a TabView from libadwaita in some future which allows a 2D raster view for tabs to select one as well as searching in them.

This is nice, but also I have thought of a selectbox, because, it's easy to implement. Something like this is better, but also generates more overhead! So I selected this solution! Also, I come from the Web development, there would something like this a Hell to implement!

TheShadowOfHassen commented 9 months ago

Just as a note, try to keep the UI as easy as it is now a simple, easy to understand interface is really important.