Inspiration

I wanted to build something that feels like RedditPlaysD&D (i.e. in the vein of TwitchPlaysPokemon, but much more open-ended). The goal is to let unlikely outcomes happen, create engagement from as many people as possible (whether they want to write or just vote!), and pace things so that they are immediately interesting, while also enabling deeper engagement

What it does

Each post represents a story, and users add and vote on comments about what might happen next. Posts display the text of the story so far, and then a button to continue the writing; this button opens a form that is prefilled from Google Gemini. AI suggestions make things accessible and keep content flowing, especially in the beginning, but users are free to write their own sentences instead. Rollit also has a setting to disable AI, which reflects the values of some communities (such as r/DnD) and may increase quality once there is an active enough user base. Everyone can read and upvote comments from each other to indicate writing they like or directions they are interested in for the story. Once the total score comments is high enough, a comment is picked and added to the end of the story within a new post, while the previous post is locked. Comments with higher scores are weighted higher, so users can contribute and affect stories just by upvoting. Comments continue the story and then diverge into a potential bad outcome (1-9), a good outcome (10-18), and a great outcome (19-20), and a 20-sided die determines which of those outcomes happens. The entire new story gets made into a new post to start the process again. Story titles start with a chapter number, which increases each time a new post is made, while the rest of the title stays the same, so that it's easy to navigate within and between stories, and to review different comments users have made, while associating them with the appropriate pre-existing text; the chapter number determines how much total score is required for a comment to be chosen, so that if a story picks up more readers and writers it gives space for more contribution, and things don't accelerate too fast.

Eventually when a story is long enough, the button to add to a story instead opens a small form to create a new story. That same form is available from a button in the subreddit menu.

How we built it

The experience posts are built with blocks, and the data for the story is stored within the actual post text. User contributions create comments. Blocks allow the text to fit Reddit's styling pretty easily, and Forms were the best fit for users to enter their text. An integration with Google Gemini to get AI-written text leans on the allow-listing of that service, and an API key secret.

Challenges we ran into

The app is so heavily dependent on user engagement that it was also really dull without that. Given a community it can be a series of vibrant narratives where everyone has a hand, but in an empty sub reddit, it's not really possible for a single person to test or engage with. This is the main reason for including AI-written content, because it lets one user experience both writing and reviewing writing, and speeds things up a lot in the absence of a community.

It would be nice if the blocks could expand to fit unlimited amounts of text, or if posts could show just plain post text (ideally loading as fast as other post text) with just a button or widget beneath the post driven by Interactive Posts. I'm not sure if this sort of usage would be common beyond Rollit, but it would allow better compatibility and faster engagement, plus look slightly more native than blocks do, and work around the problem of a fixed size app.

Blocks did not allow for text fields, but Forms were a good workaround.

Also, it's tricky that AI is so helpful to initial content generation, but also problematic for a few reasons. Having this configurable feels like a good solution that can include as much usage as possible and adapt to different subreddit and communities' needs and preferences.

Initial design was focussed on users coming to the subreddit and looking at new posts, but adapting the app to support crossposting and sharing was also tricky. Old, locked posts are not the best place to interact, but they let you see others' writing and they now give you a link to the latest chapter of the story.

I came across one notable bug in Reddit and noted that in Discord and on r/bugs: https://www.reddit.com/r/bugs/comments/1hfswnl/permalink_to_post_doesnt_work_on_ios/

Accomplishments that we're proud of

I like that the content and character live outside of the app, and can go anywhere! There are so many games where designers bring a huge amount of the world, mechanics, etc. I really wanted to leave things to the community.

I'm also happy that with the Gemini integration the app feels like something to play with even on my own and with only a minute or two of interaction. Building up a community and writing a lot can be a big commitment, so I feel like this allows that investment, while not 100% requiring it.

What we learned

The Reddit API is really quick and easy to work with. It only took a couple days to get everything up and running initially, and it's fast and convenient to run in playtesting on a private subreddit to see what's happening and what you can do in a hands-on way.

What's next for Rollit

I want to keep the UI as simple as possible, but I think there could be a place for buttons to help navigate between different chapters of a story. If a user opens an old, locked chapter, it could send them to the current chapter instead. If people wanted to see a lot more interaction within the app, then individual parts of the text could show how else things might have gone (what other comments existed, and what could have happened with a different roll). Maybe most importantly, Rollit could use some real usage from a variety of people, and I imagine there will be important and relatively easy-to-implement changes to better explain to new users how things work and to fit the usage and abuse that I haven't anticipated.

Extended Demo

There's a longer demo video here https://www.youtube.com/watch?v=uFmBa84O-7s

Built With

Share this project:

Updates