ChronicleHub: a QBN engine like StoryNexus

WIP on better QoL features

Okay, so there’s a few people I keep in the loop on the constant stream of updating I keep doing. Thankfully, because of the database I am using, there’s very little risk of breaking anything if I end up making changes to the program, so that reassures me. Still, it very much reinforces that ChronicleHub is essentially in an Open Alpha, which I felt I had to re-iterate.

I am currently tackling a big point that kept bubbling back up, but which I continued to put off: Better CRUD[1] tools in the main admin screen.

I couldn’t universally duplicate everything. Saving could be fiddly and wasn’t universal across pages. The website was using the built-in system notification in many places. I decided to start reworking all of that.

I’m not sure when I am pushing this update, but each Creator Studio screen is getting a little editor bar at the bottom. If the current version of the document is up-to-date, the save button will be greyed out. The version which the database uses internally is displayed at the top right of the form. This is bound to be useful to someone. I am making sure that you also can’t accidentally overwrite a later version with an earlier version, so it’s safe to work on multiple devices and not close your web-page.


To make everyone’s life even easier, I am making sure Ctrl+S for saving is implemented universally. In addition, as you will see in the screenshot below, it will be clear if there are any unsaved changes. You can also revert your changes, delete or duplicate the item. What absolute luxury!
image
Should you try to move to another screen, a little modal will pop up.

Same with delete, revert, and creating a new item

These modals aren’t entirely universal yet, but I’m trying my best to replace them where I can.
I hope to push out this update at least partially once I am confident everything works and is implemented.

Another little thing I just wanted to show you all is the fact I made character creation more solid, and the main settings page tools for these are also much improved.


Thank you everyone who continues to take an interest in the project. I hope I am not bothering anyone with these updates. I am trying to build the best tool I can for QBN style interactive fiction, and I appreciate all the feedback you have all given.

As I already confided in @HanonO, the fact that so many people are launching Interactive Fiction platforms does cause some lingering insecurity. As such, I am very happy about everyone who continues to voice their desires and critical questions. The new editor tools are definitely a result from that constant dialogue with people who are testing the platform (and me also trying to actively use it)


  1. Create, Read, Update, Delete. Yes, I know it’s an unfortunate naming convention. ↩︎

3 Likes

4 Likes

Okay, so I have been tinkering away at the platform, did a few more bugfixes after @HanonO found another few cases that should have been handled, but which I hadn’t accounted for in recent refactoring. While living stores existed in the background, I hadn’t added a visual interface for them yet. Well, I fixed that.


The settings menu allows you to determine how and where they should show up, and whether the sidebar or additional tab ought to be hidden if no timers are currently active, to not claim visual real estate. If right column is chosen, it will default to the character sheet on mobile.

I sat down to evaluate the project so far, and besides fixing bugs, I have the following things in mind. I need feedback on this, as I want to know what I am doing for others, and what I’m mostly doing for myself, and in which ways my ideas fall short:

  • Image composer: A tool where you can take uploaded images (or a library of preloaded SVG files) and compose them into a layered image, so you can do things like build dynamic scenes. The images I intend to use as preloaded library are from game-icons.net, which is a fantastic library for just getting stuff done already. SVG images would be editable with colors and effects, or possibly even adopt the colors of the chosen theme. The image link would call this composer service with all arguments passed in the link, so it would be ScribeScript enabled. This will allow for two things:
    1. Dynamic character portraits and locations based on qualities.
    2. The ability to already use a built-in picture library to create (placeholder) images, which can be styled to taste
  • Co-op Tools: When working with collaborators, it’s good to be able to see live what is being edited where. This might be a tricky one.
  • Profile Management (and password reset): This ties into the last one. If you are going to see who you are working alongside of, it might be nice for them to actually have a profile picture to stare at. In addition, because passwords in my database are encrypted (so, they can’t leak, and I can’t use anyone’s password either, because it’s an unrecognizable encypted string), I need to make sure a user can reset their password, otherwise there is NO recovery method right now.
  • Better Sysadmin Interface: Right now, when someone has a problem, I go into the database to check, which is super inconvenient. So this one is really just for me managing the platform.
  • Audio uploader: Since I now have that 20mb limit for free accounts, I feel comfortable allowing users to just upload sound files. Ligature was and still is a fun idea, but that’s still a feature incomplete tool for some use cases, and not necessarily a writer’s tool.
  • Community Sharing: That 20mb limit is for the early stages of this platform to remain manageable. To aid in this, and to build a local library of assets, I want to have a community library which people can share their uploaded assets on for other users to make use of.
  • Subscription for Donation: I don’t intend for this platform to be commercial, and I hate it when a free tool locks features behind a paywall. With the amount of optimisation and lossless image compression I’m already doing, the 20mb free limit goes surprisingly far and users are still free to link to other websites for assets which doesn’t cost any storage. Just to cover the costs of growing the platform, I intend to have a donation tier of users which would just be 4 euros a month of so, to help pay for the costs of maintaining the platform. In return, the 20mb upload cap is lifted.
  • Maybe - A platform-currency: Fallen London has FATE, StoryNexus had NEX. I am thinking of copying the Roblox model (back when it was not a commercial nightmare) with some kind of platform currency. The idea would be that if people play your game, you get that currency, and paying users also get some of it as a login or weekly bonus. It can also be bought. That could be spent on options in people’s games (much like FATE) or expanding your own storage space or something of the sort. The idea is for it not to be a commercial currency, but one that encourages people who are making cool things and who are supporting the platform. I DEFINITELY need input on this one, as I want a fair model which people feel doesn’t make the platform pay-to-play.
  • The actual audio player: I spent significant time building and bugfixing Ligature, and it’s still not wired up. I should actually make sure Ligature music and regular audio files can be triggered by the different story interfaces, regions and locations.
  • Connectivity sidebar: Just to help writers out, I already have the graph interface, but that requires switching between screens. Even I don’t necessarily enjoy using the graph. Instead, I intend to implement a sidebar to the right of the qualities, storylets and opportunities creator interfaces, which list what that asset is connected to in what way.
  • The Chronicler: Taken directly from this thread, I am still intending to put this in as a feature which records the playthrough of a character. Not with verbatim text (as that could get storage heavy) but definitely by linking up the chosen options, storylets and opportunities. I will probably store pretty much all choices, and in the Chronicler view allow the user to toggle what should and what shouldn’t be included in the final transcript.
  • Social Features: Being able to message and affect other characters in a game. One of those really neat features that used to be in StoryNexus and is in Fallen London. It should be versatile enough to allow for cross-game quality changes.
  • Legal: Honestly, I’ll have to properly sit down for this sometime. Just boilerplate stuff. It’s a basic necessity.

Anyway, I hope to hear what you all think, and whether you can think of anything more!

Edit: Since I had the graph logic working in the backend anyway, I already wired up the connections sidebar, which shows you what different qualities, storylets and cards connect to, with the ability to click on them to be redirected to that page. I figured it would make writing QBN style narratives a little easier.


Also, my own little project is beginning to come together:

1 Like

Speaking personally, my highest priorities would be:

  • Account management and password resetting
  • Some way of exporting a playable, archivable game, so that everything won’t be lost if this platform eventually meets the same fate as AXMA and StoryNexus
  • Transcripting

StoryNexus made do with a fairly small library of card and quality art shared between all games, so custom image and sound tools are less important to me; if I’m making custom assets, I would probably do it offline anyway, with tools I’m more familiar with. (I’m a fan of the Unix tool philosophy: make each tool do one thing, and make it easy to take the output of one tool and put it into another.)

2 Likes

Alright, that sounds fair. I already have the export functionality, but this will need an update due to new features having been added.

This means I will likely need to build some kind of docker application, or possibly just make the code open source. Though that would lock usage behind anyone technical enough to deploy it themselves.

Account management really should be taken care of, yes. And it’s good to know transcripting is a higher priority for multiple people, so I’ll bump it up the proverbial list.

Ah, if the exporting is finished, then that’s great! I haven’t done much more than read the docs at the moment.

Oh, don’t worry about this; I’m the same one who requested it initially! It might just be me.

Hah, that’s entirely fair. At this stage I do warn people about coming onto the platform, since things do shift around a lot right now. But yes, it’s one of the earliest things I finished, because I feel it’s extremely important to be able to preserve media.


It also helped me with playtesting, by sharing online versions of my WIP games with my local build to fix bugs.

I mean, it really is a neat feature, and I’m finally beginning to form a decent idea of how to do it. For data efficiency purposes, I am strongly considering building the downloadable “Chronicle” out of links to the storylets and options, since this would allow a user to more easily toggle events off and on, and allow them to decide just how important every single choice they made is to them. But, it does mean that if the game gets updated in the background, and you haven’t downloaded your character’s chronicle, things might actually change about their story, unless I also tackle version control somehow. Definitely a few questions I need to answer there.

2 Likes

I’ve been watching this thread and the new game engine with a lot of interest. It looks like the kind of thing that would be really fun to use.

I want to boost the earlier posts by Draconis; I don’t really care about social features or a platform currency, but independent export is hugely important to me, and I’m reluctant to use any platform that doesn’t allow exporting independent files. I’ve seen enough horror stories about people losing all their work that if the software doesn’t let me keep a version of what I make on my own website, an independent version of the game that would work even if the main site and main servers go down permanently, I’ll avoid creating any big projects using that software.

How does the exporting feature work right now? I’m technically inclined and wouldn’t mind having to do fancy stuff to get an expert running, but I’m averse to anything that requires me to get my own server to interact with the client side, because those files are much harder if not impossible to just slap into a static site, like what you get with Neocities hosting, and make available to all. But even an export feature that requires a server is better than having no independent export at all.

3 Likes

I’m glad you asked!

Right now, everything in the game is stored in JSON files in a MongoDB database (with backups in a bucket elsewhere). What the exporter does is basically just pull all the data tied to the game from the database, and copies it over with database IDs removed, so it can be safely reimported elsewhere.

This, at the very least, guarantees the data can at least be pulled, and reimported. I am strongly considering a game system export alongside it, but for that, I still need to ensure my current system is stable, before I end up making edits in two systems at once, or in some way have the ability to construct a desktop app straight from the source code so I don’t have to support two extremely similar systems simultaneously.

2 Likes

Makes sense, thanks. I’ve used MongoDB before so I can definitely work with that. A game system export would be ideal, but I agree that since you’re still working on stability it wouldn’t make sense to get too hasty with it. I’ll follow progress regardless, and look forward to the game system export.

1 Like

There we go, addressed a number of small issues that had been lingering about.

There should be a functional reset-password route set up, and some basic account management (though I admittedly still need to properly test it with a test account).

There was an issue with conditional strings such as the visible_if, unlock_if and autofire not properly parsing comma seperated commands, and there was also some other stuff.

Ended up fixing a bunch of tiny things about front-end display stuff, and made sure you can fold in the Selection Sidebar in the Creator Studio, since it sometimes feels like it’s in the way.

Also, I got a little silly, and decided to treat myself to a new base theme.

And before you ask, yes, I like Dwarf Fortress.

Edit: I may just be having WAY too much fun with themes:

Edit2: Waaaay too much fun

Found Footage:

Deep Space:

Infernum:

3 Likes

I gave it some serious thought, and decided I will clean up the project a bit and just make it open-source. There’s no downsides I can think of other than being embarrassed about certain code. That should guarantee longevity.

6 Likes

Thank you, this is wonderful to hear and I’m always happy to see more open source projects. I’ll look at it myself once I get the chance.

1 Like

I’d like to follow up about export function. if there is export, can an exported game be re-imported?

1 Like

YES that’s awesome

3 Likes

It is done. I made sure to completely clean up the repo (and hide any exposed in-line security-risks by wiping the history). My comments were a mess, so I just blanket removed everything to have a fresh start, and will be working to actually put in useful comments from now on.

Everyone, the open-source repo. I hope that proves my commitment to making this the best tool I can. Have a go, and if you find anything that looks weird, please let me know! It’s good to have multiple sets of eyeballs on this for better security and efficiency.

Also, absolutely. I’ve already been doing it a lot! Though, I do need to update some of the mapping logic, as I’ve been tinkering on the data models, and I’m noticing some exports and imports are increasingly incomplete.

11 Likes

Fantastic! I’m not TypeScript-savvy enough to run this myself, but knowing that someone else could set up a host if the original website went down is still a very good reassurance. I’d still like some way to download a playable game, if possible, but I understand that’s probably a lot of work, and this addresses my biggest concerns already.

1 Like

I have been looking at options, and apparently there’s some frameworks which offer ways to make web apps like this exportable to native apps. It’s not a top priority for me yet, but definitely something I’m looking into. At least this should make sure the project doesn’t rely on my whims (alone) to survive.

1 Like

Exactly! The number-one thing that makes me hesitant to get into a new system is the prospect of all my work disappearing forever; now, even if a meteor struck, someone could set up their own server, or it could be transferred to the IFTF, and so on.

1 Like