Dynamic characters aren't that hard. Since I've had some really bad experiences with the wiki being inaccurate, or not descriptive enough, I'll help you out a bit. Here is the code I use to apply a dynamiccharacter for the protagonist of my story.
$ a = DynamicCharacter("q", color="#FFFFFF", show_two_window=True)
$ q = "q"
EDIT: For the record, replace the color code with whatever color you want, and simply remove the comma and everything after that until the parentheses ends if you don't want the name in a separate window. I just think it looks prettier that way.
I put the dynamic character as a, since I'll be using him very often, and then q is required to actually name him. To make a dynamic character requires two strings, the dynamic character string refers to the string in quotations and takes whatever is within that string. For example, you can have a default name inside that string, or a name for the a string to say up until you name him, like 'mysterious stranger' or just 'protagonist'
I'm guessing you know how to make choices? Just add the string....
$ q = "Name"
In front of the choice made to change their name to that from then on. This way, you can write one script for two characters, only diverging into character specific portions when needed.
For something more complicated, namely, allowing them to name the character themselves....
$ q = renpy.input("My name is...?") or "Default Name"
This will allow you to change the name based on player input, you can do this if, rather than having premade characters to choose from, you simply want them to be able to choose a name to call the main character. This is places instead of the usual question. Another useful bit of code is
This will say whatever is inside of the string q in normal speech, which in the case that you just copied my code word for word, would allow other characters in the story to call your character by name.
Any more questions? This is all what I've personally figured out, so if anyone has any corrections, step right in.