Thimbleweed Park 2 dev blog

Aug 18, 2026

David here!

This is my first blog post for the Thimbleweed Park 2 dev blog, and I hope not the last. I’m going to talk about character animation in the game, a bit about process and tools.

In Thimbleweed Park 1 (ok, it was never called that, just Thimbleweed Park, are we retconning the game name?), we used a home-grown (Ron-created) character animation program called Compy. It had some basic features, and emitted json files describing the animation sequences along with the individual cells that could be layered on top of each other to create the character animations you saw in the game. For example, Agent Ray’s body was separate from her head, so while her body was walking, we could independently animate her head and mouth. Likewise we had another layer for eye blinks, another for accessories (hats, nose glasses).

In Return to Monkey Island, our characters were all vector-based, created with the animation tool, Spine. For Thimbleweed Park 2 we’re back to pixel-based characters. Rather than updating Compy, we selected the popular Aseprite for 2D pixel animations ($19.99 on Steam or Aseprite’s website). Ron used it on his recent pixel-based RPG Death by Scrolling, and wanted to stick with it.

I learned enough about Aseprite to import some of the animated characters from the first game… a somewhat mind-numbing and tedious task… opening all the frames in the Mac app Preview, then copying/pasting each image into Aseprite’s cell in the timeline. Then apply some magic (Ron’s Python script exportaseprite.py) which exports each animation cell as a PNG, and then packs them into sprite sheets, and keeps track of all the named animation sequences.

First spoiler: there are Polaroid cameras in this game just like Thimbleweed Park 1 (opening scene with the agents) and in the Delores standalone game. This time both Agents Ray and Reyes have their own cameras, and we needed more animation sequences than just the right-facing and kneeling photo-taking animation from the first game.

In fact, we needed nine sequences… versions for taking photos of low objects, medium height objects, and tall objects. Plus versions for right-facing, back-facing, and front-facing, so 3 x 3 = 9. (When the character faces left we just flip the right-facing animations.)

Each animation is made up of multiple short segments, to give us more control of timing. For example, when we want to trigger a sound effect and a screen flash. Octavi took this on as his first project for the game:

Camera out—actor takes the camera out of their jacket, or wherever they magically store it

Camera hold—actor holds the last frame with the camera in position to take the photo

Camera shot—photo is taken as the flash goes off in four frames, and separately we trigger the sound effect and also flash the screen for a quarter of a second

Camera in—camera ejects the photo, actor shakes out the instant photo to dry it off, puts away the camera and returns to a standing position

That means our original nine sequences are made up of four segments each, for a total of 36 segments. Fortunately, all elements of each frame were flattened, so we didn’t have separate talking heads, moving eyeballs, etc.

To keep this all straight, we used a naming convention and tagged the object to be photographed with low, med, or high, and we also set the actor’s facing in the object (front, right, back). Gathering that information from the object, we knew which animations to trigger:

camera_out_[low, med, high]_[front, right, back]

camera_hold_[low, med, high]_[front, right, back]

camera_shot_[low, med, high]_[front, right, back]

camera_in_[low, med, high]_[front, right, back]

Octavi started with the Delores camera animations as a template (from the Delores game), and then created a similar set for Agent Ray. It took a few iterations to get everything perfect. Rather than trying to figure out if it was correct in Aseprite (challenging when there were so many segments to check), I set up a test room so we could check the animations in context… of course I picked the disgustingly gross Thimbleweed Park QuickiePal Bathroom for the photoshoot!

The bathroom doesn’t appear in Thimbleweed Park 2, but it’s finished art and a good test.

I didn’t have any targets for a front-facing photo, so I used temp programmer art, then made a QuickTime video and shared it with Octavi.

When we looked at the animation in the room, we spotted a few issues. One showed a several-pixel jump from the end of the camera animation to the beginning of the normal standing animation. Once corrected, Octavi then created the same animations for Agent Reyes, and I again sent him a movie for him to confirm all was perfect.

For the in-game test interactions, we started with the Delores UI, where the player can drag an inventory object (the camera) out of their inventory and place it over the item to be photographed. Note that the UI in this video is WIP, and will likely go through multiple iterations throughout the development of the game.

– David Fox

P.S.

We have the following .aseprite files

animation/Reyes-base.aseprite
animation/Reyes-camera.aseprite
animation/Reyes-climbing.aseprite
animation/Reyes-reaches.aseprite
animation/Reyes-toilet.aseprite

And in the Dinky code we do this

default_costume = [ "animation/Reyes-base",
                    "animation/Reyes-reaches",
                    "animation/Reyes-climbing",
                    "animation/Reyes-camera",
                    "animation/Reyes-toilet" ]

That adds all the .aseprite animations to a single animated sprite. Then we run this code when taking a picture.

local position = match(getvalue(subject?.photo_reach)) {
    REACH_HIGH: "high"
    REACH_LOW: "low"
    default: "med"
}
local anim = playAnimation(selectedActor, "camera_out_"+position)
breakwhileanimation(selectedActor, anim)
anim = playAnimation(selectedActor, "camera_hold_"+position)
if (is_function(subject?.startTakingPhoto)) {
    subject.startTakingPhoto(subject.photo)
}
breakwhileanimation(selectedActor, anim)
anim = playAnimation(selectedActor, "camera_shot_"+position)
playSound(SOUNDID(take_photo))
breaktime(0.2) // wait a beat to let the sound sync better with the animation
overlayFlashColor(COLOR_WHITE, 0.25)
breakwhileanimation(selectedActor, anim)
anim = playAnimation(selectedActor, "camera_in_"+position)
breakwhileanimation(selectedActor, anim)
actorStand(selectedActor)
if (is_function(subject?.doneTakingPhoto)) {
    subject.doneTakingPhoto(subject.photo)
}

Comments:

ralf tauscher :FreiburgSocial: Aug 18, 2026
everyone should take photos of toilet paper in the "wrong" direction 😀

and yes, still the best customizing option inside the graphics menu
Enlo17 Aug 18, 2026
Hi David, thank you for the great post! I have always been interested in game development and handling animations/ sprite sheets has been like magic for me when I was a kid.

I remember game magazines revealing sprite sheets and this post, next to be nicely informative, brought me back in history as well.

Keep up the great work and these kind of posts, it is much appreciated!
Anna Aug 18, 2026
Thank you for sharing the process. It is fascinating to see how much work and thought there is behind every litte detail!
Denny Aug 18, 2026
Thanks for the insights. It's really interesting.
ClutchAbuse Aug 18, 2026
Nice writeup! I love following these.
Sushi Aug 18, 2026
Minor bug (in your post): the second sequence should be camera_hold instead of camera_out

About retconning the name of the game, I guess we’ll call the first TWP again once its sequel isn’t called TWP2. (I remember referring to Zak as Maniac Mansion 2 when it was just rumoured before its release.)

Anyway, nice post and interesting inside look on the tools and process, David! (As much as I’d love to understand Ron’s about language and compiling and optimizing byte code, I don’t)
David Fox ✔ Aug 18, 2026
Sushi: Minor bug (in your post): the second sequence should be camera_hold instead of camera_out
Good catch! Copy/paste error on my part.
Gins Aug 18, 2026
@DavidBFox It's amazing how an industry veteran can still ooze that much excitement from getting a series of sprites to animate in a test room. Don't mind me sunbathing in it for a bit ❤️
Cidney Hamilton / Cat and Witch Games Aug 18, 2026
@gins @grumpygamer @DavidBFox Aseprite is definitely that exciting. :D Curious what it will look like with all the layers and frames needed, even just for the camera animations.
Acmeplus Aug 18, 2026
Great post @DavidBFox keep writing them. I always felt intimidated by Aseprite apparently simplistic yet really powerful interface. Will definitely follow the progress and learn new tricks.
Frenzie Aug 18, 2026
Thanks! Great to get a bit of insight like this.
Stan Aug 18, 2026
I guess we will need a photo album to store, sort and trade all those pictures in our pockets ; especially if we start shooting at anything. >.
Agent99 Aug 18, 2026
Nice integration comment with Mastodon. I'd love a write up and how you do that.
Wanderer Aug 18, 2026
Aseprite! Nice! :-) Thanks for the insights into tooling and process; entertaining AND valuable! :-D
nicol :HonkGoose: Aug 18, 2026
It's all about synchronized coloring of specks of dust
tcmsurfer Aug 18, 2026
Thanks David for the insight. While quite the technical demonstration of what you use and how you all interact...

...is the process satisfactory so far or do you think there is room for improvement to make it more smooth to work with for everyone?

Otherwise thanks for sharing this as well as the animation previews!
Big Red Button Aug 18, 2026
Despite all those years, following the TWP2 dev blog makes me feel as if the predecessor had been released only yesterday!

Thank you for this interesting insight, David! I am happy to know that you are handling the animations with such a great care. In my opinion, character animations are such an important element in an adventure game!

As the engines of the two TWP games apparently differ pretty much, there might be tons of notable technical aspects and differences worth to write a blog entry about. So, I am excited about more such insights!
David Fox ✔ Aug 18, 2026
...is the process satisfactory so far or do you think there is room for improvement to make it more smooth to work with for everyone?
@tcmsurfer, it's pretty straightforward now that we've imported a few of the original animations, and Octavi created some new ones. Because this Aesprite is already a mature tool, there's a lot of online support on how to use its features.
David Fox ✔ Aug 18, 2026
As the engines of the two TWP games apparently differ pretty much, there might be tons of notable technical aspects and differences worth to write a blog entry about. So, I am excited about more such insights!
@Big Red Button, looking forward to sharing with you all as we dive in to development. There are differences from TWP1, and also from RtMI, but enough that's similar that I'm having fun rediscovering it all. And of course, I have the source code from TWP1, Delores, and RtMI that I can peek at if I want to remember how we did something before.
Guy Aug 18, 2026
Nose glasses? Have I been wearing glasses wrong this whole time?
Ian Malcolm Aug 19, 2026
Great post David! Look forward to hearing more from you - and other folks on the team of course, haha!
David Fox ✔ Aug 19, 2026
Look forward to hearing more from you - and other folks on the team of course, haha!
@Ian Malcolm you will!
Carlo Savorelli Aug 19, 2026
Can't wait to polaroid this and polaroid that in all locations!
Ron Gilbert ✔ Aug 19, 2026
I think David is planning a coup d'état and taking over the blog.
Jonny Aug 19, 2026
Hmmmm a photo of the fourth wall...
Andreadful Aug 19, 2026
Interesting take as usual!

Speaking of UI/UX, and I know it's probably too soon for that, I really hope that we don't get any shortcuts for uncombinable objects as we did in RMI. Or at least I hope we get an option for disabling it.

If combining two objects leads to a boring default response, so be it I say :)
Moonpie Aug 19, 2026
Photo album with the photographed scenes/objects :)
Johnny Nys (The Point 'n Clicker) Aug 19, 2026
It's posts like this that remind me why I stick to writing... :p
AlfredJ Aug 19, 2026
It truly is the most disgusting room in Thimbleweed 1 to take so many pictures. May we never find out what that gunk on the mirror is.
seguso Aug 19, 2026
Please don't make it so that while dragging an item, you can already see if it can be combined with the target before releasing the mouse button. Otherwise, it just encourages brute-forcing. If the goal is to get rid of the repetitive 'that doesn't seem to work' lines, you could just show a 'no entry' (prohibited) symbol on mouse release instead of the text. But on mouse release, not on mouseover. And if the item is combinable, show the full line for one second upon mouse release and then trigger the action.
Enlo17 Aug 19, 2026
Careful, Ron. We’ve seen this before. First David takes over the blog, then he discovers he has no free will, tries to delete the game, fails, and wakes up on the same blog again. The cycle continues.
Mads Aug 19, 2026
I noticed the "pixel perfect" option, and it reminded me of a question I had while replaying TWP1 recently, even though I'm not 100 % sure I'm right about what the option does (my guess is that it's about whether the "pixels" - which are actually blocks of much, much tinier pixels - are restricted to a grid with a unit size of one block, so they move like, well, single pixels). Anyway, regardless of whether I'm right about the function, it made me think about how character sprites and backgrounds are *individually* pixel perfect in their animations, but not pixel perfect with *each other*. And that's not a problem, to be clear, but I'm curious about whether that was ever a conversation, if the character sprite pixel blocks should be in lock-step with the backgrounds or not? And if so, did the final choice relate in part to the wibbly-wobbly screen effects used when playing Franklin (and also for flashback transitions), which is hi-res?

Sorry if this was addressed in the original podcasts, I somehow completely missed that those existed, despite backing the original Kickstarter.
Mk II Aug 19, 2026
Absolute LOVe
Ricardo Ratatour Aug 19, 2026
I love reading all the blog posts, but I especially look forward to the ones by pixel art master Mark Ferrari.
longuist Aug 19, 2026
Ralf already mentioned the toilet paper option. If this is removed and has no worthy follow up option, if will dislike TWP2 in the public for no reasonable reason!1
Kai Ohh Aug 19, 2026
Awesome, I can't wait for the game! Will it re-use the same art style / character art as well? It's something I adored about the old Lucas Arts games: no game used the same character assets. Monkey I and II look soo different, as do Indy 3 and Atlantis.
I really hope for an updated look of our main cast... But I guess it's more pragmatic to keep the current characters and just extend what you have. Which direction are you going?
Brian G Aug 19, 2026
Awesome. Love all the engine details. Keep em coming!
Brian G Aug 19, 2026
Serious question actually here. I am working on a pixel art short animation and looking into Aseprite as an option for making the frames. Would you recommend it as a tool? Or if not, something else?

In the past, I've used DPaint to do pixel animation, so these new tools are... new to me.

TIA
Henry Aug 19, 2026
That is a super interesting piece about a core part of the game. I believe knowing these kind of details makes you appreciate the final result even more.

I am curious though, how many potential animations actually remain inside. Imagine you always need to shot photos to your right side. Backwards, left, front, up down, mid would not be needed. Ok, some are just flips but still interesting to know.
Paul T Aug 19, 2026
Thank you David! Wow, it really is mind boggling to watch how the character animation sausage is made. Question, if you horizontally flip the right facing sprites to the left, would that prevent the characters from being able to have a unique item on their arms like watch? as it would be mirrored. I'm super excited about this, thanks for the updates and for giving us all something to be excited about!
Ron Gilbert ✔ Aug 19, 2026
Serious question actually here. I am working on a pixel art short animation
We'll probably use Aseprite for our cut-scenes, but those are short. I don't know about using it for a long animations like a film. Aseprite might have some limitations we've never hit.
David Fox ✔ Aug 19, 2026
@Henry: I am curious though, how many potential animations actually remain inside. Imagine you always need to shot photos to your right side. Backwards, left, front, up down, mid would not be needed. Ok, some are just flips but still interesting to know.
I would guesss the majority of the time it would be mid-right/left and mid-back. The high and low and front options would be less likely. When I first wired this up for Delores, I remember there were times when it just looked wrong to hold the camera in the mid position, so I was thankful I had the other options to make it look correct.
David Fox ✔ Aug 19, 2026
@Paul T: Question, if you horizontally flip the right facing sprites to the left, would that prevent the characters from being able to have a unique item on their arms like watch? as it would be mirrored.
Yes, you'd see the item flip to the other arm. If you go back to Thimbleweed Park 1, you'll notice that Delores' pony tail and purse get flipped when she's walking left vs right.

If it's an important feature that we don't want flipped, we can always create a specific left-facing animation for that character. It's just extra work.
Ron Gilbert ✔ Aug 19, 2026
I am curious though, how many potential animations actually remain inside.
All the core animation remained loaded in memory, maybe 20 with four directions. Special animation only used once are separate costumes and loaded when needed. One costume and be several Aseprite files and we load them all to make one costume, so the animator only has to deal with one type of animation at a time. This about file is called Reyes-camera.aseprite.
David Fox ✔ Aug 19, 2026
Ron G: I think David is planning a coup d'état and taking over the blog.
Too late, now that you gave me the ability to post, I may have already done this!
Menagex Aug 19, 2026
Very good news! Thanks!
LIKL Aug 19, 2026
j'achète
Brian G Aug 20, 2026
We'll probably use Aseprite for our cut-scenes, but those are short. I don't know about using it for a long animations like a film. Aseprite might have some limitations we've never hit.
That could be okay. What I have done in the past is just use a pixel art editor (like Dpaint) to make bitmap files, and then I use a Python script to sequence the frames and call FFmpeg from the script to spit it out as an MP4 file. I'm mostly looking for quality-of-life features that could speed things up.
:hal_9000: Aug 20, 2026
thats great news, so I can compile my own game. 🤪
El Barto Aug 20, 2026
I expected a crowd of people to show up and shout "What a pervert!" when Agent Reyes took a photo of the disgusting toilet :D
Erinaceus Aug 20, 2026
Cool! It's nice to get an insight into how the animations are made and what tools are used.

I have a question: I want to write a post on my private blog (non-commercial, I make no money at all) and would like to use one of the images ([link removed]) in that post. Can I get your permission to do so? If so, how should I credit you / write the copyright notice?
Zak Phoenix McKracken™ Aug 20, 2026
I imagine Agent Reyes yelling at some point, "Photos! PHOTOS EVERYWHERE!!".
Will this game be one of those detective games, where taking photos in certain locations will be a crucial part of the story?
MacBalance Aug 21, 2026
A compliment I will give to Thimbleweed park is after reading about the sequel I want to replay the original again.
oo00fx00oo Aug 21, 2026
2028, I'm getting old hope I will still be able to point and click by then :)
welthoelzer Aug 21, 2026
With animations being layered and separate for e.g. head and bpdy, does that mean one can easily have a common concept of "taking a photo" for agents, have them take the same basic arm movements but each make a different face, by basically composing a photo-taking arm animation with a different for each agent head animation? One agent smiles when taking a photo, another squints their eyes to not be blinded by the flash etc. -- Always fun to read about and then think about the technology that goes into making games.
David Fox ✔ Aug 21, 2026
@welthoelzer With animations being layered and separate for e.g. head and bpdy, does that mean one can easily have a common concept of "taking a photo" for agents, have them take the same basic arm movements but each make a different face, by basically composing a photo-taking arm animation with a different for each agent head animation?
Yes, theoretically we could do that. But we didn't feel there was a need to have talking or different expressions while taking the photos and instead just have one layer with the entire body and head and camera. Notice that Agent Reyes' eyes will look up or down when taking a high or low photo. It's easier to do that on one layer.

We did use alternate versions of heads in TWP1 with specific expressions, like shock (mouth open wide), crying, etc. We haven't brought those into the characters yet. It's likely we'll have other unique expressions we'll want/need when we get into production.
Please fill in this field. Aug 23, 2026
Its a shame you don't have separate head/bodies in engine. But I'm sure there's a reason. But games which do this can be so expressive.

Have you considered expanding at least playable characters to eight directions of walking cycle? Four directions feels bare minimum.

Will TP2 fix the mixels of the original game?
Ron Gilbert ✔ Aug 23, 2026
Its a shame you don't have separate head/bodies in engine
We do, it is not need for taking photos because they don't talk while doing it. Eight directions doubles the work for every animation.
8bitKittyKat Aug 26, 2026
As a long long time Aseprite enjoyer, I'm glad to see it being used for TWP2! I can't imagine using anything else for my own pixel art and animation. It's no Deluxe Paint Animation though! Ha. :)
Tom Hunter Aug 31, 2026
The most disgusting thing I have ever seen: to kneel down to take a photo in the Thimbleweed Park QuickiePal Bathroom :-)
Please fill in this field. Sep 03, 2026
OK, thanks.
David Fox ✔ Sep 13, 2026
@Tom Hunter The most disgusting thing I have ever seen: to kneel down to take a photo in the Thimbleweed Park QuickiePal Bathroom :-)
Is that a challenge? I’m sure we can top that in TWP2!

Add comment: