A downloadable tool

Download NowName your own price

Record is a suite of LUA scripts for taking incremental snapshots of your sprite within Aseprite for the purpose of making a time lapse/progress gif.

I always enjoyed seeing progress recordings of artwork and wanted to have a simple way to make them that didn't require firing up a screen recording software and dealing with video editing.

This can be used to create such a time lapse gif of a sprite you are working on natively within Aseprite, or just to keep track of your work as it progressed.

It stores flattened copies of your sprite in a folder local to your current working sprite with an incrementing number to take advantage of Aseprite's automatic gif functionality for files with sequentially numbered names.

Instructions

How To Install

Minimum requirement of Aseprite 1.2.30

  1. Download the ZIP file and extract it anywhere you want.
  2. Open Aseprite and select File > Scripts > Open Scripts Folder.
  3. Copy the extracted folder, aseprite-record, to the opened directory.
  4. Use the Rescan Scripts Folder option or Restart Aseprite to make use of the installed scripts.

Requirements

Record requires that whatever file you are working on be saved so it can know where to save your snapshots of the flattened sprite.

Usage

Record comes packaged with many options available from the Scripts menu.

Automatic Snapshot

This option will open up a dialog box that provides functionality take snapshots on an interval.

Action delay is equal to the number of actions you take before the next snapshot is taken. It requires there to be an active & saved sprite in order to run. The interval at which saves happen is based on sprite change events - when changes are made to the sprite, including undo/redo actions.

The interval is configurable in the dialog, lower numbers means more frequent snapshots. 

If you change the active sprite in the app, automatic snapshots will keep a cached reference to the target sprite until you target a new one with the dialog. 

Usage of the Command Palette and Take Snapshot command can be used in parallel while this is running.

Command Palette

This option will open up a dialog box to leave up in your editor, giving you access to the functionality to take a snapshot & open the time lapse for the current sprite if any snapshots are saved for it.

The functions of each button are described in detail below and are available as single actions that can be mapped to a keyboard shortcut.


Take Snapshot

This option saves a flattened png copy of the visible layers of the current sprite. It is saved to a sibling folder named <name of sprite>_record. Each file will be saved with an incrementing count appended to the end of it. No modifications to your work are performed by this script, it only creates new files.

Open Time Lapse

This will open the Aseprite dialog asking if you wish to load all sequenced files related as a gif. If you accept, it will load it as a cool time lapse of all your snapshots saved for the current sprite.

Recommendations

Keyboard Shortcuts

Aseprite allows you to customize usage of scripts added in further with the ability to bind them to a keyboard shortcut. This is why the options available on the Record Command Palette are available as single actions.

For ease of use, it is recommended to bind the Take Snapshot script to a shortcut to enable access and simplify frequent usage.

Aseprite Prompts & Warnings

Because this script will need to access your file system and write new files, it will prompt modals for you to accept to let it function. 

To have the best experience, check the box to "Give full trust to this script". It will also prompt you when it saves the recording as a png since it doesn't support layers like a .aseprite file does. You may want to check that box as well, otherwise it will get quite annoying.


Precautions

As with all software, there are some warnings about actions that could impact your experience with this tool. Luckily, they're pretty straightforward.

Renaming the sprite or recording folder

Because the script functions based off a saved sprite, changing the name of the sprite itself or the folder it writes to will cause it to begin over from start upon next usage of Take Snapshot. This should not incur any loss of data but it will begin as if it was a new instance when you try to create a time lapse. All of your original files will still be where you left them.

Renaming or deleting recording snapshot files

Note: As of 3.x the file increment is tracked in an index file.

If you rename any of the snapshot files themselves or delete them, it can cause the script to start over in counting or overwrite existing ones. It determines what the next number in sequence should be based off file names.

If you had files 1, 2, and 3 - and removed 2. This would cause the tool to think it needs to start at 2.

License, Source, & Credits

This software is available to you, the user, free of charge under the MIT license

Its source code is available to download, remix, and submit pull requests & bug fixes on Github.

No credit to me is required if you do use this software, but I do encourage you share it with others who may also find enjoyment & utility from it.

Questions?

You can drop a comment here, the Github repository, or hit me up on Twitter @sprngr_.

StatusReleased
CategoryTool
Rating
Rated 5.0 out of 5 stars
(23 total ratings)
Authorsprngr
Made withAseprite
Tags2D, Aseprite, Pixel Art, record, script, time-lapse
Code licenseMIT License

Download

Download NowName your own price

Click download now to get access to the following files:

aseprite-record.zip 8 kB
Version v3.4.1

Development log

View all posts

Comments

Log in with itch.io to leave a comment.

Weird. I have the snapshots of all the pngs but when I click to Open Time Lapse, it only contains the first png. Any idea how to fix this?

If you open the first png in the list on its own in Aseprite, assuming the files are named sequentially, it will trigger the same prompt the plugin uses. Does that work?

Hey there, unfortunately it does not work either. The error of "you need to take at least one snaphshot to load timelapse" just appears. I don't know how to fix this. :(

If you go to the timelapse folder (the sprite name, suffixed with _record) for a sprite, and open the first file suffixed with 0 via the File > Open dialog in aseprite - it should attempt to load all files sharing the sequence, like the included image, . The folder should contain an _index.txt file and all of your snapshot pngs assuming you’re using a current version.

Based on the error you are getting, that would indicate there are not any snapshots taken for the file you have open. The Open Timelapse function acts upon the currently active sprite in your editor.

Sadly, even with your help, I still cannot solve the issue. I appreciate you for helping me out though. I think my issue is something others rarely encounter using this script.

(1 edit)

Im having this same issues too. Any update regarding to this issue? Im using Aseprite v1.2.40-x64

Hi, please check the Preferences for Alerts and make sure your option for “Open a sequence of static files as an animation” is set to either “Ask” or “Yes”. This should get past the problem of only opening a single image.

(+2)

It's amazing!

I finished the art and after that I remembered that I saw this script. I downloaded it, installed it. After recorded the whole process by holding CTRL+Z and CTRL+Y.

It is important to note that do not need to close Aseprite after installing the script. There is a function "Rescan Scripts Folder" on F5.

The delay feature is clearly not working, I had it set to 5000(!) thinking that it was in milliseconds, still ended up with 10000 snapshots while working on a piece.

(2 edits)

You have to set the interval after pressing start. Adding a hint for that would be nice :D

(+1)

Good point. I’ll work on some text to help make it more apparent.

(1 edit)

is it possible to make the recording like the one on clip studio paint or ibis paint?  My aseprite cannot export the timelapse output. it will freeze my computer. https://tips.clip-studio.com/en-us/articles/4000

I’m not sure if I would be able to pull that off with the way the Aseprite API works but I can put on my todo list to look into see if there are better methods around converting snapshots into the final timelapse.

(1 edit) (+1)

You can use Blender (100% free) to do this for you from the recorded Aseprite images. You can google for "blender import png image sequence" for videos on how to do it. Just point it at the directory that has all the timelapse images.

i haven't tried it yet but thanks so much for this!! I've been wanting something like this for a long time :DD

everytime i record it will crash the whole aseprite app and my recent work wont show up on the recent view

Sorry to hear that things aren’t going so well. I’ll try to help in any way I can but cannot guarantee I’m able to figure out a solution.

What version of Aseprite are you running? Are you using the most recent version of this plugin? Do you have any other plugins/extensions running? If you are using the automatic snapshot functionality, what interval are you recording at? How big is the file you are working on?

Aseprite v1.2.34.1 x64 interval is 3 and the files are mostly 64pixel 

Please try the most recent version of the plugin, the changes introduced may have resolved your issues.

It worked thank you so much!

(+2)

I made a fork today that:

- Fixed crashes with Selection Tool + Move Tool

- Removed the annoying popup save dialog

- Defaulted snapshot interval to 1 (instead of 3)

- Nicer output file names

https://github.com/thomaseding/aseprite-record

Feel free to yank some/all of the new content from this and bring it into the main project.

I also wrote a post processor that will collapse sequences of identical output files. It will also rename things in proper order, letting you hand-delete bad recorded frames (such as an accidental paint fill). It's still pretty rough on the edges (wrote it today), so I don't have a link for it up yet.

Oh wow, that’s quite an update. I’ll give it a read through and let you know if I pull it back into the main project.

Just a heads up, I’ve pulled in your updates to the project with a minor tweak to maintain compatibility with existing snapshot files & added documentation for a migration path for anyone who may try to use the update with said existing snapshot.

Awesome. Sorry for the C-like Lua... I've never read or written Lua before and couldn't be bothered to read a tutorial :)


Also it looks like you beat me to a backward compatibility shim. Perhaps we should shove the version number into a metadata file such as  `foo__record/_version.txt`.

No worries about the C-like Lua, I hadn’t really written any Lua prior to this extension so a lot of it was learned on the fly.

I did managed to squeeze out the compatibility shim, I think it’ll resolve any possible issues that may arise.

Regarding a version file, I don’t imagine it’ll be necessary as I tend to aim to keep things backwards compatible - and based on the nature of the utility I would figure people won’t tend to go back to previous snapshots once they’re done with their piece. Something to think about though, like tracking more meta data if necessary.

(+1)

thank you for making this tool its really cool to see how the art got built up :)

(3 edits)

Would anyone be interested in a custom Aseprite build that fixes the Automatic Snapshot save dialog popping up all the time?

Edit: PR opened https://github.com/aseprite/aseprite/pull/3216 If you have a GitHub account please upvote this so the maintainers prioritize reviewing it!

I would be, but I assumed it’d require some way to to override the dialog that wasn’t exposed via the API.

(2 edits)

I said Aseprite build :) It's open-source, so that can be changed.

Not sure about licensing though (assuming we're not talking about opening a Pull Request).

I figured as much - maybe they’d be open to accepting a PR for such a change to improve more automation like extensions if it was reasonable.

(+1)

Done. Also made it so png recordings don't show up in "Recent files" (exposed as a bool arg to sprite:saveCopyAs). Works fine.

I'll clean it up and try to get this merged tomorrow if I get time.

Wow, that’s great!

(+1)

I made a script fork today that removed the annoying popup save dialog (among other changes):

https://github.com/thomaseding/aseprite-record

Does not require a special build of Aseprite itself (Steam install works fine).

i have aseprite 1.2.25, will it work for me?

(1 edit)

You will not be able to use the most recent version that contains the automatic snapshot tools, but you will be able to leverage the previous version that has the manual controls. That can be downloaded here (https://github.com/sprngr/aseprite-record/archive/refs/tags/v1.2.zip)

Thank you for sharing! It's super cool and helpful.

I don't know what I did wrong. I only got the screenshots. When I open the timelapse command it doesn't pop up the tab with "Do you want to load the following files as an animation?"

That’s an interesting problem.

What Aseprite version are you using?

Do the files have sequential names?

Are you able to open the first file in the list with Aseprite like you would any other file and have it try to prompt then to open as an animation? That piece is built into Aseprite, so I’d be interested to see if that works.

I’m going to test on my PC when I get some free time but hoping we can figure out what has gone wrong.

I'm using Aseprite v1.2.33

It's working now!! thank you for your help. It doesn't prompt a tab asking to load the files as an animation but it still plays as an animation. Haven't tried that the first time so I thought I got it all wrong. 

Thank you again for your suggestion! Have an awesome day!!

(+1)

Great tool, thanks for sharing!

(+1)

An awesome tool! I recommend it to any pixel artist who want to save their timelapses on aseprite.

(+1)

This is really nice! You introduced  a very cool feature for aseprite!

Hope they will add this is the program

(+1)

Amazing ^^ thank you

Deleted 1 year ago
(1 edit)

It cannot take automatic snapshots, I had tried to include a timer but doing so locks up Aseprite while the timer is enabled.

Given that’s the case, I do provide some tips as to how to enable triggering the snapshot via keyboard shortcut.

(+1)

This is perfect ! Thank you so much for this <3

Hey man, hope you're doing alright.

Sadly I don't see the scripts tab. Is the version I am using way past the required one? that's what It looks like. Would definitely love to have this functionality for whatever art I make using aseprite.

Was going to donate the $2 bucks, but then saw I couldn't use it. If you're still working on this, I'd still be down, if not, I completely understand too.


Thank you for reaching out.

The scripts menu should be under the File tab on the main menu. I just checked it in the current version and did a reinstall to make sure everything is working as expected.

What version are you using? The scripts require at least version Aseprite 1.2.17.

Hey, Thanks alot for the prompt reply :D.

I am using this version 

welp, it looks like I was using the beta version, rather than the latest stable version and it doesn't allow for scripts. I have switched and now I can see the scripts. Will let you know if this worked.

Glad you were able to get over that hurdle. Hope you find the scripts to be of use :)

(+1)

Hi just want to thank you for making this awesome tool! I havent used it but plan to use it in place or recording my screen and editing video thats hours long :) Good work!

(+1)

Thank you! Hopefully you’ll be able to find use with it to make your progress gifs.