Going to dive a bit into the code for this one 🧵

I mentioned awhile back that I'd come up with an idea for a way to automate dialogue animation with basically no extra work. The above is the result!

My original plan was to just have a static open and closed version of each facial expression depending on who was talking.

Here's what the script for the new conversation looks like. A mix of native Chatterbox/Yarn and Scribble markup plus some of my own custom stuff. Details in alt text.

The real driver of all the portrait stuff is the markup:

[character_name,expression]

Which runs this GameMaker GML function.

Breaking that function down. It's designed for both flexibility and laziness.

First look for stage direction keywords. Right now that's just "exit" which lets me force a portrait to exit the screen before the conversation ends. I plan to add more.

If it doesn't find a state it looks to see if I have an appropriately named sprite in my project and runs a generic state that just loops the animation. So I can just drop a new image file into GameMaker and it's immediately accessible to the dialogue scripting system, no extra setup needed!
All the two frame talking animation files end with the suffex "_talk". When the function spots this in the expression string, it loads a different generic state with all the talk animation logic in it. Again no setup, it's entirely filename driven.
Here's the talk state code. It checks Scribble's "typist" to see if the text bubble is in the process of typing out text. If it is typing that frame then the animation runs + adds a little tween bob up and down on the portrait for extra juice.

if the typist isn't typing text this frame, it sets the mouth to the closed frame and pauses the animation, but lets the bob tween complete.

This means that the mouth flaps match up with the text typing and the result looks pretty close to hand keyed animated mouth flap without all the effort.

Obviously in a world in infinite art resources, fully animating these with proper phoneme shapes would look even better.

But realistically that's completely out of scope for a one artist game. I think this strikes a nice balance between that and just doing simple static images!

Bonus #screenshotsaturday!

After you talk to the elf you'll get this extra bit of text when examining the stone egg again.

Chatterbox makes it very easy to add little hidden bits of dialogue like this. Great library!
#goblingirlgame #gamemaker

Someone on bluesky mentioned this ancient meme and I felt compelled.

Have enough game now in #goblingirlgame that I made a little demo with a tutorial so I can throw it in front of friends.

I do a regular library work session with
@matthammill once a week, and we've been referring to this state as our respective projects being "game shaped now"

Definitely making #goblingirlgame for a very specific kinda retro games sicko, while also inviting others to join us.

Late night #screenshotsaturday!
Getting back to some gameplay portrait fun, adding this quick toothy grin for picking up chests and other important items.

#indiedev #GoblinGirlGame #gamemaker #pixelart #ドット絵

If you're wondering, did I animate a version of this grin with all her portrait damage states, for both attacking and defending? Yes, yes I did.

#indiedev #GoblinGirlGame #gamemaker #pixelart #ドット絵

Haven't posted about it, but I was able to work full time on #GoblinGirlGame over the summer thanks to a grant from Ontario Creates.🍁

I submitted my final report this week, so I'm back to balancing dev on #GoblinGirlGame with contract work. That means updates will be a little slower for awhile. Though I'm hoping to keep up the regular Screenshot Saturday posts if I can!

Been mostly doing behind the scenes work on #GoblinGirlGame this week. Stuff like refactoring most of the in game text to work with Chatterbox. So here is a set of cute cactus enemies from my "enemy ideas sketch file" for #screenshotsaturday.

#pixelart #gamedev #indiedev #ドット絵

No promises these will make it in, not sure if there will be an appropriate dungeon biome or not. But I really like this bunch.

Razor Shroom, the next enemy I'm animating for #GoblinGirlGame

#screenshotsaturday #pixelart #ドット絵

This week I'm sharing an older mockup I haven't shared in full before for #screenshotsaturday. This is 1/2 of a two screen character respec menu you access between dungeon floors in #GoblinGirlGame

#gameui #pixelart #ドット絵 #indiedev

Haven't made a lot of progress on #GoblinGirlGame this last month. October has been super busy due to a glut of contract work coming in at the same time a family member was hospitalized. Just a real bad confluence of events. Hoping to have new stuff to show soon.
The upside of solo/small team dev is that *theoretically* you're more agile, downside is that when life interferes all progress kinda unavoidably grinds to a halt.
My current travel work setup I animated this on, pretty similar to what I used when travelling Japan last year. Just has waaaay more stickers on it now!
Chatterbox's implementation of Yarn continues to be great for just messing around with dialogue and text. I wrote a few intro sentences and memories to test this fireside memories idea and now it randomly combines them when you look at the fire.

This fall continues to do everything it can to slow down dev (RSI wheee!) so for #screenshotsaturday here's another #GoblinGirlGame early mockup I haven't posted, showing off a potential outdoor tileset for the dungeon.

#indiedev #gameui #pixelart #ドット絵

For #GoblinWeek: a whole bunch of the portrait expressions I've drawn of the goblin girl protagonist for my still untitled, Tower of Druaga-like. Love drawing her so much!

#GoblinGirlGame #pixelart #ドット絵 #indiedev #monstergirl

Had to add a new function to my Chatterbox/Yarn based dialogue system for this. I can now interrupt dialogue to have a character portrait perform an animation. In this case the human kneeling down to the goblin's height.

As usual here's the yarn script for this scene:

Because Chatterbox custom functions trigger as soon as the next line of dialogue is received this required a bit of an awkward rewrite of my system, but I think it'll be worth it. Opens up the possibility for some fun performances in the future that use "gestures" in more dramatic ways.
3:06 PM · Feb 14, 2026
I'd usually add a bit of follow through/secondary animation to something like this, but since this has to run forwards and backwards at multiple speeds (sword drawing speed is based on a stat!) that wouldn't work.
Getting ready to switch back to goblin girl game play stuff soon, and figured getting in one of the gameplay portraits I've been thinking about for months would be a good step in that direction.

Mushrooms grow in dank dark places... like dungeons!

#screenshotsaturday #GoblinGirlGame #indiegame #indiedev #gamemaker

These were a "happy accident" addition to the game. I'm in the middle of adding mobile monster mushrooms at the moment, but realized while testing that I only needed a couple lines of code to also have regular variety mushrooms that act as walls you can destroy with your sword.
There are some other super easy to implement variations on this idea I'm going to add soon, mostly just need to draw the art!

The feeling when you have to touch the collision code again.

#screenshotsaturday #GoblinGirlGame #gamedev #indiedev #gamemaker

"I'll do bump combat! How hard could it be?"
Me a fool.
At some point I need to do a detailed breakdown of how I'm handling #GoblinGirlGame 's bump combat. The unique needs of Druaga style maze gameplay combined with the fact that in bump combat, attack hit-boxes and character hurt-boxes are a single shared box has been an interesting design challenge.
A small part of that is that every attack has it's own separate I-frame counter. That's why in the video above you see her flinch twice, then a pause while the I-frames run down for each of the spike walls, then two flinches again as she becomes vulnerable to each again.
Hitting the spikes is technically considered combat since every bump is a round of combat regardless of whether the player or enemy/hazard is visibly attacking. The goblin is just bump attacking with a 0 damage attack and the spikes with a 1 damage attack.

The feeling when you wake up and completely destroy that pesky collision bug.

#screenshotsaturday #GoblinGirlGame #gamedev #indiedev #gamemaker

It's funny the contrast between how low-key a screenshot Saturday video can be vs how productive the work behind it was.

Eg. This week's simple spiked barrier represented:

That'll be a big head start on some much more complex enemies I have planned for the future, plus allows for a bunch of simpler enemies and traps I hadn't even planned for.