Part3:
I like what you are doing this and I want this to succeed. I want to see more of good mouth flaps. However, when I see the code provided. I see multiple points I feel I shouldn't just leave like that.
So, here's some thing I'd suggest. Maybe you can learn too, the same way this presentation had things for me to learn.
Oversampling
Ren'Py already comes with oversampling out-of-the-box. You only need to use the "@" in the file name and Ren'Py takes care of oversampling for you.
Manual: https://www.renpy.org/doc/html/displaying_images.html#oversampling
Namespacing
I'd like if this example also made use of namespacing. In this case, it involves making us of the "in" modifier for python init.
E.g.
Instead of:
init python:
do:
init python in flapsAndBlinks:
This avoids clashing with functions of other libraries or the VN maker's
Choice
When doing choice, reduce repetition. Make use of the simple expression whenever viable. Ren'Py caches these expressions.
E.g.
alpha 1 choice: closed_eyes choice: closed_eyes choice: closed_eyes pause 0.05 alpha 0 pause 0.2 alpha 1 closed_eyes pause 0.05
->
alpha 1 closed_eyes choice 2: pass choice: pause 0.05 alpha 0 pause 0.2 alpha 1 closed_eyes pause 0.05
-----
alpha 1 choice: pause 0.1 mouth_open pause 0.1 mouth_half_open repeat 3 choice: pause 0.1 mouth_open pause 0.1 mouth_half_open repeat 6
->
alpha 1 pause 0.1 mouth_open pause 0.1 mouth_half_open choice: repeat 3 choice: repeat 6
(code is hard to type in itch....)
WhileSpeaking is intelligently made
The way you do this is smart:
def WhileSpeaking(name, speaking_d, done_d=Null()): return DynamicDisplayable(curried_while_speaking(name, speaking_d, done_d))
Finally
Thank you for making this tutorial. I hope it's picked up by many people and this can be used by many more people.