What you want isn't exactly learn how to use Ren'py, but more learning how to make a game, that will happen to be made with Ren'py. Therefore, you should probably approach the problem this way.
You can directly learn how to use Ren'py, it's, relatively speaking, easy to do. Just open the doc, and for each point you read, make it in practice until you're sure to have understood it. But once it will be done, you'll still have to learn how to make a game.
Or you can do the opposite, starting a project in Ren'py, and writing some stupid story. It doesn't matter if the dialogs are lame, it doesn't matter if the images are a bunch of pictures totally unrelated, and sometimes not accurate in regard of the situation, that you found on internet. What matter is that you're making a game where the dialog lines and images differ from each others.
By example, you can write the story of yourself looking for your cat, or any other pet. You'll have to looks into the different rooms of your house, go outside and ask the neighbors if they saw him. This way you'll have to pass through the basis of a game.
Take your time, write it basically at first, like a pure Kinetic Visual Novel. No question asked, just you moving from a place to another, talking to people, and finally finding your cat. You'll practice writing dialog line for the different characters and displaying images.
Then start to split it, having simple menus. Things like:
- Search in the kitchen.
- Search in the living room.
- Search in the bedroom.
and so on.
You'll have to split what you've already wrote into different labels, depending of the related room. What will make you practice labels, branching and basic menus.
Once it's done, make this more realistic, having a different scene if you already searched in "this room".
Then do the same for the interactions with the neighbors, starting to make interactive dialogs. Once again keep it simple, it can be just :
- How are you today ?
- You look beautiful today.
Keep track of the choice, and make the neighbor talk more friendly if you said she look beautiful. It will make you practice variables and alternative dialog lines.
And continue to extend the mechanisms of this story with all the idea you can have, but still don't overdo it.
You can by example add a time tracking system, using big values to advance it ; by example searching in a room will take you a full hour. This way, you'll have to practice how to change the greetings to your neighbors. "Good morning", "Good evening", and so on.
The neighbors can be absent at some times of the day, or doing different things depending of the hour.
You can also have one that will say "Well, it's not a so good day, I have a meeting with my boss", in the morning and, "well, better than I expected. I had a meeting with my boss this morning, but it was to tell me that I'm promoted", in the evening. You can even decide that you can meet him twice in the day. And depending if you met him in the morning or not, the way he'll talk about his meeting will change. Something like, "I have a meeting..." and, "Oh, by the way, remember the meeting I talked about this morning ?" The same change happening if you met him in the morning, but not asked him how he's doing (what imply that he don't told you about the meeting).
For the final step, add clues.
In the house they are objects you've to click on, what will make you practice screens and
imagebutton
. And outside the house, it's things that the neighbors will say if you ask the right question.
Each time you found a clue, increase a counter. And the final scene will be something like :
Code:
label final:
mc "Oh, now I know where my cat is"
if numberOfClues < 5:
mc "Hmm... In fact no, I have absolutely no idea where he can be."
jump badEnding
elif numberOfClues < 10:
menu:
"he's either..."
"At the park":
jump parkScene
"Near the pound":
jump happyEnd
else:
mc "he's at the pound"
jump happyEnd
Congratulation, you've finished your first game.
Face to each "problem", just take the time to think about it.
- How could you solve it in theory ?
- What Ren'py offer to solve it in practice ?
- How can make the practical solution offered by Ren'py looks like your theoretical solution ?
Using the doc every time it's needed.
Also don't hesitate to search if there isn't others possible solution, and to practice them. This can be done by looking at other games to see how they solved it.
But there's a catch you need to always keep in mind when you look at what others did. They can know even less than you and have used a dumb solution that only works because they have a lots of luck. The worse part being that, like many learn simply by copying what other did, those solutions are sometimes the most used.
There's by example a (way too) big number of games that use things like:
Code:
show screen navigation
jump wait
label wait:
pause
jump wait
It works, but it's absolutely not how they should have wrote it, since a simple
would have done the same, have done it way better, and have done it without risk of side effects.
By itself it's not a problem, "it works". But this approach hide to them a big part of what a screen can effectively do, what limit the way they can improve their game, or simplify their code.