ChronicleHub: a QBN engine like StoryNexus

Precisely!

…Now, I really should start annotating the parser now that it’s open source. But, I should have removed comments earlier. It looks so nice and clean now

2 Likes

This is great. I’m guessing it’s a Docker thing, but do you have plans for a README so people know what to do to get it running? I wouldn’t want to miss anything. Props to you for going out and doing it, I’ll check it out when I can.

1 Like

I did not have plans before, as the main intent is still to run this online as a platform, so you can use the website that’s currently in the air. Should the platform fail, of course I’ll make all arrangements to make sure someone else can take over if they wish.


On another note, accidentally overwrote the public repo with an outdated version of ChronicleHub, because I forgot to fetch and pull. Thankfully, I made sure to store an up to date private repo which I just cleaned and pushed to the main one. Be careful when you do your version control.

1 Like

I’m pleased to announce CLOAK OF DARKNESS in ChronicleHub!

At this time, ChronicleHub will require you to register an account and log in to play, but unregistered play without logging in is being tested and is planned. Minor display elements and engine features are also being tested and bugfixed. CH is basically in late-alpha with additional features still in testing and on the roadmap, but this is an example of what is currently possible. By creating an account, the existing toolset is available for anyone to explore.

I am happy to answer questions people have about story creation from an author/user perspective.

My overall takeaway

ChronicleHub offers a QBN creation system similar to Storynexus which produces a game with the feel of Fallen London, but CH has a lot of its own ideas including a world model, an inventory menu with usable items, equipment-slots for stat-bonuses, configurable maps, deck-drawing mechanics, individual save-slots, and more. CH does a lot of things that I haven’t even bothered to explore yet (such as the feature to create market/shop locations in-game) and I don’t know everything. Many of the fancy display features you see were customized by @Randozart, but the system offers many solid prebuilt display themes and interface customization options.

Cloak of Darkness is a tiny adventure designed to demonstrate and test features of a creation system and has been implemented in many current and historical IF engines. It should be available on the Community Arcade tab of the website.

4 Likes

(Also mentioning you here @paul-donnelly as you ran into this issue as well)

I have taken a cursory look at this today. While I had everything in place to allow for guest play, I failed to update several “hooks” to account for the fact you might not have a database character, and it’s instead saved locally.

Nothing that would actually throw errors outside of runtime, since technically everything is being passed down correctly and database fetching relies on an API call.

Hoping to fix it ASAP

Hello. Played the COD demo. Nicely presented! A few observations:

  1. make the window small, click on “character sheet”, then make the window bigger. The layout is all bad with the text small.

  2. Leaving a room is a two-step process. Say I’m in the Cloakroom and click “leave the cloakroom”, a dialogue appears but to actually leave, you must press the small print not the highlighted choice. This threw me the first time and seemed not quite right.

Nice graphics!

That’s a little bit of Design Wonk by me in service of trying to mimic the CoD map/compass-direction specification. I’ve also accidentally hit the “Return to Location” button since it’s at the bottom and does look more prominent in this theme since it’s darker than the storylet choice.

In general, you’d probably just move using the “Travel” button (which is in its default setting just shows available location links, but can be configured as an actual map picture with pins positioned in different places on it.)

I gave the side rooms each an “Exit” storylet. It doesn’t need this since you can move via the map Travel button, but I wanted to make sure if someone hadn’t figured out the “Travel” button yet they knew they weren’t stuck in the Bar or Cloakroom. To make a permanent option in a location requires a storylet, so it’s got teaser text, then main body text, then a choice to click to accomplish the move which also has a resolution text. In practice, you really don’t need a travel storylet here to exit and ideally storylets will offer more than one choice aside from the “Return to Location” button unless the storylet is locked to not have it - as the “The End” storylet does to purposely trap the player.

1 Like

Ah! So that is something I accounted for in the earliest iteration of the system. Unless this is not what you mean of course. You can configure a storylet’s “return target”. If nothing is configured, it instead goes back to the location the Storylet lives in. You can also configure the storylet to skip the multiple steps, and just instantly redirect to its first option, which would work well for something like travel logic.

2 Likes

I’ve made this change. It’s not working yet, might just be our often-discussed “server update delay”?

But yes, when it’s working this is something I’ve wanted in Twine for a long time - a way to return to a specific location from any other passage if it ends with no choices.

As I recall, I think I tried this first and when it didn’t work, I thought perhaps a choice had to be made to facilitate a location change.

1 Like

Try enabling “Instant Redirect”, lifting the text from the main storylet and putting it on the first option, and configure that one to redirect you to the foyer.

The return target logic might be just for other storylets

Okay, I’ve done it that way and it seems to reduce the number of clicks necessary by one since it’s not showing a choice outcome.

I think the important one is “instant redirect” in the choice which skips the result.

I’m not sure then what “Return Target” in the storylet is used for if it doesn’t direct to a location - can it redirect to a storylet ID maybe?

That’s what I originally put it in for, yes, so you can treat another storylet kind of like a hub for other storylets

1 Like

Hello!

I don’t constantly update this thread as much of what I do basically amounts to small bugfixes and long scheduled small QoL fixes. Here’s some cool stuff from today which I feel add some modicum of legitimacy to the platform.

Starting off, Terms of Service

This is really mostly to protect myself as the platform owner, but, it also enshrines the ownership and copyright of the platform user, which I think is pretty neat. It also allows me to legally ban people if they aren’t being nice, and explicitly lists the type of content that is and isn’t allowed. This is one of those situations where I am happy I had a brief stint in law school. Of course, it’s using Dutch law, which is internationally applicable, and generally very reasonable.

This was also in part, because I want to create a safe platform, but since there isn’t much in the way of QBN platforms, I also want to keep it accessible. As such, I have elected to include special reserved content tags: NSFW, CW and Mature.

CW and Mature allow users to upload some heavier fiction, but protects users from that fiction by showing a content warning modal upon trying to play the game.

The NSFW label is mostly there to allow explicit content to be created and hosted on ChronicleHub, but to keep it out of the main Community Arcade. Personally, I have nothing against NSFW content, but once a platform gains a reputation as actively promoting it, it opens the possibility of scaring away users who want to just play regular and create regular games, thinking it’s an NSFW platform as a whole.

Creators of NSFW games are still allowed to share their games by hyperlink, of course, as each world can be directly accessed through the storyId. For example: Chronicle Hub

Now, those terms of service finally convinced me to introduce proper Markdown formatting. I have yet to test everything, but here’s the comment block from my "FormattedText.tsx" component which previously had me hardcode markdown formatting with regex:

/*
 * MARKDOWN SYNTAX REFERENCE
 * ----------------------------------------------------------------------
 * This component supports standard CommonMark syntax with custom extensions.
 *
 * CUSTOM SYNTAX:
 * [Text]             -> Highlighted/Emphasis text (Theme color)
 * \[Text\]           -> Literal bracketed text (No highlight)
 * [\[Tag\] Text]     -> Highlighted text containing brackets
 *
 * STANDARD MARKDOWN:
 * **Bold**           -> Bold text
 * *Italic*           -> Italic text
 * # Header 1-6       -> Headings (# H1, ## H2, etc.)
 * > Quote            -> Blockquote
 * - List Item        -> Unordered List
 * 1. List Item       -> Ordered List
 * `Code`             -> Inline Monospace/Code
 * ```                -> Code Block
 * ---                -> Horizontal Rule (Divider)
 * [Link](url)        -> External Hyperlink
 * ![Alt](url)        -> Image
 *
 * Note: Newlines are automatically preserved as line breaks.
 */

So uh, go wild. Do note I have some safeguards built in regarding hyperlinks, to prevent phishing and other malicious uses.

5 Likes

Another thing you’re going to have to worry about real soon now, especially given the potential for NSFW content: geoblocking (cf UK laws). On the upside, you can at least bake it into the system from the nigh-get-go, instead of having to paste it on top of an existing system.

2 Likes

Yes, you’re right! Thank you for pointing that out! I occasionally forget parts of the world are currently going that direction. Yes.

I’ll need to deal with this. Should be easy enough to do by IP, probably.

1 Like

Just to get back to this, since I made the platform open-source anyway, nothing is blocking me from integrating Strudel now. So, I’m going to look into it! It’s far more powerful than what I’ve been able to build so far.

1 Like

I have experimented with MIDI and I’m not great at it, so I’m not sure if I’d use the music creation to create BGM, but from what I’ve looked at it seems like it’d be great for short “alert” tones such as playing a short Zelda-like victory tune when treasure is acquired.

Do you.. just not know what SN was? Decks were there, slots and inventory were there, markets are a FL thing.

1 Like

Now that you say it I must have had cards where you had to select the option in the drop down to sell a quality. It’s been so long.

[plays “Old Man Forgets Stuff” card]

1 Like

I think what might diverge from SN is that I made sure a lot of required things like an action economy are optional in ChronicleHub. I also mostly looked to Fallen London for features, and then wondered “how can I create a universal interface for this or give the creator more knobs to turn?”.

Stuff like using ScribeScript to make really customisable quality change descriptions. Though I am considering making a sort of extra interface layer that feels more like the dropdown based interface from SN