A bit back (March of last year for the most part lol) I wanted to make a custom version of the popular Renpy engine that was capable of handling things like weight gain in a more dynamic matter.
What I ended up doing was producing a new displayable type called dynamic displayables or DDs that can be configured with custom properties like weight or size and then be configured to change what sprite is displayed according to those properties.
Its quite handy as now instead of having to type something like:
show character1 veryfat smile
you can now type
show c1 smile
and the engine will make sure the correct image is displayed if the conditions are met.
Right now I only have a small hacked together prototype release that is based off of a version of renpy that is a bit out of date. There is an example project though called Here Kira Comes
that shows some of the basic concepts on how to use the modified engine.
Please keep in mind there are a few small bugs in the engine atm (the most major one is the state not being saved correctly in some instances after a choice has been made). I do hope I can get back to working on this project a bit more when I have time but for right now I wanted to release what I had in case anyone wishes to take a look at it.