How many dialogue choices can Ren'Py handle?

idontwantone

New Member
Dec 15, 2017
11
151
Is there a cap on the dialogue choices and pathways that are available when using Ren'Py? Sorry if this seems like a lazy question, I just wanted to know before I commit to learning about game making. And I tried looking it up myself but the best I got was for menu choices and a bunch of out dated wiki pages.

And if there is a cap, what about Unity?
 

recreation

pure evil!
Respected User
Game Developer
Jun 10, 2018
6,278
22,425
I don't know of any limit, but I've never looked it up, so maybe there is. What I can tell you is that dialogue choices are menu choices, so if you find some info regarding menu choices, then it also applies to dialogue choices.
 
  • Like
Reactions: idontwantone

Porcus Dev

Engaged Member
Game Developer
Oct 12, 2017
2,582
4,692
Excerpt from documentation:
"Menu choices can be as long as you like, and you can have as many of them as you like, provided that they can all fit on the screen"
 

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,376
15,289
Excerpt from documentation:
"Menu choices can be as long as you like, and you can have as many of them as you like, provided that they can all fit on the screen"
Regarding this, with the default menu, you can fit 10 choices at once in a 1080 height. If you change the style to have smaller buttons and less space between each, you can fit 20. And if you tweak both the style and the screen itself, to use two columns, you can go up to 40.
But this is just the technical limits. There's also a logical limits, and it's the one that effectively matter.

Having to choose among 10 possibilities offered at once is something relatively heavy for the player. And in top of that many of those possibilities would be looks alike. Unless you present them as "positive and nice answer", "positive and angry answer", and so on, it will be difficult for the player to differentiate the different possibilities and find the one he want to pick.
It's way better to split the process in a succession of smaller choices. At first the player decide what will be his action/answer, then how he'll do it, and so on, step by step. Something like :
Code:
menu:
    "Do you want to eat with me tomorrow ?"
    "Yes":
         "Yes, why not"
         menu:
             "But only if you pay":
                  "You do this because you know you messed and want to apologize, right ?"
                  [...]
             "I would be glad to":
                  "I hope you don't do this as a form of apologize for what you did yesterday ? It was nothing, you know."
                  [...]
    "No":
         "It will not be possible"
         menu:
             "But the day after I'm free":
                  "I already have something planed today, but if you want we can postpone it by one day."
                  [...]
             "Who you think you are ?":
                  "After what you did yesterday you think that I can still want to eat with you ? Really ?"
                  [...]
Something like this will always be better than a bunch of answers presented all together. It will also be a little more challenging for the player.

If they have to choose between :
  • Unconditional yes
  • Yes, but...
  • Not this time
  • No and never again
Most players will choose the "yes, but...", because it feel like the right answer ; it keep the relationship opened, but the MC is in control. And the second chosen option would probably be "not this time", because it assert MC's control, while not ending the relationship.

But if the choice are :
  • Yes
    • Unconditionally
    • Under condition
  • No
    • For this time
    • Forever
Come the need to think. The player don't know that behind the "yes" he will still have the possibility to put the MC in control. Like he don't know that behind the "no" he'll still have the possibility to keep the relationship with this character.
Therefore, the player have to make a more tough decision. Did he want to continue the relation, even if it mean that he'll perhaps no have the possibility to express his anger after what happened yesterday, or did he want to express his anger, with the risk that it will end the relationship ?
 

megaplayboy10k

Well-Known Member
Apr 16, 2018
1,523
2,028
2 choices, followed by another two choices, followed by another 2 choices, gives you 8 options total.
I think having a long list of "activity options" is nice, though aesthetically you could break it down into submenus after the first choice is selected(e.g. "oral sex"--A. Perform oral sex on her, B. She performs on you--you stand she kneels. C. You lie down she gets down on it. D. She lies down, leans her head back you go in. E. 69) Multiple dialogue options is fine for a one time "info dump"--you are asking a character about important background information you need later in the game.
 

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,376
15,289
I think having a long list of "activity options" is nice, though aesthetically you could break it down into submenus after the first choice is selected(e.g. "oral sex"--A. Perform oral sex on her, B. She performs on you--you stand she kneels. C. You lie down she gets down on it. D. She lies down, leans her head back you go in. E. 69)
If you need the basic menu statement of Ren'py for the "activities", you've failed your user interface.
Not only you'll need to use the menu, and possibly also menu choice, parameters to have it look different, and not be displayed on top of the content, but you'll also have less flexibility, and more constraints, than with a screen displayed as overlay(-like).

Note: I wrote it as pure example, it will not directly works without few adjustments. But it have the advantage to present the two logic in a basic way that don't depend of how the animations are made.
Code:
label whatever:
    [...]
   $ actualMovie = "missionary"
   jump sexLoop

label sexLoop:
    scene expression actualMovie
    menu:
        "69":
            $ actualMovie = "69"
            jump sexLoop
        "cowgirl":
            $ actualMovie = "cowgirl"
            jump sexLoop
        "cum":
            jump sexCum

label sexCum:
    "you cum"
Versus:
Code:
label whatever:
    $ actualMovie = "missionary"
    call screen sexScreen
    "you cum"

screen sexScreen():
    add actualMovie

    vbox:
        posx 0 posy 0
        imagebutton:
            auto "69_%s"
            action SetVariable( "actualMovie", "69" )        
        imagebutton:
            auto "cowgirl_%s"
            action SetVariable( "actualMovie", "cowgirl" )        
        imagebutton:
            auto "cum_%s"
            action Return()

Multiple dialogue options is fine for a one time "info dump"--you are asking a character about important background information you need later in the game.
"Info dump" is something that shouldn't exist. The information should be found in the dialogs and by the way the characters act and react, not fed to the players. It's supposed to be a discussion between two peoples, not a cop's investigation. And even when asking about a specific subject, no one will stay silent for five minutes, like it generally happen in case of "info dump".

If at a given time an author have to give a lot of information at once, then he messed with his story pace and there's probably few scenes missing before this point.
If the player need to know what his sister want to do during the summer, it's better to write a scene when the MC will overheard her talk about this over the phone, than the usual diner time when he'll ask a shit ton of questions to every female member of the family. If the player need to know what's the mother job, she can just talk about it, giving piece after piece, saying that today she'll have to [whatever] during the breakfast, or complaining about what she did today, when she'll come back tired and the MC will use this opportunity to massage her.
 
  • Like
Reactions: palemaster