The Ultimate Asset Pipeline.
Tags: gamedev, art, gui
Published: 2020-09-07 22:50:42

---
title: The Ultimate Asset Pipeline.
published: true
description: Why I made Cute Exporter.
tags: gamedev, art, gui
cover_image: https://img.itch.zone/aW1nLzQwNjY1NDYucG5n/315x250%23c/gSIjOc.png
---

I have two [previous][first post] [posts][second post] about my adventures in creating a pipeline to get my Raw PSD files into a PNG texture atlas. 

Well it turned into an entire GUI desktop application, [Cute Exporter][cute exporter].

With this newest way of exporting assets I do have it all! Every step in the pipeline can be controlled by the Exporter (and therefore whatever code I write). It makes adding in expanded metadata easy, and works how I want it to. Maybe you can find it useful too.

The exporter can do everything I was doing before through several scripts and programming languages by itself. No need to install any other programs.

* Read PSD or PNG or Aseprite files.
* Edit and export meta data about each asset file and Layer in that file.
* Export each layer in the Asset to a PNG and PNG texture atlas.
* Export all metadata to a json file to get info about each entry in the texture atlas and tags and other metadata.

Seriously, You don't need to own Photoshop or Aseprite to export any of those files! It also has a CLI (which I need to document more) included. You can automate your workflow with it pretty easily as well.

The tool is written in a programming language called [Odin](https://odin-lang.org/). It's a lower level programming language, with a small but engaged community. It's a bit of an mix between go and C. If you ever wanted to do some lower level programming it might be one to try out. [There is a community discord](https://discord.gg/55Vz9MP)

For the graphics and windowing stuff I use a library called [Raylib](https://www.raylib.com/). Super beginner friendly and easy to start with for games. But it is in C. However, there are ports of it to many other languages so check those out too. Odin has a great foreign system so I compile the Raylib code as a static library and link it with my odin code. (I should clean up my Odin code for this and make the repo public).

I'm still using sqlite because I think it rules. Similar procedure to Raylib. I compile the sqlite as an object file and link it in Odin. You can check out that code at the [repo I made for it](https://github.com/powerc9000/odin_sqlite)


Maybe you don't care about games. Well it still can be useful for you in the web as well. 

It can be useful to combine your little assets into one image. Then the end user only needs to download a single file. Using CSS `background-image` to display the proper graphic on your site.

Ever have raw files from designers that are in PSD format and you want PNGs? You can export them with Cute Exporter. It caches all the individual PNG files to disk before it stitches them into a texture atlas. You can then easily grab them from the cache folder.

But it's mostly cool for games. And making games in HTML5 is really accessible. 

[first post]: https://dev.to/powerc9000/asset-pipeline-in-my-game-2ep6
[second post]: https://dev.to/powerc9000/asset-pipeline-updates-1cnb
[cute exporter]: https://powerc9000.itch.io/cute-asset-pipeline