Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build Your Own Adventure posts #1606

Open
wants to merge 9 commits into
base: master
Choose a base branch
from

Conversation

vitorpamplona
Copy link
Collaborator

@vitorpamplona vitorpamplona commented Nov 24, 2024

Inspired by the Build Your Own Adventure books, this NIP tries to emulate the same behavior on Nostr.

It allows Clients to build button interfaces for the next options in each part of the story.

Read: here

Simple demo: https://video.nostr.build/3be38941d3123f8b72f13cac9ed46ae4f158edf52e4afdfdfbffc77abdd402c8.mp4

@vitorpamplona vitorpamplona changed the title Build Your Own Story posts Build Your Own Adventure posts Nov 24, 2024
@alexgleason
Copy link
Member

This is wacky. I like it.

It's weird you have to create the leaves before the branches.

@staab
Copy link
Member

staab commented Nov 24, 2024

Fun idea

@pmrcunha
Copy link

Cool idea! I can see this being used for a lightweight online course client too.

@pablof7z
Copy link
Member

lol, this is super cool!

@SilberWitch
Copy link
Contributor

Hate to make this boring, but could we have something like this for articles, so that one person can define different paths people can take through their 30023s?

Like the old-style blog breadcrumbs, related articles, or series of articles?

I've just been writing "In my last post, on the same subject ", but it breaks the flow of the writing and IT sends people to a different article before they finished the current one.

So that the options are "previous" and "next", or something. Like so:
https://codex.wordpress.org/Next_and_Previous_Links

@Sebastix
Copy link

Hate to make this boring, but could we have something like this for articles, so that one person can define different paths people can take through their 30023s?

Like the old-style blog breadcrumbs, related articles, or series of articles?

I've just been writing "In my last post, on the same subject ", but it breaks the flow of the writing and IT sends people to a different article before they finished the current one.

So that the options are "previous" and "next", or something. Like so: https://codex.wordpress.org/Next_and_Previous_Links

Basicly the options tags (and the e tag when the event is not the root event) could be used on those event kinds (30023) too? Or make these kinds 296 and 297 more generic to be used with multiple (content) event kinds (kind 1 and 30023) and use the reference a tag with an empty content field?

@SilberWitch
Copy link
Contributor

Yes, could we make "option" more widely-applicable, so that we don't need hyperlinks to navigate and clients can standardize the handling? Then, it's internal linkage, like with wikis.

@vitorpamplona
Copy link
Collaborator Author

There is a difference between the option tag here and next/previous on articles and kind1s. Here the content is always incomplete and you HAVE to see the options in order to get the full story. This is why it's a different kind. If we add these to Kind1 and kind 30023, those clients that don't support this NIP will show only a partial story that doesn't make any sense on it's own. It's fully out of context.

Now, maybe what you are asking is not for partial stories, but it's just the next and previous links to other posts. On kind 30023, people usually do that with markdown links or quotes at the bottom of the article. But we could add tags to make custom UIs in clients as well. We just need to be mindful that many clients are not going to implement it. So they should be optional UI feature instead of required as in 296 and 297.

I don't think we should overload kind 30023 and kind 1s with the partial content 296 and 297 would have.

@SilberWitch
Copy link
Contributor

Okay, that makes sense. Especially for this use case.

I'd really like note navigation determined by the author, tho. 🙈One of the best features of Wordpress, was that the entries weren't orphans.
Would it be possible to have the options in a type of navigation label, for 30023s? Then, if the client didn't handle them, it could just ignore the label? I was thinking about this, for 30040s. An author could recommend other books, from his own book.
Maybe I'll write that up, separately, in my References spec, and stop derailing here.

But this is a fun one. Could use it to create wizards or dynamic quizzes, too. Like, those beauty quizzes where they ask you to choose your hair color (dark/light) and then, if you choose "dark", it asks you to select from black/dark-brown/med-brown and so on.

@vitorpamplona
Copy link
Collaborator Author

vitorpamplona commented Nov 24, 2024

One of the issues I am having is how to structure the read state of this kind. I think people would want the read state to be synchronized between clients, especially for long books. The question is, do we just mark down where I am in the story (just save an event ID somewhere) or do we store the full stack of options and answers?

More importantly. Can/should that information be public or does it need to be encrypted?

@SilberWitch
Copy link
Contributor

Encrypted 💯

@pmrcunha
Copy link

Storing the full stack of answers would allow you to, for example, display how many possible endings you've explored.
And if that's public you could even show how common the user's answers are.

Reminds me of the game Detroit: Become Human, which at the end of each level shows you a tree revealing that there are other decisions you could have made, and you replay to discover them all.

@vitorpamplona
Copy link
Collaborator Author

@alexgleason It's weird you have to create the leaves before the branches.

I fixed this with replaceable events and addresses.. It was too hard to assemble every scene and options before hand.

Now multiple stories can be merged by their authors. Lots of collaboration can happen.

@htsula
Copy link

htsula commented Nov 25, 2024

Would this not be much easier if there was just a way to link a kind1 without the client embedding it? Or even just markdown to embed a button. It would have all the features of this with just kind1s.

Comment on lines +48 to +49
["title", "<short title for this scene>"],

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make it possible to reply to scenes with further scenes. If your story gets referenced, your client should pick up on that (if you follow me for example) and make it easy for you to add my event as an option using the title as description of a further option.

Suggested change
["title", "<short title for this scene>"],
["title", "<short title for this scene>"],
["E", "<root_event_id>", "<relay_hint>"],
["e", "<event_id>", "<relay_hint>"],

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hum... I wonder how to do that.. we could add a tag but then you will have to remember deleting it later. Or maybe we just create another kind...

@vitorpamplona
Copy link
Collaborator Author

Would this not be much easier if there was just a way to link a kind1 without the client embedding it?

You could but then all the scenes show up in your timeline backwards, from the end to the beginning, in the order you posted, without any regard for your options. Most people will be lost trying to find the starting point.

Also, with kind1s technically don't support markdown, so links are not possible.

@SilberWitch
Copy link
Contributor

I fixed this with replaceable events and addresses.

🙏🏻 Much better. Opens up more use cases, while still focusing on the options.

@vitorpamplona vitorpamplona marked this pull request as ready for review November 27, 2024 00:11
63.md Outdated Show resolved Hide resolved
Co-authored-by: Asai Toshiya <[email protected]>
@vitorpamplona
Copy link
Collaborator Author

Shipped on Amethyst v0.93+

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants