define
, image
and default
aren't them. Plus those pitfalls... you really have to work hard to screw up that badly.default
variables you create, the larger save files will become. But again, it's VERY unlikely you're ever going to hit any limits as long as you just do "normal" stuff. Plus is just a tiny file on disk... who cares?!?Until the porting to Python 3.x is finished, it depend on the 2GB limit of Python. But this regard only the variables, therefore, as 79flavors said, it's not something that will be easily reached.I don't think Ren'Py has a hard limit.
ALL your "thinking" characters are named just "Thinking" and player would need to mentally link their font color to their respective names.
So, you might want to add their name to those definitions (or just get rid of them and go for the commonly accepted use of italics in textbox to show character's thoughts)
define narrator = Character("", what_color="#FFFF00")
define p = Character("[persistent.pname]", color="#FF0000", what_prefix='"', what_suffix='"')
define kar = Character("Karen", color="#FFFF00", what_prefix='"', what_suffix='"')
define ken = Character("Kendal", color="#A52A2A", what_prefix='"', what_suffix='"')
define mol = Character("Molly", color="#FFCC00", what_prefix='"', what_suffix='"')
define molmary = Character("'Mary'", color="#FFCC00", what_prefix='"', what_suffix='"')
define emi = Character("Emily", color="#33CC99", what_prefix='"', what_suffix='"')
define sar = Character("Sarah", color="#FF33CC", what_prefix='"', what_suffix='"')
define san = Character("Sandra", color="#33CC00", what_prefix='"', what_suffix='"')
define mar = Character("Mary", color="#FFCC66", what_prefix='"', what_suffix='"')
define cla = Character("Claire", color="#009900", what_prefix='"', what_suffix='"')
define che = Character("Chelsey", color="#FF3399", what_prefix='"', what_suffix='"')
define amy = Character("Amy", color="#CC9933", what_prefix='"', what_suffix='"')
define p_t = Character("[persistent.pname]", color="#FF0000", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC")
define kar_t = Character("Karen", color="#FFFF00", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC")
define ken_t = Character("Kendal", color="#A52A2A", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC")
define mol_t = Character("Molly", color="#FFCC00", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC")
define molmary_t = Character("'Mary'", color="#FFCC00", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC")
define emi_t = Character("Emily", color="#33CC99", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC")
define sar_t = Character("Sarah", color="#FF33CC", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC")
define san_t = Character("Sandra", color="#33CC00", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC")
define mar_t = Character("Mary", color="#FFCC66", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC")
define cla_t = Character("Claire", color="#009900", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC")
define che_t = Character("Chelsey", color="#FF3399", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC")
define amy_t = Character("Amy", color="#CC9933", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC")
what_prefix
and what_suffix
to add either the "
characters or the (
and )
with italics. And what_color
to change the dialogue to light grey for thinking.Well, their hair color matches their name color, so it's pretty easy to match names due to that.Considering you have nothing to fear from software's memory side of things, biggest problem I see might come from player's memory. ALL your "thinking" characters are named just "Thinking" and player would need to mentally link their font color to their respective names. Depending on the nature of game's scenes and interactions this could be somehow confusing. So, you might want to add their name to those definitions (or just get rid of them and go for the commonly accepted use of italics in textbox to show character's thoughts)
That is kind of a good idea, problem is with the font I'm using italics don't really stand out, however, I have been looking for a way to do thinking without putting "Character Thinking"Good catch. I'd missed that completely.
Yeah. Something I'm trying to do more and more these days is have speaking characters say things with double quotes around the text and thinking characters say things within parenthesis and with italics. The other things I tend to tweak is to have any narration (any said without it being a specific character) in yellow and alter the color of any "thinking" text to be very light grey rather than pure white. Thankfully all that can be done with the Character() definition and not something you need to do with every line of dialogue.
My version of these same definitions would look something like:
Python:define narrator = Character("", what_color="#FFFF00") define p = Character("[persistent.pname]", color="#FF0000", what_prefix='"', what_suffix='"') define kar = Character("Karen", color="#FFFF00", what_prefix='"', what_suffix='"') define ken = Character("Kendal", color="#A52A2A", what_prefix='"', what_suffix='"') define mol = Character("Molly", color="#FFCC00", what_prefix='"', what_suffix='"') define molmary = Character("'Mary'", color="#FFCC00", what_prefix='"', what_suffix='"') define emi = Character("Emily", color="#33CC99", what_prefix='"', what_suffix='"') define sar = Character("Sarah", color="#FF33CC", what_prefix='"', what_suffix='"') define san = Character("Sandra", color="#33CC00", what_prefix='"', what_suffix='"') define mar = Character("Mary", color="#FFCC66", what_prefix='"', what_suffix='"') define cla = Character("Claire", color="#009900", what_prefix='"', what_suffix='"') define che = Character("Chelsey", color="#FF3399", what_prefix='"', what_suffix='"') define amy = Character("Amy", color="#CC9933", what_prefix='"', what_suffix='"') define p_t = Character("[persistent.pname]", color="#FF0000", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC") define kar_t = Character("Karen", color="#FFFF00", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC") define ken_t = Character("Kendal", color="#A52A2A", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC") define mol_t = Character("Molly", color="#FFCC00", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC") define molmary_t = Character("'Mary'", color="#FFCC00", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC") define emi_t = Character("Emily", color="#33CC99", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC") define sar_t = Character("Sarah", color="#FF33CC", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC") define san_t = Character("Sandra", color="#33CC00", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC") define mar_t = Character("Mary", color="#FFCC66", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC") define cla_t = Character("Claire", color="#009900", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC") define che_t = Character("Chelsey", color="#FF3399", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC") define amy_t = Character("Amy", color="#CC9933", what_prefix='{i}(', what_suffix='){/i}', what_color="#CCCCCC")
Usingwhat_prefix
andwhat_suffix
to add either the"
characters or the(
and)
with italics. Andwhat_color
to change the dialogue to light grey for thinking.
The result is something like:
You walk into the kitchen...
Player : "Good morning everyone."
Karen : "Good morning, Player."
Sarah : "Hey there."
Player : (Damn, Sarah looks good this morning.)
You hear someone else coming down the stairs...
Emily : "Oh good, everyone's already up."
... and, in my opinion, makes it very clear when someone is thinking, speaking or it's just narration.
[...] problem is with the font I'm using italics don't really stand out
By the way, can I put all of the names under a label so that I can collapse them(to keep everything organized)?
Character()
statements at (or near) the top of the script.rpy
file. I've been known to create a new script file called characters.rpy
. RenPy doesn't especially need things to be organized... that's purely down to your own view of your code. Put stuff where you'd like.Yeah, if they are going to be alone on screen the name may not be needed. I was thinking in more complex scenes, with characters thinking while talking to others and with more people on screen (like Char1 says something, Char2 thinks something then Char3 answers loud before Char2 says anything, etc) But with that artstyle and hair matching name colour you'll be good enoughWell, their hair color matches their name color, so it's pretty easy to match names due to that.
View attachment 1145338
View attachment 1145337
That is kind of a good idea, problem is with the font I'm using italics don't really stand out, however, I have been looking for a way to do thinking without putting "Character Thinking"
By the way, can I put all of the names under a label so that I can collapse them(to keep everything organized)?
I'm relatively tired so I'll not try to code it, but there's surely something that can be done by using the parameters available with the say statement.Yeah. Something I'm trying to do more and more these days is have speaking characters say things with double quotes around the text and thinking characters say things within parenthesis and with italics.
label whatever:
mc "Wow, mom have really big boobs !"( state="thinking" )
screen say(who, what):
[...]
style "namebox"
if sayParam["state"]: # Imaginary code, it depend how the parameters are stored.
text ( "{} {}".format( who, sayParam["state"] ) id "who"
else:
text who id "who"
Character
object is needed by character, and the player still have the explicit nature of the dialog line.I'll definitely give it some thought.Italics are used in some games for thinking.
Parenthesis are used in some games for thinking.
I just combined the two for added emphasis and used color to further show the difference.
I don't see any reason why you couldn't just use the parenthesis and color only. Hell, use italics too - even if it's only a minor difference.
I mean putting it like this:It's not clear to me what it is that you're asking.
It's normal to put allCharacter()
statements at (or near) the top of thescript.rpy
file. I've been known to create a new script file calledcharacters.rpy
. RenPy doesn't especially need things to be organized... that's purely down to your own view of your code. Put stuff where you'd like.
Actually, I was thinking of leaving it the name up there the same in both cases, the only difference is the name turns grey when they are thinking. I know it's popular to have the MC have a constant running dialogue when in conversations, but personally I dislike it. Whenever two people are in a scene, unless I absolutely need to, I prefer to get my point across through dialogue. This is because I think that one only talks to themselves when they are alone as a conversation moves too fast for you to consciously mull over every single statement, there is also the more practical reason of it breaking up the flow of a conversation when a character has to stop and monologue his reaction every single line.Yeah, if they are going to be alone on screen the name may not be needed. I was thinking in more complex scenes, with characters thinking while talking to others and with more people on screen (like Char1 says something, Char2 thinks something then Char3 answers loud before Char2 says anything, etc) But with that artstyle and hair matching name colour you'll be good enough
init python:
class PCharacter:
def __init__(self, name, color):
self.say = Character(name, color = color)
self.think = Character('{i}Thinking{/i}', color = color)
define karen = PCharacter('Karen', '#ffff00')
define kendal = PCharacter('Kendal', '#a52a2a')
karen.say "Hello World!"
karen.think "♪ Somebody once told me ♫"
karen.think "♪ The world is gonna roll me ... ♫"
init python:
class PCharacter:
def __init__(self, name, color):
self.think = Character(name, image="", who_color=color, what_color="#ddd", what_prefix="{size=-5}{i}", what_suffix="{/i}{/size}")
What does "def" and "__init__" do?As many said it's virtually impossible to reach the limit of variables.
But you do have alot of variables, so you could put them in a different file for organization, and/or do something like this.
Python:init python: class PCharacter: def __init__(self, name, color): self.say = Character(name, color = color) self.think = Character('{i}Thinking{/i}', color = color) define karen = PCharacter('Karen', '#ffff00') define kendal = PCharacter('Kendal', '#a52a2a')
Python:init python: class PCharacter: def __init__(self, name, color): self.think = Character(name, image="", who_color=color, what_color="#ddd", what_prefix="{size=-5}{i}", what_suffix="{/i}{/size}")
What does "def" and "__init__" do?
def
and __init__
are python. They are used to create custom functions and classes. def
is python's "define" (different from RenPy's define
). __init__
is a reserved name of a function that is executed when the structure is initially created (You say "create this thing" and the first thing that happens is that python looks to see if there's an "__init__" that needs running during it's creation).I mean putting it like this:
So when I'm not using them, I can just collapse it like this:
define x = Character()
statements to a new RenPy file. Something like characters.rpy
.define
, image
or default
are within the code. During game startup, RenPy scans for all these type of statements and processes them regardless of where they exist.if
statement) and they can be in any .rpy
file, named anything.label start:
. It doesn't need to be the top of script.rpy
, just the top of any script file (hence the suggestion for characters.rpy
).