Curated LPC collection project

Curated LPC collection project

Hi all,

I am proposing a new project to curate all assets in the Liberated Pixel Cup style. I am describing my plan here to think through issues and get feedback before I start. This project intends to address three problems: 

 

1. Users on the site frequently request a "single LPC credits statement" and/or complain that it's too hard to figure out the attribution requirements when using multiple assets

2. The individual submissions here https://opengameart.org/content/lpc-collection are nor organized or curated in any way. At this point, it would be a non-trivial amount of work to download all assets in the collection (and track of their provenance so you can track licenses).

3. There is often a trade-off between "clarity of attribution" and "convenience of use." If you have a bunch of image files, each of which has one or a few authors, it is relatively easy to make a comprehensive credits file, like this: https://github.com/themanaworld/client-data/blob/master/LICENSE . It's very clear who did what for the entire project. On the other hand, it is often inconvenient and/or inefficient to use hundreds of individual tile images (e.g. w/ Tiled); hence, someone (developer, artist, etc.) usually combines multiple tile images into an atlas. Past submissions around the time of the contest have tried to do this for the entire collection, e.g. https://opengameart.org/content/lpc-tile-atlas, and these have proven to be extremely popular. However, if you want to create a derivative work, it is a nightmare to figure out how an individual tile is licensed, and users are often confused about this. Some authors have been very dilligent about conveying what art comes from where (e.g. https://opengameart.org/content/zrpg-beach), but that is still a lot of work. 

 

I propose to create a version-controlled repository containing all images in the LPC repository, logically* organized and decorated with licensing information, along with a set of tools for managing tile images, atlases, and credits. 

The overall vision is that all the art would be broken into smaller images, each of which has a relatively short list of authors and corresponds to a single, logical component (for example, a single kind of chair, or one type of tree). These smaller images would each have attached metadata, with machine-readable credits. These small images would then be combined into a curated set of atlases using Tiled (e.g. "trees" "medieval town objects" "furniture" etc.). Software would be written to generate an attribution statement for each of those atlases, including a diagram overlayed on the atlas. Finally, a single "master" credits file could be generated for the whole project. If a user wanted to directly use either the atlases or the individual objects, they could drop the entire project into their `data/images/tilesets` folder and a master CREDITS.txt into their credits screen, and be done. On the other hand, if a developer wanted to explore the entire collection, but ultimately create a tile atlas or derivative work from a small number of assets, this would be feasible and there would be tools to help them. 

 

More detailed breakdown (in terms of imaginary directory structure):

  • objects/ : collection of small (<8x8 tiles, generally) images corresponding to individual objects (e.g., a chair in 4 directions would be one object, a bed would be another, a tree another, etc.). Each object would have an associated metadata file, containing licensing information (author(s), submission title(s), license(s), and additional attribution instructions as necessary) in a machine-readable format. 
  • atlases/ : collection of larger images. Each would be a Tiled .tmx file, referencing multiple images from objects/ as tilesets. Each would also have a machine- and human-readable credits file, which would be automatically generated by a set of tools (below)
  • tools/ : set of tools to parse and manipulate attribution information:
    • `atlas_credits`: take a .tmx file, where the tilesets are from `objects/`; for each tileset, look for associated attribution data. Verify that all licenses are compatible. Create several comprehensive attribution documents for the entire atlas (human-readable CREDITS.txt, machine-readable credits.json, and CREDITS.png image); each will mention all authors and the original sources of all artwork (e.g. OGA submissions), the licences of all constituent art, and the licence(s) for the entire image. 
    • `chop_atlas`: take a single atlas image and chop it into individual object images. Use annotations on Tiled object layers to specify which tiles should comprise individual object(s). Optionally produces an atlas which re-creates the original image from the diced objects. Would mostly be useful for bootstrapping the project (e.g. breaking up my own submissions and others into objects). 
    • `check_object_credits`: would check all metadata for completion, consistency, license compatibility, etc. 
    • project-wide `Makefile` (or similar) to generate images for all atlases, run `atlas_credits`, run `check_object_credits`, etc.

 

The project would be hosted on a service like GitHub, where multiple contributors could make contributions (and also forks), but there would also be a single "source of truth" that could be curated centrally. (Addressing issues like, which assets should be included, how should objects be named, which atlases should be included, etc.). The project could be versioned with semver https://semver.org , such that projects using the images could benefit from patches and backwards-compatible additions, while also guaranteeing that atlas layouts and/or object shapes don't change within a major version. 

 

There are a few things to work out: 

- the format of the machine-readable credits files, as well as the specific format accepted by `chop_atlas`

- how to "logically" organize objects and atlases will be somewhat challenging and arbitrary (but I think anything will be an improvement over the current situation, and the details probably don't matter much). 

- likewise, deciding what gets included (or not) will not be straightforward. For example, lots of my submissions include other submissions wholesale (e.g. https://opengameart.org/content/lpc-castle-mega-pack vs. https://opengameart.org/content/lpc-castle); in this example, Evert would obviously be credits, but would un-edited versions of their tiles be included (especially of they are somewhat redundant)? In some cases, edits are clear improvements (e.g. fixing minor color or shading issues), in others there are just stylistic disagreements. Likewise, certain assets in this collection https://opengameart.org/content/lpc-collection are, in my opinion, not compatible with the original style guide, and/or are lower quality compared to others. (Not to say they are useless or bad or anything! Just that I don't think they "fit"). Who decides these issues

- should any "non-tileset" sprites be included? I think human sprites covered by the Universal Spritesheet/character generator are definitely out (I think castelonia's generator here https://github.com/sanderfrenken/Universal-LPC-Spritesheet-Character-Gen... already provides a definitive collection of those assets). But what about animals, portraits, UI elements, etc.? It's not so clear to me. OTOH, I think an animated clock or lantern or something definitely fits the mold. 

- should we try to incorporate .tsx files somehow? (These auxillary Tiled files include information on animation timing, Terrain/Wang tile IDs, etc.; mostly they make it easier to draw maps using Tiled). It may be possible for objects to have optional .tsx files, and `atlas_credits` (or another program) is aware of them and bakes them into a merged .tsx file for the atlas. 

- what about editable source files for the images? Very few submissions include these anyway, so it's more of a theoretical concern. But it would be nice to figure out a way to include them when they're available. I don't know much about tools for handling them though (for instance, is there a command-line tool to go from .kra to .xcf? .psd, .kra, .xcf, .pyxel, and .ase would proably be the most common choices to consider).

- I have proposed to build the project around Tiled because I believe it's the most widely-used FOSS tileset editor, and it has an extremely comprehensive feature set and API that would allow the above functionality to be realized. Using Tiled would not be a requirement for consumers of this project (e.g. developers), just for maintainers editing the atlases. I am open to alternatives though!

 

As a first step, I would probably try to "dice" all of my existing submissions into objects, then re-create them as atlases. Likewise for a few other "collection" submissions, like TheraHedwigs' entries. Then I could re-visit the rest of the collection to look for which items are missing. 

 

What do you think? Does this seem like a crazy idea? Would it be helpful, or just a huge amount of work? We'd probably still get people posting every month or so about how "it's so hard to keep track of LPC credits, can I download a single credits file and be done?", but at least the answer would be more straightforward.