I'm a software developer at a gaming company, and we're currently undertaking efforts to improve our asset creation and management toolchain. Our initial idea was to code our own solution from scratch (again, but with better architecture this time ^^) that specifically meets our requirements. However, after doing some investigation I'm not so sure any more that this would be the best option.
I've been looking around for similar OSS/commercial solutions (which generally seem to be called "Digital Asset Management"), and found a few, many of which either have little information available about their actual capabilities, or are out of our league regarding pricing:
The main problem with those programs (aside from the mentioned lack of information and pricing) is that they don't seem to quite meet our requirements. They seem to work very well for consultancy/agency type of companies, which e.g. have a set of images that they need to search/filter and provide in different sizes and formats, or [animation] movie productions, which have a set of scenes that need to be reviewed and revised until they are accepted.
However, our company would need something that is capable of handling much more than that. We would need a tool that is capable of actually processing the assets as part of our game development pipeline (either directly, or via plugins, or by calling other programs on the command-line). For example, an artist edits a texture, uploads the texture, and then the tool automatically performs a certain set of predefined transformations on the texture and compresses it in several different formats for various target platforms.
Our requirements are (in no particular order, all of them are basically equally important):
- Multiple targets and formats (processing of one source file, with different transformations, for different platforms - e.g. as3 file + ATF compressed texture for Flash target, and plist file + CCZ compressed texture for Cocos2D-X target)
- Scripted/sequenced processing (e.g. replace a certain color with another color, then resize the image, then export in certain formats)
- Partial builds (process only certain files, create output for only certain platforms)
- Extensibility (handle new file formats, allow new transformations, ...)
- Sound processing (recompress with different bit rate, generate audio sprites, encode as OGG/MP3)
- Error detection (missing files, wrong input formats, wrong extensions, incorrect bit depth, invalid transformation steps, ...)
- Can be used by non-programmers (doesn't need to have an ultra-fancy GUI, but normal use shouldn't be CLI parameter hell either)
- CI/CD integration (can be integrated into Jenkins build jobs; it needs at least a command-line interface, but an ANT task or Maven plugin would be best)
Nice to haves:
- Change detection/triggers (preferably with checksums/hashes in addition to timestamps, changes to a file can trigger a [partial] build of the modified assets)
- Dependency handling (manage dependencies between e.g. meshes and textures, draw dependency graphs)
- Flexible output quality (e.g. lower compression quality for development builds to reduce build time)
Are there already existing tools, which I just haven't discovered yet, that meet (some|many|most) of these requirements? Has anyone worked with any of the tools I've listed above and can comment on their capabilities and if/how they would work for us (especially FocusOPEN)? Or are our requirements so exotic/special that a custom solution is the only possible way?