I’m not really sure how much demand there will be for this, but I am working out an XML file format specification for CYOA-style interactive novels, and plan on developing a number of tools for authoring and reading them (probably focusing on mobile apps and Kindle support for reading, initially).
I’ve been an IF-lurker for quite some time, and have great respect for the community that has been built around the hobby. As such, I am interested in any feedback or suggestions anyone here might have. I’ve roughed up a brief page describing the file format and its goals/limitations here: http://inml.rudism.com/.
I know that there’s been some controversy around whether or not CYOA even counts as IF in the past. My primary reason for considering this as a free-time project is that, while I do enjoy classic parser-based IF, I yearn for IF that’s a little less cerebral that can be comfortably read on an eReader or mobile phone without having to deal with typing on tiny thumb or on-screen keyboards. I feel that CYOA-style stories with simple hyperlinking would lend themselves very nicely to that purpose, and have been unable to find any existing system or tools geared specifically towards publishing those in a way that would provide maximum portability between platforms.
I did stumble across http://ifml.sourceforge.net/ during my googlings, which seems similar to what I would like to achieve, only on a grander scale (defining parser-based IF in XML). It also appears to be abandoned, which I feel is a shame.
Anyway, like I said, this idea is still just forming in my mind and I’m looking for feedback from the IF community (even if it’s that I’m crazy and this is a waste of time).
While I have a gut aversion to writing/editing XML, lately I’ve come around to the idea of structured content – so with a good front-end writing tool (or even just an XML editor of course) I could see how writing works for INML would be cool.
Anyway, just my 2 c., take it for what it’s worth.
You don’t want to go down that road. Computer languages always copy ideas, and even syntax, from each other. It’s a good thing. That’s why Inform 6 looks a lot like C, and Hugo looks a lot like Inform 6, and so on.
Furthermore, if two people are trying to solve the same problem, they’re likely to invent similar solutions even if they never see each other’s work.
Legally, copyright applies to a manual or reference document that you write – but not to the structure of what you’re documenting. You could patent your language’s structure, but I wouldn’t recommend that either.
(Note: I am not a lawyer. I am, however, a programmer.)
I’m having trouble imagining any COYA script language that would not be structurally similar to the two above examples. You are not the inventor of the concept of hyper-linking, and the syntax isn’t even remotely similar. There is no copyright violation.
You know, I really wish you had stumbled upon someone like yourself when you started your work on NodeScript. You’d be starting your own project, and someone else would come along and say “Hey, besides the fact that your language looks suspiciously like mine, mine can do all the things your thingy can do, and much more besides, and it’s innovative, and in fact it’s the best thing next to sliced bread”. I really wish that had happened.
I wouldn’t perceive INML as a competitor to NodeScript, but rather a storage medium and (ideally) a suite of user-friendly authoring tools for simple CYOA-style stories which could easily be transformed into NodeScript format (or Inform, or TADS, or ) if desired.
Looks a lot like an INI file to me. The basic structure of choices and linking scenes to each other by ID is, as others have said, pretty much inherent in the problem that both formats were invented to solve.
One difference between INML and yours is that INML doesn’t have blocks consisting of nothing but opaque IDs: the choices are part of the scenes, everything is described in complete words, and IDs are only used to link to scenes. That makes it more readable, in my opinion. For example, I have no idea what “EC”, “NJ”, “PN”, “NC”, and “DN” stand for, although I can guess at the others; the INML version is self-explanatory. But maybe that’s not a big deal if the NodeScript file is meant to be edited with a customized program (is it?).
Well, technically yes, since it is a text file. But if you expect people to use a text editor, I encourage you to reconsider some of the cryptic syntax. As it is, it seems more like an intermediate format that humans shouldn’t view or edit except in an emergency.
I have started working on an authoring tool to read and save stories in INML format, and have already come across a few deficiencies in the initial specification (for anyone who is interested in following my progress):
Since a Scene’s id attribute is defined as an XML ID in the DTD, it must conform to certain rules (essentially it must be a valid XML node descriptor) which is not very friendly to human authors (more prone to auto-generation by authoring tools). Because of this, I’ve added a “name” attribute to Scene elements which would be a human-friendly short description of the scene. This value would never actually be displayed to a reader of the story, but would rather be used by authoring tools to allow the author to label scenes.
I’ve also decided to disallow HTML formatting for Prompt and Choice elements (only for Description elements). My main reasoning behind this is that the Choices are essentially hyperlinks, so allowing the author to place his own conflicting hyperlinks and other HTML elements in the choice option could pose problems when rendering them to a reader.
Another thing I am currently considering is a way to allow the author to specify page breaks within a Scene Description while keeping away from the added complexity of multiple Description elements within a scene. My first thought is some kind of control character or string like \p or \clear, but I don’t particularly like that very much either. Anyone have any thoughts on how that could be achieved elegantly?
–edit: I actually came up with an idea I like better, which is to allow a element in the Meta section, where the author/authoring program could specify its own escape or character sequence that represents page breaks within the Description elements, thus allowing for page breaks while shifting the onus of coming up with a viable system to include them out of the specification itself.
Well, the spec now supports page breaks, while leaving implementation details (ie, how to represent a pagebreak in the content) up to the individual story. I think flexibility is better than defining a standard in this situation, since picking some arbitrary universal way to represent a pagebreak (for example “***”) could interfere with an author’s content (in this example, if they wanted to use the string “***” in their story without representing a pagebreak). This way, they can specify their own pagebreak string and guarantee that there won’t be parts of the story that will be incorrectly interpreted.