Hey everyone,
Over the past weeks I have been hard at work developing ChronicleHub. There was a lot of bug fixing, extremely valuable feedback and some poking at the system left and right.
The platform has a DSL called “ScribeScript”, which evolved out of a shorthand parser language I made up when I was only using Google Sheets to write storylets for a now abandoned project, and which informed my design of the current data model.
Now ScribeScript has evolved to be increasingly powerful, allowing it both to handle basic text substitution like this:
A manila folder sat on my desk. It had been dropped there by the lieutenant while I was acquainting myself with my morning coffee.
_"Another murder, {$last_name},..."_ he told me when I asked what surprise he had for me _"...just your thing."_
It looked at me. Pictures and reports were already poking out on all sides.
And more complex operations that define game mechanics like this:
{@drunk = {%pick[involved; 1, $.secret == drunk_backing]} },
{ @drunk != nothing :
{@villain = {%pick[involved; 1, {$.secret.implicated} == 1]} },
{ @villain != nothing : {${@drunk}.role} = {${@villain}.role} | {${@drunk}.role} = {%pick[role_definitions; 1, $. < 1]} }
},
However, I have a programmer’s mindset in addition to a creative writer’s one. Code like this makes complete sense to me, but I might be blind to how well the language works for other people.
The other day, someone asked about a bug and why an effect did not apply to a variable. Turns out they had used $variable == 1, in the effects string, rather than $variable = 1,
In most programming languages I know, == is used for comparison and = for assignment. But that might not be obvious to everyone. In fact, even I make that mistake when I’m not paying attention.
Because of this I am considering whether to include something like natural language syntax, so you get operations like $variable becomes 1, or { $variable equals 1 : Conditional Text }
I would really appreciate people’s ideas and what would help them or make the language more convenient to use. I would love to hear your thoughts!



