Third-party ChoiceScript plugins under the CSL

CHOICESCRIPT LICENSE (CSL) v1.0
Non-commercial usage and modification of the works is permitted
provided that (1) the ChoiceScript license is retained with the works,
so that any entity that uses the works is notified of this license,
and (2) the user grants at no charge an unrestricted, transferrable,
non-exclusive license to Dan Fabulich and Adam Morse for any
modifications, if any, made to the ChoiceScript interpreter.
The user
may not use the ChoiceScript interpreter or code written for use with
the ChoiceScript interpreter for any commercial purposes, including
sales of complete applications, use of the code to generate
advertising revenue, or any other commercial purpose. If you are
interested in a commercial license, please contact
support@choiceofgames.com.

I’m currently sitting on an audio plugin for ChoiceScript which I don’t feel comfortable releasing due to the CSL.

With the audio plugin I’ve created, you are able to pause, mute, stop, adjust volume, and crossfade. It’s a framework like CJW’s Save Manager Plugin; it adds extra commands to ChoiceScript for game developers to use. But unlike the Save Manager Plugin, which emulates a feature commercial ChoiceScript games already have, my audio plugin could add value to commercial ChoiceScript games. And because of the CSL, I wouldn’t see a cent.

This isn’t a hypothetical. Here’s some of my code (not fully tested):

Declaring commands
...
Scene.validCommands.se_fade_out = 1;
Scene.validCommands.se_pause = 1;
Scene.validCommands.se_unpause = 1;
Scene.validCommands.se_stop = 1;
Scene.validCommands.se_stop_all = 1;
...
Enhanced sound command
Scene.prototype.se_sound = function startSound(input){
  var input_array = input.split(" ");
  var name = input_array[0];
  var id = input_array[1];
  var loop = input_array[2];
  var volume = input_array[3];
  var exists = document.getElementById(id);
  if (name.indexOf("http") != 0) {
    var loc = window.location.href
    loc = loc.slice(0, -17);
    loc = loc + "audio/" + name;
  }
  else {
    var loc = name;
  }
  if (volume > 0 && volume <= 1) {
    var finalVolume = volume
  }
  else {
  ...
Fades
Scene.prototype.se_fade_in = function fadeInPV(input, startVolume, desiredVolume, crossfadeSpeed){
  var input_array = input.split(" ");
  var id = input_array[0];
  var volume = input_array[1];
  var audio = document.getElementById(id);
  if (startVolume == null) {
    var startVolume = audio.volume;
    if (volume > 0 && volume <= 1) {
      var desiredVolume = volume
    }
    ...

I won’t be sharing my entire plugin here. From a non-lawyer’s reading of the CSL, I have a legal obligation to share my code to Dan Fabulich and Adam Morse. However, they would need to enforce that claim somehow, which means expensive lawyers. As far as I’m aware, I wouldn’t be liable for any damages by withholding my code until forced by a court. So I will.

ChoiceScript developers give Choice of Games LLC a portion of their game’s proceeds because, presumably, Choice of Games LLC had a hand in creating and selling their games. If my plugin was used in a commercial ChoiceScript game, then I too would have had a hand in creating that game, yet I wouldn’t get anything.

For me, the best move would be to negotiate a commercial license for my plugin from Choice of Games LLC. I have no idea how to do that. Even if Choice of Games LLC is interested in my plugin - which they very well might not - then they could just send lawyers after me if my asking price is too high.

In other words, the CSL has stripped me of any leverage I could use in negotiation, besides refusing to comply entirely. Thus, it’s in my best interest to be spiteful.

I really don’t want to do this. I want to release my plugin under a Creative Commons Noncommercial-Attribution license, which would allow independent ChoiceScript developers to freely use my plugin while ensuring I’m justly compensated.

But it isn’t about me. If I hold out for cash. then all the other ChoiceScript developers out there wouldn’t have access to my plugin. I wouldn’t want to deprive them of that. That said, most people like getting paid. I wonder how many other developers have experimented with ChoiceScript plugins while making their own games. Or rather, how many would have experimented if they were properly compensated.

For the record, I’m not using this post as a negotiating chip. Regardless of whether I get paid, I’m still planning to release my plugin as soon as I’ve finished testing. However, I do want a discussion on the CSL and it’s effects. I sincerely everyone involved would be better off with a less restrictive license agreement. Programmers would have a incentive to create plugins, game developers would have more extra functionality in the games, and Choice of Games LLC would have better products. As it is right now, all progress on the ChoiceScript language will come from the company itself. And while I can only guess, I doubt Choice of Games LLC has more than a handful of people working for them. They aren’t exactly AAA.

Again, mad respect for ChoiceScript. If I didn’t care about the language, I wouldn’t be here today. I only raise my own concerns as an example, to show what ChoiceScript could get with a less restrictive license. If anyone ever pays me for my audio plugin, or if I don’t release it within a week, please punch me in the face. I’d rather have a better CSL than a quick payday.

Sorry if this isn’t the place, though I don’t know where else I could raise this issue to those affected. And thank you for your time.

1 Like

Oh boy, this is a topic… Let’s see…

  • ChoiceScript is CoG’s IP. Despite its source being openly visible to the public, it is not open source software. This is admittedly quite an abnormal approach and can be more than a little confusing. I can forgive any and all misconceptions here, but the fact of the matter is that we should probably treat CS (in a legal manner) as if it were a closed source game engine (ala, Unity, Unreal).

  • Fairness. This works both ways. CoG has to protect their rights as well. If CoG started opening up CS to each and every other contributor, they would, as you discuss, begin to want some sort of recognition (be that money, influence or simple credit). This unavoidably complicates CoG’s position with future use and development. Who’s code does it become? Who needs permission to make changes to what parts? Who’s responsible for parts that break (are you going to maintain/update your contributions)?

  • Quality and value. Is your plugin actually worth what you think it is? How many people want sound? Do CoG want sound? How good is your code? You say it isn’t tested, even if it is, what happens when it breaks a game and loses CoG revenue/gains them bad reviews? Who is responsible?


I don’t outright disagree with your stance. I just want to highlight that this is an extremely complicated issue that isn’t anywhere near as simple to fix as it might sound. I agree, it would be great if more people could contribute to the language: fix bugs faster, write plugins and generally build up an ecosystem around it. Think twine or ren’py, and all the wonderful things people have done to extend and improve them. Communities can add a lot of value in that fashion, kgold’s addition to CS is a very good example. I myself helped with the compile.html some years ago (and had to sign a contract in order to do so!).

I think perhaps it would be best to look at that part of the contract as CoG simply playing it safe. I highly doubt it’s been added just so that they can immediately swoop in and profit off other people’s hard work. For example, let’s say you did write a valuable extension that they had also had planned and yet you were being unreasonable about them using your version, could they legally roll their own, or are they now infringing on your copyright… Just because you came with up the idea first? With this clause they protect themselves from that sort of ambiguity. Does that make sense?

5 Likes

@CJW

cake

1 Like

I’m not entirely sure it’s complicated as you claim. I’ll go through your bulletpoints one by one.

I’m fully aware ChoiceScript is CoG’s IP. I’m not suggesting ChoiceScript should be open-source, or revoke all of their legal rights. However, they can make it opener. While they legally have the right to do whatever they want with their IP, that doesn’t mean they should. By discouraging community contributions, they discourage people from contributing.

I don’t think CoG needs to open themselves up to every contributor. How about this?

Non-commercial usage and modification of the works is permitted
provided that (1) the ChoiceScript license is retained with the works,
so that any entity that uses the works is notified of this license,
and (2) the user grants at no charge an unrestricted, transferrable,
non-exclusive license to Dan Fabulich and Adam Morse for any
modifications, if any, made to the ChoiceScript interpreter.
The user
may not use the ChoiceScript interpreter or code written for use with
the ChoiceScript interpreter for any commercial purposes, including
sales of complete applications, use of the code to generate
advertising revenue, or any other commercial purpose. If you are
interested in a commercial license, please contact
support@choiceofgames.com.

This encourages contributors to publish their work noncommercially, but gives CoG the freedom to selectively choose contributions. Contributors would be able to distribute changes to the ChoiceScript master files amongst equally noncommercial authors. CoG could see which plugins are most popular and selectively negotiate based on each individual case. For instance, if they think a plugin would need maintenance, they could contract the contributor to provide maintenance for x amount of time. Or it could be a full transfer of rights in exchange for a one-time payment. This gives CoG legal flexibility without preventing noncommercial use.

Just to clarify: I HAVE NOTHING OF VALUE. I’m an amateur self-taught programmer with the coding quality of a used tampon. I only bring myself up to show what could be possible by people better than me.

But let’s say I had a micropenis. I think my code is the greatest thing in the history of the world. CoG sees my plugin and…chooses not to do anything with it. Because it isn’t worth anything.

Or let’s say they’re curious, but they want to see how much interest there is in my plugin. I release it to the CoG community, who then promptly ignore it. Nothing happens.

Or let’s say they’re interested enough to shoot an offer, but I make unreasonable demands because I’m an asshole. CoG laughs me off. Nothing happens.

Or let’s say, somehow, my plugin ruins a CoG game. Which is why CoG can include a damages clause. Something like, “If you ruin our shit, we’re suing your ass”. My game-ruining plugin because a cash windfall for CoG.

In every possible situation, the worst that can happen is nothing. There is no risk on CoG’s part, as they can choose to not engage with anyone. In fact, by letting contributors demonstrate their plugins noncommercially, this lets CoG see exactly how much demand there is for any particular feature. In other words: letting contributors share their work noncommercially is safer for CoG.

And for the record, I believe CoG isn’t trying to be “evil” or anything like that. Allowing noncommercial contributions is better for them, too. They don’t even need to pay anybody. Just by supporting a noncommercial scene, they generate more awareness of their paid products. ChoiceScript games are clearly marked as ChoiceScript games, which means anyone playing a noncommercial ChoiceScript game could be led to the CoG site. This, in turn, means more potential customers, so long as paid ChoiceScript games maintain their quality. And since the people writing paid ChoiceScript games are, well, paid, plus publisher standards on their CoG line, they can promise quality in a way noncommercial games can’t. It’s in CoG’s every interest to encourage noncommercail contributors.

Hopefully I’m being reasonable. I don’t think this is a life-or-death issue, so feel free to disagree. There probably isn’t a huge market for ChoiceScript plugins, but it could at least give CoG an idea of what features are in demand. Or, worst case scenario, nothing happens. What’s there to risk?

1 Like

I wonder if you can make your plugin into a more stand-alone program that doesn’t require modification of any ChoiceScript code?

I don’t know the intricacies of how it works, but I was thinking something like when people run hearthstone deck tracker along with hearthstone.

1 Like

In theory, if you make a bunch of javascript functions to be run through *script, you aren’t making anything ChoiceScript-specific. However, the language of the CSL mentions “code written for use with the ChoiceScript interpreter”, so me posting on this forum would demonstrate my code as written with the intent of being used for ChoiceScript. Whoops!

But this is a non-lawyer’s perspective. It seems like a legal gray area, which isn’t the most comfortable of circumstances. If CoG could clarify this, then it’d be a step in the right direction.

1 Like

Yeah see, there’s the main idea right there. Just make the program in Java, and have it activate when it detects whatever it needs to, or via user input (click). This way you aren’t even using *script or anything.

If the whole purpose is to hear audio synced up with certain moments in a story, then you could have it where your program would need the directory of the story, and then have it so where, if in a line of text (let’s say in chapter1.txt) your program comes across this:

*comment ambientbackground.mp4

In choicescript, *comment lines will be ignored. You can use that to your advantage by making your java program look for an audio file kind of like what I suggested.

Anyway, I’m not a programmer either. Just trying to do some creative problem solving. :grin:

1 Like

Hi @Spectrum,

If you want to have a serious conversation with us about this, then email us.

(Also, please don’t describe anything as being like a “used tampon” on this forum.)

4 Likes