Ah, the sort of translator I’m envisioning would probably have to work on an entire story at once, and would probably require significant manual adjustment afterward to get a good result. There’s just too much different about the underlying choice model. (Ink doesn’t have a stats page you can visit at any time, for example.)
But if you wrote a full novel in CS and wanted to turn it into Ink, a translator would be less work than rewriting the whole thing, and also less coding effort than an entire new implementation of CS, even leaving aside the legal and ethical concerns!
Yeah, inklewriter is basically a completely separate thing from Ink. Learning Ink shouldn’t be substantially different from learning ChoiceScript, it’s still explicitly designed to be writer-friendly.
That’s exactly my opinion. There’s accessibility checkers and everything (you could even test that automatically), so there’s no reason to not give authors a bit more control. E.g. default to a very accessible theme and give the player the option to switch to a author-provided theme at the start and switch back after 10 seconds if not confirmed (e.g. because the button wasn’t readable).
IIRC CoG only gets the ChoiceScript code and builds the game from that. If you’re writing an official CoG or CoH story you could probably talk to them, but I don’t thing they’d do that for any normal hosted game.
That’s kind of what my goal is: Not really running CS directly, but translating it into an intermediate format that can be run (or further transpiled to JS).
Those are pretty much my reasons. CS is much more readable, and I have a very short wishlist of features I’d like (proper custom functions (return value without using a variable), Maps and some more operations).
My vision is essentially a choice-based IF polyglot: Interweave Twine, CS, Ink and custom HTML, CSS and JS. With features like variables shared between the languages, jumping e.g. from CS to a Twine passage, etc.
I’d probably not write a commercial game myself, but my implementation would be under a license that allows commercial use (like most open-source licenses).
If you’re writing for Hosted Games, you submit the choicescript code in text files, along with any art and sound files. If you made any modifications to the choicescript engine, that doesn’t get submitted. Of course, you are allowed to ‘talk to them’ about non-standard CS modifications even if you’re submitting a Hosted Game, but there’s no guarantee that those will be accepted.
I’m unsure if Dan’s posts are borderline with “legal threats”, but the point is that IMVHO everyone is free to share and free to monetize (the latter, IMRVHO, under certain limits) but IMO this should not be a divisive argument.
I give a quick glance to the language in question; as every other, has his strenght and his weakness, and its monetisation don’t detract from its strenght nor add to its weakness, so is a moot point for me.
said that, I think that restricting color choices (and the example of color-coded dialogue) for easing the work of screenreader is a non-issue relative to a major oversight of screen readers: is not difficult ID a color tag in a text, and assigning a voice to that tag (the major complication is assigning the right voice to that colour…) giving a much better screen reader performance (I’m deaf, and often I’m annoyed with monochrome subs during a frantic, confused sequence…)
Does anyone know a large repository of open-source ChoiceScript code? I want to start writing a CS → Ink transpiler soon, and I need something to test if everything works. I could extract the CS code from the CoG games I own, but that would probably be copyright infringement.
In the meantime, I’m starting a new project in CS to test the transpiler on in the future.
Much depends on how flexible you are with the idea of “open source.”
If you literally mean “ChoiceScript code under an OSI-approved license,” I think there is barely any of that at all.
If you mean “ChoiceScript code that you can access for free,” almost all CS games are distributed in a source-visible format. You can find a bunch of games on https://dashingdon.com/ or https://cogdemos.ink/
There are also a few dozen games available on IF Archive.
MariaDB [ifdb]> select distinct gameid, games.title from gamelinks join games on gameid = games.id join gameRatingsSandbox0_mv using (gameid) where system = 'ChoiceScript' and url like '%ifarchive%' order by starsort desc;
+------------------+----------------------------------+
| gameid | title |
+------------------+----------------------------------+
| pp79m7ef4ekwa60r | Turandot |
| 8l9cdcd1tbt77hfl | Creatures Such As We |
| a356zty8o5z4n0nb | Fine Felines |
| 1wa2dix13z15iy9o | A Paradox Between Worlds |
| 71v4hzsaxrggvl5e | At King Arthur's Christmas Feast |
| d9j9qyq6zfka25zg | Each-uisge |
| ymgcw4550xf2n6ww | Writers Are Not Strangers |
| mjrfgtniludeocso | Blood Island |
| xbvy1mgu6o3sgi26 | Scarlet Sails |
| omoe3fglijlnri13 | The Little Lifeform That Could |
| hek31xja8x86bjby | One Does Not Simply Fry |
| yub4q7zczoiab4be | Poetry and Passion |
| 7u7j73zzvq0jd7t7 | ~~~Into Darkness~~~ |
| pz8epxykg2b6se4d | Paradox Corps |
| ia9ot4pxpom3dm36 | Walker's Rift |
| y7i3ur3tg1bib2k1 | Home/Sick |
| socsiyuuyfnj9p | Dragon of Steelthorne |
| 5p9pvprahqa1u4oi | Ink and Intrigue |
| w5w2yc42l3jv5tv1 | One Knight Stand |
| 30avm9ouvb82lwjz | The Price |
| clevathyjglvccsm | Not Another Hero |
| f9alqv6dbelvznkf | Help! I Can't Find My Glasses! |
| 2z9tyydlvi52vkg3 | Resonance |
| tavsi1xg32e71l7r | Wasteland |
| 56y7utuhqmfhlz53 | Off the Podium — One Last Lap |
| t5iz064c4tqtjqjy | Temporal Thief |
| 2zlhubwjf10lrm51 | Exile |
| xbntsm12bh2qwfim | Gargoyle |
| c3uzaz9tu3ggd00d | YARRY |
| m7wlzhh89mtkypfc | Spermson |
| 9a8zx4abf1by49aw | Sweet & Savory |
| fomqj9rqg4ob5kw | Werewolves Rising |
+------------------+----------------------------------+
You could feed these into a translator and test them out there, but I don’t think you could host them online and redistribute them yourself without the authors’ permission.
I mean “code I can test the translator with without getting in legal trouble”. I don’t want to redistribute it, but I have to ensure I get all behavior correct with different authoring styles and such.
Testing your code with CS code that you acquire legally is fine, as long as you don’t redistribute any CS JS (or any derivative work) or anyone’s CS code without the author’s permission.