Any thoughts for an "introduction to RenPy" style tutorial?

79flavors

Well-Known Member
Respected User
Jun 14, 2018
1,607
2,256
Every since I joined the site, one thing I've had in my head is to write up a "Introduction to RenPy" style tutorial.
Something for all those would be developers with no experience of programming or rendering or anything - but who like games and have decided that they'd like to take a crack at writing one.

I finally got around to making a start last week. It's not especially hard and in a lot of ways is just a merger of a lot of posts I've made replying to people over the 18 months or so since I joined the site and the questions I asked early on.

I'm mentioning "rendering" and stuff in very general terms - but focusing on the programming side of things.

So far, I've got this as an outline.
Edit: Updated outline to reflect current progress.

  • A Newbie Guide to creating your first (linear) RenPy game.
    • So what is RenPy?
    • Why use RenPy?
  • So you want to create a game?
  • What software will I need?
  • Getting started.
    • Installing the RenPy Software Development Kit
    • Configuring the RenPy SDK
    • Installing or selecting a text editor (Atom.IO)
    • Something to create the images displayed by your game.
    • Graphic formats (.jpg, .png, .webp, etc).
    • The optional software you might use.
  • Planning your game...
    • So what type of game should I write?
    • Kinetic Novel -vs- Visual Novel
    • Borrowing a story from someone else.
    • Regular releases.
    • Keep it simple.
  • Starting your first project... FOR REALLZ.
    • Introducing file types and file names.
    • Where does RenPy start and where does it end?
    • Introducing indentation.
    • Introducing dialogue.
    • Introducing characters.
    • Adding more characters.
    • Customizing the character text colors.
    • Background images (scene).
    • Scene transitions.
    • Adding more labels.
    • Pausing between pictures.
    • Using text tags (Bold, Italics, Underscore, etc.)
    • Some thoughts about how to use / format text.
    • Congratulations, you already know almost enough to create a very simple kinetic novel.
  • Before continuing your first project - some background concepts.
    • Naming things... Uppercase and Lowercase... and how "True" isn't the same as "true".
    • Naming things... Don't use hyphens... They don't work in RenPy.
    • Naming things... Some extra thoughts.
    • Regular releases and version numbering.
  • Expanding your first project - the origins of a Visual Novel
    • Giving the player choices (menu: ).
    • Introducing "pass".
    • Introducing "jump".
    • Introduction to variables - Remembering choices (define and default).
      • Introducing Boolean variables (True or False) ... and a bit of advice about variable naming
      • Introducing integer variables (simple numbers).
      • Introducing string variables (text).
    • Introduction to "$" (python: ) and using it to change the value of variables.
    • Using python to do basic math with our variables (+=, -=).
    • Testing the values of variables (if / else).
    • Some general advice about using variables and divergent story arcs.
    • Some additional text tags (wait, newline and escape characters).
    • Congratulations, you could now write a simple visual novel.
  • Adding a splash screen or other forms of introduction.
My problem now is that there are a million and one things to go at next.

I have some pretty clear ideas on which topics I want to cover next, but at the same time - there's already been a couple of occasions where I've changed my mind on the order I want to introduce things.

The whole point is to talk someone with ZERO programming knowledge through writing their first game - at least in coding terms. Introducing one idea at a time and only when necessary to move things forward. A very slow walk from A to B to C to D .....

This is a beginners guide. There are going to be topics I avoid completely and topics where I say one thing early on and then explain why that's a bad idea later on. Right now, the most advanced topics I have in mind are things like imagebuttons and customizing the UI a bit. I'm staying completely away from anything that might be considered "open world".

When I get near the end, there will obviously be some rework. At the very least, I plan to go through my old posts for any topic I might have overlooked. I also plan to have a quick read through the numerous "new game blog" type posts that have been popping up recently to see if there's anything that hasn't even occurred to me.

It's hard to put yourself in the mind of someone who hasn't done all this before. There are so many things you take for granted... and so do I.

So with that in mind, I thought I'd ask if anyone has any suggestions as to what they like to see next. (think total newbie to low level intermediate levels of knowledge).

For the most part, I'm trying to think of things that are a blindspot for me. The stuff I'm taking for granted. The ideas I need a reminder about.
 
Last edited:

Saki_Sliz

Well-Known Member
May 3, 2018
1,403
1,011
Yeah, starter kits are great.
When I use to teach programming, I used java and had a simple animated button and light objects, and all the students needed to do was get the light to toggle when the button was pressed. they only had to deal with the clean abstracted top-level ideas, learn about variables and loops, but they got something that looked cool and worked, and from there they wanted to dive deeper. how do I move the button, can I customize the shape and colors? multiple buttons, hidden buttons, etc. then it would go deep into, what is a button, what is a class, how do I make my own custom objects from scratch, and then that evolved into basic game elements as they derp around with pre-made objects and then copied the code they like to make tailored object. before eventually having to code from scratch, which is the slowest and painful part.
 
  • Like
Reactions: polywog

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,957
16,191
My problem now is that there are a million and one things to go at next.
Yeah, it's what always prevented me to write such guide.


So with that in mind, I thought I'd ask if anyone has any suggestions as to what they like to see next. (think total newbie to low level intermediate levels of knowledge).
The most current "error" that can be found in Ren'py games :

  • weird use of variables.
    There's those who use object everywhere, even when they totally not need them or could have used . It's a small design flaw that have no real effect.
    But there's also those who go with a lot of "myVar1", "myVar2", "myVar3", ..., and could have done way better by using a list. While in the same time there's some that use a list as catchall, having "myList[0]" to store "char1Lust", "myList[1]" to store "char1Love", "myList[2]" to store "money", "myList[3]" to store "char2Lust", and so on.
    So, a quick introduction of the variable type and how to choice the more suitable one could be interesting.
  • The lack of doc reading.
    Time to time, come a dev who've a better knowledge than others, and want to do advanced things. And then, you'll find a tons of Python in the code, for something that could have been done natively by Ren'py. I'll not say the names, but there's one game that don't use the usual char "line of dialog", because the game come with two languages and they wrote a full translation part...
    So, a small section named, "Ren'py do way more than you think", could be a good addition. Not to present everything Ren'py can do, but to remember that reading the doc is always a really good idea. And to also say that Ren'py isn't another way to write Python, but have it's own capabilities that can be extended in Python when you really want to do something new.
  • The ignorance regarding Ren'py's dynamical capabilities.
    Too many games use a
    Code:
    if myVar == 1:
       jump aaa
    else:
       jump bbb
    For a "aaa" and "bbb" labels that will just few differences that can be handled dynamically by Ren'py.
    By example a scene offer you the possibility to choose the clothing set that a character will wear, and instead of some show expression "baseName_{}_imageID".format( variation ) the author wrote two time the same label, just changing the show lines.
  • The difference between scene and show.
    It don't happen often, but it clearly show that the official doc isn't clear enough for people who don't have a coding background. All the code use show in place of scene, leading Ren'py to assume that all the images have to be shown at the same time. Some having had a better understanding use a hide to remove the image before each show.

There others, but which don't cross my mind right now, so they probably aren't this frequent or not this a problem.
 

FranceToast

Active Member
Donor
Jul 31, 2018
562
896
It don't happen often, but it clearly show that the official doc isn't clear enough for people who don't have a coding background.
LOL, can confirm. For me, while I do have a rudimentary understanding of coding, the problem with the official docs and the LemmaSoft Forums is how they jump from very simple non-coding knowledge features to 'every code monkey knows this shit' complexity without anything in-between. I managed to hack together an entire scene just using the simple Tutorials as a very effective and clean base-it works! Then I am trying to add a couple of variables and its like...what. Tuples, lists...what? LOL.
 

recreation

pure evil!
Respected User
Game Developer
Jun 10, 2018
6,327
22,773
LOL, can confirm. For me, while I do have a rudimentary understanding of coding, the problem with the official docs and the LemmaSoft Forums is how they jump from very simple non-coding knowledge features to 'every code monkey knows this shit' complexity without anything in-between. I managed to hack together an entire scene just using the simple Tutorials as a very effective and clean base-it works! Then I am trying to add a couple of variables and its like...what. Tuples, lists...what? LOL.
Exactly, the docs switch between "kiddo who knows nuthin" and "I've coded windows in machine code". I have some coding background as well, but the renpy docs make me think I'm stupid sometimes...
 

79flavors

Well-Known Member
Respected User
Jun 14, 2018
1,607
2,256
Aye.
I'm aiming at the "kiddo knows nuthin'" end of the spectrum.

The RenPy docs are pretty good. Though only a tiny percentage of their pages are actual introduction.

The rest is all technical manual - which is useful, but often provides too much detail.

For someone who's new to it all, it difficult to separate out the "I need to know this now" from the "I'll need to know this later" and the "I'll never need to know this" stuff.

It also suffers the usual problem of technical manuals written by people who are already familiar with the product... lots of details that don't actually convey any new insights ("The way the flux capacitor works is that it fluxes capacitance" levels of circular logic).
 

FranceToast

Active Member
Donor
Jul 31, 2018
562
896
The RenPy docs are pretty good. Though only a tiny percentage of their pages are actual introduction.

The rest is all technical manual - which is useful, but often provides too much detail.
The other problem with it is the same problem with the Daz 3D official documentation-there are basically 'historical' or 'outdated' pages and 'later version', 'up-to-date' pages of how to do a lot of stuff, but no actual link between them, which is what would be most valuable. Having even a slightly more up-to-date guide that only has to reference Ren'Py 7 and up would be invaluable, to me at least.
 
  • Like
Reactions: recreation

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,957
16,191
Exactly, the docs switch between "kiddo who knows nuthin" and "I've coded windows in machine code". I have some coding background as well, but the renpy docs make me think I'm stupid sometimes...
I totally agree with you.
Take by example the doc for the config.overlay_functions : "A list of functions. When called, each function is expected to use ui functions to add displayables to the overlay layer."
It's great, it describe what the list is for, but let so many interrogations. When are they added to the overlay layer ? And, more important, how the said functions should be wrote ?

And most of the doc is more or less the same. It describe but it don't explain. For someone with a codding background, some experiments will fill the blanks, but for all the others, so most of Ren'py's user... They look at the description, think that it would be something interesting to use, and quickly abandon the idea because they don't understand how to use it.
 

79flavors

Well-Known Member
Respected User
Jun 14, 2018
1,607
2,256
if you are ever going to make that tutorial you've been thinking about, it might be nice to make notes of common questions, or questions that seem simple but have a secret complexity like this one. Just to know what to cover if you do get started, or maybe it will help you get started when you see that you have enough interesting topics on your list of notes.
My goal is that someone could write a reasonable RenPy game.

My general feeling is that you don't need to be playing around within styles and such for a simple game. That sort of thing is more at the high end of intermediate difficulty and headed towards complex. Though I freely admit that things like screens and styles are something I've managed to avoid so far, so perhaps I'm somewhat biased.

Right now, I've written enough that someone could create a simple visual novel with basic choices and such. Little or no customization, but a working game. Next is "everything else".

And yes, I'm collecting ideas by re-reading posts (and by asking in this thread what else I could include).
 

FranceToast

Active Member
Donor
Jul 31, 2018
562
896
Right now, I've written enough that someone could create a simple visual novel with basic choices and such. Little or no customization, but a working game. Next is "everything else".

And yes, I'm collecting ideas by re-reading posts (and by asking in this thread what else I could include).
Oooh, I have a few for your "Everything Else" list based on popular features in a lot of F95 games:

1) A clear but basic guide for an unlockable image gallery (people love the image gallery)
2) A clear but basic guide for one of those hunting for cards games like in MilfCity and Man of the House (which would be a logical extension to the unlock able image gallery above)
3) A clear but basic scripting guide for a smartphone texting interface (there are several in various states for various versions of Ren’Py on LemmaSoft, but they tend to be scattered across several messages/years, lol)

As noted, there are examples of these on the Lemma Soft forums (or by reverse engineering current games), but it would nice to have updated, easy to understand versions here for game designers.
 

79flavors

Well-Known Member
Respected User
Jun 14, 2018
1,607
2,256
Oooh, I have a few for your "Everything Else" list based on popular features in a lot of F95 games:
And if I ever get around to the "Intermediate Newbie guide to RenPy", I'll probably include both #1 and #3... assuming I can learn each myself before then. #2 will have to wait for my advanced guide, sometime around 2023.

Until them, I'm still aiming towards the "Keep banging the rocks together" crowd.

In all seriousness though, I might think about the gallery. It is a largely cut-and-paste solution. Not that I've ever written one I would say I was ever happy with.
 
  • Like
Reactions: FranceToast

FranceToast

Active Member
Donor
Jul 31, 2018
562
896
One for the basic guide (maybe)
1) How to add monthly chapters to the base story (obviously without requiring a new save)
 
Sep 25, 2017
42
127
I think that a beginner's tutorial is good. Probably would've helped me too.
What I would like is for the tutorial to grow over time.
It just starts out simple. And then it would grow on request.

At first the basics should be included in the tutorial, so that you get a simple but complete game to run. Then it depends on the creativity of the developer, what he wants to show or which features he wants to include. The developer would then be free to ask how to realize this or that. This could be summarized in a thread.

But that would be a longer project.
 

GNVE

Active Member
Jul 20, 2018
724
1,184
For me my start -after having decided I wanted to make a game and that I wanted to use Ren'Py to make it with- was to do a few actual basic Python tutorials. The pure coding helped me understand a few fundamentals that transfer to Ren'Py and made me understand what I was doing and why. That understanding makes it easier to code because I can apply rules instead of doing X because the tutorial said I needed to do X here. I must say was one of the best.

It might not be for everyone but you could reference it here and there for learners like me who need to know why they are doing things.