ChronicleHub: a QBN engine like StoryNexus

While my intent was never to build an integrated DAW… It seems I couldn’t help myself. It’s still not entirely finished, but it’s getting there. I’m already having a much easier time composing music in it myself, though it still lacks some necessary polish and responsiveness. @FLACRabbit, I would genuinely appreciate your opinion on this.

1 Like

I love the idea of being able to create your own midi music and UI sound effects. I have a wee bit of experience with midi and Ligature looks great for people used to working with sequencers possibly. Randozart said that it is or is will be possible to upload or import a .mid into Ligature or directly into the game which sounds a little easier. I’ve created midi files with GarageBand so that would be a better solution for me.

Also in discussions about music one of the concerns about sound is storage space for potentially large music files like .mp3 or other audio recordings. Midi is tiny like text files but I’d always hope to upload actual music, possibly as a premium feature depending on how the project shakes out.

I’m considering just allowing .it files and .mid files door free, as those files are really very compact and I can easily build specific music players for them (I already built converters for them!). Another free option I’m absolutely willing to consider is allowing a user to put in a hyperlink to an audio source hosted elsewhere.

Regarding actual storage, my plan is now this: I have no profit incentive with this project, so I’m considering a free Scribe tier, and a paid Illuminator tier for 4 euros a month or some cheap price like that, just to help pay for the rented storage costs. That then allows for uploading actual images and audio files. Since I intend to have a community library, anyone can share their uploaded assets with each other.

Since AI is very likely to be used in situations like this (even I use it for prototyping quickly on occasion), I will likely also put in an AI disclaimer checkbox for assets and stories. This is the fairest model I can think of.

Edit: I was reading into midi further, and did not actually realise ABC notation is a thing. I feel just a bit silly, since Ligature definitely shares features with ABC notation :joy:

Either way, I may wish to consider being able to directly insert other notation types into the DAW.

2 Likes

I just did a major refactor of the front-end, to make sure it now actually displays correctly on mobile phone. Since ScribeScript is now increasingly becoming complex and even I am running into with issues by stretching the capabilities of the parser, I made sure to add a stack/result trace to any ScribeScript enabled field. I did a lot of updating. Just to test my own engine, I am making sure to build a game of my own to really stress test what it can do, and otherwise make sure the engine is updated to support any ideas I might have.

Again, I am still actively developing all of this. I gave asset uploading serious thought, and made it so anyone can now at least upload 20mb of assets. Images are automatically converted to .webp, so they are very efficiently stored. My intent is now to likely also allow sound files as has been requested, given that the upload limit is not reached. I will try to make sure that sound files are efficiently processed to really stretch that limit, and once I have a “supporter” tier in place, I can look into how viable it is to increase that limit for supporters and for everyone.

Since I was refactoring my main .css file into more manageable files anyway, and making sure my front-end actually worked with mobile, I have been find-replacing any hard coded hexcodes, and made sure they referer back to the main theme file. Because of this, I was now able to implement a light theme. Note that I still haven’t been able to pick out all hard-coded styles, but this should help you out at least for now. I do fully intend to find and replace those last holdouts, but this was already quite the task.

4 Likes

Today I refactored the front end further to be more functional with mobile and light mode. The folly of hard coding all my colour values and aggressive use of find and replace has resulted in 55 changed files.

However, the Detective Noir theme looks super cool on mobile now.

2 Likes

I appreciate you going to the effort of implementing a light mode even though your original setup makes it complicated!

2 Likes

I’m happy I was able to do it! Honestly, I should have been more mindful of this when I started the project, and in many places I was, but especially with the documentation and some components that requiresd additional colors to communicate their information, I played a little too fast and loose.

The good thing is, I can now very easily add color schemes, which I think I just might. The refactored dark mode was designed to be more in line with the documentation and Ligature editor as I had those colors strictly defined, but I realised I might not like it quite as much for the main editor, so I’m adding a soft light and soft dark theme as well. Should be a boon for accessibility.

@HanonO also came with several good pointers about accessibility and workflow, so I hope to tackle those next. It really shed light on the fact that my original mental model was based on my original Google Sheets based editor, which had me really design around what I needed for my basic parser to work.

Edit: I have since implemented the fixes I discussed with Hanon. I may have also gone overboard with the light and dark themes.

We now have Light, Dark, Soft Light, Soft Dark, Classic and Classic Light

Oops.

On that note, I feel “Classic” is a nice homage:

3 Likes

Can you please publish at least one game? I want an example of how games are supposed to be made. Also black crown looks like actually StoryNexus and I’m trying to remake that look but I can’t find a theme that does that so it looks like black crown.

One feature request while this is in active development: I’ve been enjoying the recent lets-plays of StoryNexus games (1, 2), but it sounds like the players are going to great pains with third-party tools to get usable transcripts to share. Could ChronicleHub have a transcripting feature built-in, that would let you view (and copy as plain text or Markdown) everything you’ve done in the current session?

2 Likes

I’ve been helping work on a version of Cloak of Darkness as a demo, and having me blunder around in the system has been knocking bugs loose which is good. Randozart is doing a great job; he’s actually developing his own complicated-looking project and at the same time troubleshooting the engine. As a primary Storynexus-lamenter I’m excited about its possibilities.

4 Likes

Seeing as I made the silly decision to actually call the platform “ChronicleHub”, it would be very inappropriate of me if you wouldn’t be able to compile a Chronicle at the end of it, wouldn’t it?

I am willing to look into this, could you share what sort of features you expect to be in there? I’ll need to look into feasibility, as this would require putting logging on pretty much all story actions.

Yeah, I mentioned this to @HanonO in a private message. I went so overboard with customising Black Crown’s theme that I never properly made those same layout choices available as a general layout. I will look into actually making that StoryNexus-like layout generally available. I’ll need to unpack some .css for that.

Speaking of, I was considering allowing a creator to mark their world as “Open-Source” so other creators can peek inside and download the JSON for it. Would that be a valuable feature?

3 Likes

I think something like this (the first post in the thread is a great example on its own) would be ideal; I haven’t gone past a few cursory clicks in StoryNexus proper, but this transcript shows the card text; the available options; which of those options was selected; and then where that leads. It also shows the card icon, which is neat but less important. It doesn’t show which other cards are available at any given time; that might be cool if it’s possible, but likewise isn’t as important (to me as a reader). The lets-play-er just posts which cards are in their hand any time they want to ask for audience input.

2 Likes

I’ll need to give this some serious thought, as it would require me to consider the logging architecture for it. I’ll put it on the list!

2 Likes

I should mention how incredibly grateful I am for co-operating with me on this. I had not even considered half the bugs that came out of this, and it really takes away the strain from both developing a platform and building a game at the same time.

1 Like

Okay, after writing that message I had breakfast, some coffee and figured “Actually, what am I saying, this is just a .CSS fix and a toggle in the settings menu”

So anyway, here’s the Classic layout with the “Center Layout” toggle enabled on my current local build.

To make it look like classic StoryNexus, it would use the Classic Layout, the Center Layout toggle, and the Wide Image banner. Ta-dah.

I’ll see if I can actually refactor my current “Paranoid Archive” theme I custom-made for Black Crown to be compatible with other themes now that I did this.

Currently fiddling around with it to make sure it looks good with every theme:


UPDATE:
Okay, I think I got it working. Paranoid Archive as a compatible theme for all layouts, and the ability to move the tabs to the sidebar, StoryNexus style


3 Likes

Basic logging might be able to be pretty simple: Dendry, for instance, just has a hook to log the page when it’s displayed and the choices when they’re displayed, and I’ve done similarly with Ink… in some cases just cloning a whole chunk of the document. or grabbing the innerHTML and sticking it into an array and saving it to localStorage…

2 Likes

Basic logging, yes. I even have an actual logger set up within story screens so a world creator can evaluate how the parser resolved pieces of ScribeScript, and adjust accordingly.

It’s more a question of how much I want to capture, where in the code would be the neatest place to do it, and whether I really just want to search and store inner text, or be a little smarter about it. I could probably tie it into my main display class, but I feel like I can do a better job than that, logging purchases, travelling, and other choices the user makes.

3 Likes

You still need to fix location movement. You cannot move right now; clicking a location does nothing. Also map regions still don’t save, by the way.

Absolutely. Sat down for that yesterday, but for some reason the API is giving the data back wrong. I’ll look into it today, most likely and hope I find something

Update: I think it’s fixed now. That was a buggy mess and a half with React components doing weird things between each other. That was not fun to figure out :sweat_smile: