Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/imissmyfriends/conveyorbelt
📦 Automatically export Aseprite files and import them as sprites into GameMaker
https://github.com/imissmyfriends/conveyorbelt
gamemaker-studio-2 npm-package
Last synced: 3 months ago
JSON representation
📦 Automatically export Aseprite files and import them as sprites into GameMaker
- Host: GitHub
- URL: https://github.com/imissmyfriends/conveyorbelt
- Owner: imissmyfriends
- Created: 2022-06-07T07:42:58.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-09-08T03:34:52.000Z (over 1 year ago)
- Last Synced: 2024-04-25T11:21:51.145Z (9 months ago)
- Topics: gamemaker-studio-2, npm-package
- Language: JavaScript
- Homepage:
- Size: 96.7 KB
- Stars: 6
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-gamemaker - conveyorbelt - Similar to ASESync. Export Aesprite files to GameMaker sprites. (Sprites / Recommendations)
README
# conveyorbelt
> This tool is being developed for 🐟 Fishbowl, you can follow along on [Twitter](https://twitter.com/imissmy_friends).
> **⚠️ Warning**: The tool doesn't work when the number of frames in an animation changes.
> **⚠️ Warning**: The tool isn't able to update the bounding box (collision map) of sprites that have a non-default bounding box. If you run the tool in `--verbose` it'll warn you about the sprites whose bounding box wasn't changed.
![conveyorbelt](https://user-images.githubusercontent.com/9491/174024453-55c428ad-69f7-48c0-b0c3-7943f82de76b.gif)
## Installation
You'll need to have [NPM](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) and [Node](https://nodejs.dev/learn/how-to-install-nodejs) to be able to install and run this tool. Once you have those installed run:```bash
npm install -g @prtksxna/conveyorbelt
```For local development clone the repository and then install it globally:
```bash
npm install -g .
```## CLI Help
```
% conveyorbelt run --help
Usage: conveyorbelt run [options]Options:
-sd, --sprites-dir Directory of GMS sprites (default: "sprites/")
-ad, --art-dir Directory of Aseprite art (default: "art/")
-ap, --aseprite-path Path to Aseprite executable (default: "~/Library/Application\\ Support/Steam/steamapps/common/Aseprite/Aseprite.app/Contents/MacOS/aseprite")
-p, --prefix String prefix for GMS sprites (default: "s")
-v, --verbose Whether or not to use the verbose renderer (default: false)
-ne, --no-export Whether or not to export all Aseprite files on first run
-h, --help display help for command
```## Configuration
- `SPRITES_DIR` defaults to `sprites/`: GameMaker sprites
- `ART_DIR` defaults to `art/`: Aseprite sprites
- `PREFIX` defaults to `s`: The prefix that'll be used to find the sprite in GameMaker. For example if the aseprite is called `Player.aseprite` the sprite this script will try to update would be `sPlayer`.
- `ASEPRITE_PATH` defaults to `TODO`. You will need to change this based on your [platform](https://www.aseprite.org/docs/cli/#platform-specific-details) and how you [installed](https://www.aseprite.org/docs/cli/#in-the-case-of-steam) Aseprite. Possible paths
- C:\Program Files (x86)\Aseprite\Aseprite.exe
- C:\Program Files\Aseprite\Aseprite.exe
- C:\Program Files (x86)\Steam\steamapps\common\Aseprite\Aseprite.exe (Steam)
- /Applications/Aseprite.app/Contents/MacOS/aseprite
- ~/Library/ApplicationSupport/Steam/steamapps/common/Aseprite/Aseprite.app/Contents/MacOS/aseprite (Steam)## Convention
- Aseprite file names need to match the sprite names in GameMaker (except the `PREFIX`, see Configuration above)
- If the sprite doesn't have any particular export layers or animations then a single PNG should be exported. For eg `UIBubble.aseprite` should make `sUIBubble.png`
- Files can have only particular layers exported by prefixing the layer name with `-x` or `-xt` (if you want the PNG to be trimmed). For eg `LightMonsoon.aseprite` with the layers `-xBedroomMorning` and `-xtBedroomNight` will result in the following PNG - `sLightMonsoonBedroomMorning` and `sLightMonsoonBedroomNight`.
- Animations will have the frame number appended to the file name after a `-`. So `RainParticle.aseprite` would create `sRainParticle-001.png`, `sRainParticle-002.png` and so on.
- Files that have multiple animation tags will have the tag added at the end.### Example Aseprite files and how they'll be exported
- Single sprite `UIBubble.aseprite` -> `UIBubble.png` -> `sUIBubble`
- Single animation `AirConFan.aseprite` -> `AirConFan001.png`, `AirConFan002.png`... -> `sAirConFan`
- Multiple animations (tags) `Alo.aseprite` with tags (`WalkFront`, `WalkBack`)
- `AloWalkFront001.png`, `AloWalkFront002.png`... -> `sAloWalkFront`
- `AloWalkBack001.png`, `AloWalkBack002.png`... -> `sAloWalkBack`
- Multiple layers (some prefix to mark only those for export): `LightBedroom.aseprite` with layers `xWindowMorning` and `xLampNight`:
- `LightBedroomWindowMorning.png` -> `sLightBedroomWindowMorning`
- `LightBedroomLampNight.png` -> `sLightBedroomLampNight`
- Multiple layers + one animation for each `Window.aseprite` with layers `-xtOutside` and `-xCurtains`:
- `WindowOutside001.png`, `WindowOutside002.png`... -> `sWindowOutside`
- `WindowCurtains001.png`, `WindowCurtains002.png`... -> `sWindowCurtains`
- Multiple layers + multiple tagged animation for each: `MomVideoCall.aseprite` with layers `-xBackground` and `-xPortrait`.
- `-xBackground` has animation with tags `Night` and `Day`
- `MomVideoCallBackgroundNight001.png`, `MomVideoCallBackgroundNight002.png`... -> `sMomVideoCallBackgroundNight`
- `MomVideoCallBackgroundDay001.png`, `MomVideoCallBackgroundDay002.png`... -> `sMomVideoCallBackgroundDay`
- `-xPortrait` has animation with tags `Happy` and `Sad`:
- `MomVideoCallPortraitHappy001.png`, `MomVideoCallPortraitHappy002.png`... -> `sMomVideoCallPortraitHappy`
- `MomVideoCallPortraitSad001.png`, `MomVideoCallPortraitSad002.png`... -> `sMomVideoCallPortraitSad`