That is a good point. (Not the "Fair-use" bit. That's irrelevant here. OGA doesn't accept Fair-use content, nor forbid Fair-use application of any of our assets.) The most ethical way to train AI is using openly licensed content. We don't have any closed licenses on OGA. It seems somewhat contradictory to say "Anyone can use this for whatever they want. Ultimate freedom. But not you, AI. I don't like you specifically. No freedom for you."
In that case, if the question is "What features of a license would forbid AI?", the answer is "The same feature that prevents it from being accepted on OGA."
Sorry, Skydancer. I'm confident there is a license that accomplishes* what you want (or if it doesn't already exist, there someone out there crafting it right now) but such a license will probably never be added to the list of licenses on OGA. But, as hecko mentions, all of the -BY licenses require attribution. If the courts decide- or if a particular AI model is crafted in such a way- that the training of AI is not simply Fair-Use, then the model must provide appropriate attribution to every -BY licensed asset used. If they do not, they are violating the license. I reiterate that hinges on the model training being Fair-Use or not. That's either a model-specific detail or a court-has-yet-to-weigh-in detail. *(I have no idea how the terms of such a license would be enforced. If an AI model admitted to using your works, you could enforce it, but as glitchart pointed out, it would be extremely difficult to prove a breach of license otherwise.)
"...put up a tiny barrier that would discourage most scrapers,..."
That is an interesting approach. Artists could use data-poisoning techniques, so long as it didn't interfere with the usefulness of the asset otherwise.
"...e.g. uploading as a .zip file (perhaps with a simple password)."
This I must recommend against. Password-protecting an archive, uploading it to OGA, and sharing the password in the description would have limited success in hindering scrapers, but massive hinderance for legitimate users. Such files will be removed from OGA.
Unless the concern is individuals copying the style, which... hmm, I'm not sure if any sequence of words would discourage them.
Even if there were, it wouldn't be a valid license; artistic style is explicitly NOT copyrightable.
Oh, that's very interesting. No mention of number of frames, (intentionally, I assume) so the frame count can vary as required; the width of the image will simply be wider if more frames are needed. I can't speak to other dev's needs, but I am a Dev, not an Artist, and I can say for me personally those 5 convention rules would make it quite easy for me to dynamically load animations, without the need for custom sprite-specific code handling.
If frame[i].X + frame[i].width > spritesheet.width Or frame[i].isAllTransparentPixels { set LastFrame = i - 1 }
I also agree with size optimization needs being a developer task, not an artist task. sprite-packing is highly engine-specific, so trying to pre-empt that step is more likely to increase work for the developer.
True. That's a problem for all conventions we've discussed so far. What about a JSON file included with each monster's spritesheet(s)? The JSON file would indicate what animations are supported, regardless of composite- (single file) or separate- (multiple file) animation spritesheet conventions. If separate data files give you the ick, how else would a game engine dynamically recognize the presence or absence of an animation? And would that be less cumbersome?
I think I understand now. In which case, it seems like any animation that could possibly be optional should be a separate file. However, I can imagine monsters where even the "move" animations are optional: ie a poison spine shooting killer plant. Doesn't move, but has a ranged attack. This is a fringe example, admittedly, but it does make me wonder: what animations, if any, should be together in a single file, then?
- Idle: Not really necessary for the most part, but it could be a simple bob. - Taking Damage: ...it can be reflected with a red overlay or something like that as well. We don't necessarily need a "I took a hit" animation. - Death/defeat: ...Typically enemies just "fade away" when being defeated. This is not necessary and completedly optional. - Spellcasting/Special Attack: ...A special attack isn't really all that necessary. - Optional Auxiliry Action: I'd argue this would be the "Special Attack". Not sure what else would fit this category. - 4-directional:... isn't necessary.
Well, yeah. Any action can be represented simpler than the standarts suggest they could be. The only thing neccessary for a monster "animation" is a single frame of the monster. Idle: that one frame. Taking damage: That same frame replicated, but flash it white on the second frame. Death: Same frame, but red, or with a code-side dissolve effect. Movement? Just use the one frame, but implement code that bounces the one frame along like a south-park character.
I don't think these standards are defining the minimum complexity that each monster should have, are they? Artists aren't required to do extra work to fill out every animation action slot for every monster just because the slot is there, are they? I assumed these standards would just be a common outline for how the monsters should be organized. On the other hand, anybody that wants more animations/actions than the standards account for would be breaking standards. Meaning, any developer wanting to use that non-standard monster would have to go rework their code because they coded their animation engine according to standards that don't account for anything but the bare minimum. For example: The original LPC guidelines don't account for climbing, archery, jumping, etc. I'm not suggesting we rework all LPC assets to include those neccessarily, but they have since been popular requested additions, and it has caused a lot of difficulty incorporating them retroactively (such as to ULPCG) because there's no standard place for such additions.
"Special attack" isn't going to be used by all monsters, but there will certainly be enough monsters that do have more than one attack. If a given monster doesn't use it, just replicate the "Basic Attack" frames in that slot. Similar situation for "Auxiliary Action". It could be a 3rd attack, or it could be a special mutation animation for Boss monsters: "this isn't even my final form!" It's just a catch-all slot for anything the monster concept needs but the standards don't otherwise have a place for it.
The reason I was suggesting more than was neccessary is because making animations simpler than the standards allow is much easier than making animations more complex than the standards allow later.
That is a good point. (Not the "Fair-use" bit. That's irrelevant here. OGA doesn't accept Fair-use content, nor forbid Fair-use application of any of our assets.) The most ethical way to train AI is using openly licensed content. We don't have any closed licenses on OGA. It seems somewhat contradictory to say "Anyone can use this for whatever they want. Ultimate freedom. But not you, AI. I don't like you specifically. No freedom for you."
In that case, if the question is "What features of a license would forbid AI?", the answer is "The same feature that prevents it from being accepted on OGA."
Sorry, Skydancer. I'm confident there is a license that accomplishes* what you want (or if it doesn't already exist, there someone out there crafting it right now) but such a license will probably never be added to the list of licenses on OGA. But, as hecko mentions, all of the -BY licenses require attribution. If the courts decide- or if a particular AI model is crafted in such a way- that the training of AI is not simply Fair-Use, then the model must provide appropriate attribution to every -BY licensed asset used. If they do not, they are violating the license. I reiterate that hinges on the model training being Fair-Use or not. That's either a model-specific detail or a court-has-yet-to-weigh-in detail.
*(I have no idea how the terms of such a license would be enforced. If an AI model admitted to using your works, you could enforce it, but as glitchart pointed out, it would be extremely difficult to prove a breach of license otherwise.)
That is an interesting approach. Artists could use data-poisoning techniques, so long as it didn't interfere with the usefulness of the asset otherwise.
This I must recommend against. Password-protecting an archive, uploading it to OGA, and sharing the password in the description would have limited success in hindering scrapers, but massive hinderance for legitimate users. Such files will be removed from OGA.
Even if there were, it wouldn't be a valid license; artistic style is explicitly NOT copyrightable.
I'm not saying the artists will "win" the lawsuit, just that it isn't pointless to seek legal recourse (such as licensing) for such things.
I'm sorry, but if it were entirely hopeless to enforce IP around AI training datasets, then the top image generative AI companies wouldn't be actively getting sued for exactly that: https://www.docketalarm.com/cases/California_Northern_District_Court/3--...
If you can find one supported by the FSF we'll certainly look into adding it.
Oh, that's very interesting. No mention of number of frames, (intentionally, I assume) so the frame count can vary as required; the width of the image will simply be wider if more frames are needed. I can't speak to other dev's needs, but I am a Dev, not an Artist, and I can say for me personally those 5 convention rules would make it quite easy for me to dynamically load animations, without the need for custom sprite-specific code handling.
If frame[i].X + frame[i].width > spritesheet.width Or frame[i].isAllTransparentPixels {
set LastFrame = i - 1
}
I also agree with size optimization needs being a developer task, not an artist task. sprite-packing is highly engine-specific, so trying to pre-empt that step is more likely to increase work for the developer.
True. That's a problem for all conventions we've discussed so far. What about a JSON file included with each monster's spritesheet(s)? The JSON file would indicate what animations are supported, regardless of composite- (single file) or separate- (multiple file) animation spritesheet conventions. If separate data files give you the ick, how else would a game engine dynamically recognize the presence or absence of an animation? And would that be less cumbersome?
Looks like option #2 is off your page
Edit: ah ok. That explains it.
?? Why not just download it from the download link on this page?
Also, Kenney's page does download the assets as well. When you click the purple download button, it gives two options:
Which is pretty standard.
I think I understand now. In which case, it seems like any animation that could possibly be optional should be a separate file. However, I can imagine monsters where even the "move" animations are optional: ie a poison spine shooting killer plant. Doesn't move, but has a ranged attack. This is a fringe example, admittedly, but it does make me wonder: what animations, if any, should be together in a single file, then?
Well, yeah. Any action can be represented simpler than the standarts suggest they could be. The only thing neccessary for a monster "animation" is a single frame of the monster. Idle: that one frame. Taking damage: That same frame replicated, but flash it white on the second frame. Death: Same frame, but red, or with a code-side dissolve effect. Movement? Just use the one frame, but implement code that bounces the one frame along like a south-park character.
I don't think these standards are defining the minimum complexity that each monster should have, are they? Artists aren't required to do extra work to fill out every animation action slot for every monster just because the slot is there, are they? I assumed these standards would just be a common outline for how the monsters should be organized. On the other hand, anybody that wants more animations/actions than the standards account for would be breaking standards. Meaning, any developer wanting to use that non-standard monster would have to go rework their code because they coded their animation engine according to standards that don't account for anything but the bare minimum. For example: The original LPC guidelines don't account for climbing, archery, jumping, etc. I'm not suggesting we rework all LPC assets to include those neccessarily, but they have since been popular requested additions, and it has caused a lot of difficulty incorporating them retroactively (such as to ULPCG) because there's no standard place for such additions.
"Special attack" isn't going to be used by all monsters, but there will certainly be enough monsters that do have more than one attack. If a given monster doesn't use it, just replicate the "Basic Attack" frames in that slot. Similar situation for "Auxiliary Action". It could be a 3rd attack, or it could be a special mutation animation for Boss monsters: "this isn't even my final form!" It's just a catch-all slot for anything the monster concept needs but the standards don't otherwise have a place for it.
The reason I was suggesting more than was neccessary is because making animations simpler than the standards allow is much easier than making animations more complex than the standards allow later.
Pages