Yeah, I am much more in the camp where I think it’s valuable to supply something that needs as little purpose-built tooling as possible, including working with whatever text editor a user prefers. This comes from me personally disliking both VS Code and purpose-built IDEs, which most narrative scripting tools have standardized on these days; I want to be able to use Vim, and I want other people who prefer, say, Helix to also have a good experience.
So it’s important that to me that you’d be able to write a syntax-highlighting parser for the language from scratch without tearing your hair out; it has value to be able to ship a tree-sitter parser alongside the “real” language tooling; and it’s important that you not rely on highlighting to spot places where the parser might miss a tricky disambiguation.
What I’m toying with new though is a syntax where storylet, from, branch, and quality declarations allow a “barestring” title, similar to YAML, which is terminated by a newline:
quality grue_risk: Risk Of Being Eaten By A Grue
They also allow double-colon syntax to go right into a multiline body:
storylet start::
I'm in danger of being eaten by a grue.
If only I hadn't sold my lantern...
--- // A terminator is still required.
Ending a title template string with :\n creates a body:
storylet start: Gruesville:
I'm in danger of being eaten by a grue.
---
It’s also possible to say that this colon always represents a single-line title then a body, thus getting rid of the second colon:
storylet start: Gruesville
I'm in danger of being eaten by a grue.
---
But then any entity without a body would have to use a quote. This may be a reasonable compromise.
branch "Run away!"
// No body here
Trying to automagically determine whether the next line is body text or not might work if (like in loreline) there was a strict, small set of possible tokens that the next line would start with. But that would just be moving the delimitation problem. Right now (in this colon syntax) you can write:
storylet start: Beginner Forest:
Wow, it's like the starter area of an RPG!
---
image: "beginning.jpg"
initiation!
orb_frotzed = true
yak_shorn = true
spline_reticulated = true
Which is to say, a line of “code” can start with an arbitrary identifier and can look like basically anything. Whereas if we wanted to make loreline-style lexing reasonable, it’d have to be:
storylet start: Beginner Forest
Wow, it's like the starter area of an RPG!
data
image: "beginning.jpg"
effects
initiation!
orb_frotzed = true
yak_shorn = true
spline_reticulated = true
Which I don’t really think is a huge win in terms of conciseness, readability, or typing less.