As you have seen, I haven't asked for a solution. I have asked for docs where I could learn how to build the solution.
And you can see, you asked without knowing what you actually need to know about. The rollback is just the tip of the iceberg you've to deal with when creating an equivalent to the "say" statement.
I'm also tempted to say that there's way more to learn by tweaking the "say" screen and playing with the say arguments, than by rewriting a "say" statement equivalent from scratch. Knowing the fundamental concepts behind Ren'Py is useful; yet 75% of Ren'Py devs don't know them. But knowing how they actually operate is useless. Especially since this can change from a version to another, without the behavior itself being affected by that change.
It's by example what happened with the 7.5.x/8.x branches of Ren'Py, when the screen language was finally separated from its roots. What was true before those the 7.5.0 and 8.0.0 versions (all screen language statement have an
ui
equivalent that can be used to build a screen and inside creator defined displayable) stopped to be true. All the screen language statements added starting those version are totally independent of the old obsolete
ui
structure.
After all, Ren'Py languages are its script language, screen language, and it's animation and transformation language. It's what one have to learn to use in order to efficiently deal with Ren'Py. It's only once assimilated that diving a bit further, can possibly help, through the creator defined statements and displayable.
But starting there is mostly a lost of time. It's like wanting to know how to sprint before knowing how to walk. It's something totally possible, it would create a strong perception bias that would then follow you all your life.
Whatever the situation, "running" would be your first option. Someone knock at the door? You'll run to it. You want to eat something? You'll run to the kitchen. Then will come situations where running isn't appropriated, like by example stairs. Yet, due to the perception bias, you'll pass a really long time trying to find a way to safely run through them, and only remember that "walking" is also an option after you injured yourself long enough.
And the same would apply for Ren'Py, whatever you want to do, your answer will be "Python", even if there's already something, bug proof and easy as hell, that exist in Ren'Py language.
Where can I find information about "interactions"? It seems it is the core for understanding checkpoints and rollbacks, as points anne O'nymous
Not just checkpoints and rollbacks, that in fact are the same things. It's the core of all Ren'Py process.
And there's just no information about them. They aren't even clearly defined, otherwise than by their importance, in the doc. Even diving in the core code wouldn't answer the question, because it's more a concept than an actual thing.
The "say" statement is an interaction, as are
call screen
that is something totally different, and
input
that is yet again something radically different.
It's like when planning a long journey. You will get something like:
- Drive to the train station;
- Take [whatever] train to [whatever];
- Take a taxi to the airport;
- Take [whatever] plane to [whatever];
- Take a taxi to the hotel.
[/quote]
Each entry in the list imply something different, but each one would be an interaction because explicitly marking a step of the journey and all implying a stop.
This being said, creating your own interaction is relatively easy, and even explained in the doc; I gave you the link to this part:
Python:
# Automatically populate the rollforward structure, if it have to.
roll_forward = renpy.roll_forward_info()
# Do whatever you have to prepare the interaction.
# Start the interaction and get the return value useful only in case of actual input interaction.
rv = ui.interact(roll_forward=roll_forward)
# Automatically populate the rollback structure.
renpy.checkpoint(rv)
But this will still not solve the issue with the auto-forward, nor the one with the "skip" feature. Both playing a big role in the reason why peoples prefer Ren'Py games. This is intended for creator defined statement that would, for a reason or another, need to create a new kind of interaction or, if you remove the ui
call, want to enforce a rollback/rollforward entry.