Ren'Py Question regarding Renpy and sprites

crabsinthekitchen

Well-Known Member
Apr 28, 2020
1,549
8,729
Ren'py is designed so you can easily type:

Code:
label conversation:
    scene
    show bg living_room
    show yuki casual
    with dissolve

    "Dialogue."

    show yuki casual mad

    "Dialogue."

    show yuki casual apologetic

    "Dialogue."

    hide yuki with dissolve

    return
and then your scene is done.
Code:
label conversation1:
    scene livingroom_yuki_conversation1 with dissolve

    "dialogue"

    scene livingroom_yuki_conversation1_mad

    "dialogue"

    scene livingroom_yuki_conversation1_apologetic

    "dialogue"

    return
really not that different

Compare having one "bg living_room" to 150 event stills that you need to keep track of, how to name them descriptively, and figure out how to edit them together and when you want to reuse them, and they all need their own transitions and transforms, and you have to keep flipping back and forth to your file browser just to see what they are because Ren'py is text-based.
I'd have to do the same with sprites. Well, I'd have less images I guess because the living room would stay the same even if I bring ten other characters along with Yuki, and Yuki in a casual outfit would look the same in my living room, outside, at the coffee shop and everywhere else where she can wear it
 

MidnightArrow

Member
Aug 22, 2021
498
423
Well, I'd have less images I guess because the living room would stay the same even if I bring ten other characters along with Yuki, and Yuki in a casual outfit would look the same in my living room, outside, at the coffee shop and everywhere else where she can wear it
And, as I already said, that's one of the benefits of using sprites.

Another big benefit is that if you only want to swap the emotions of one character while the other nine remain the same, it's really simple to do that by exploiting Ren'py's image tagging system. Because, like I said, it was designed to work that way.
 

TessaXYZ

Active Member
Game Developer
Mar 24, 2020
686
1,497
Then I'll say it for you, because it's not faster to use sprites ; it's the exact same code that is used to display a sprite and a full image.
It's faster to render sprites was what I was saying.

It's not "my" sprite method, it's how visual novels have been made for the past thirty years, and it's how Ren'py is programmed to make them. The quality of your renders is besides the point, compared to a discussion about how Ren'py works on a technical level.

This is what a visual novel is:

You don't have permission to view the spoiler content. Log in or register now.

You take sprites, you layer them on a background, you give them dialogue. Every once in a while, you show a unique event still. Ren'py is made with the assumption you're making a visual novel this way. But now people are trying to use it so it's nothing but event stills, and that's not how it was designed to be used.
Don't know what else to tell you other than "this is the right way because it's how it has always been done" is just a completely asinine argument for what should or could be done with the engine.
 

Deleted member 1121028

Well-Known Member
Dec 28, 2018
1,716
3,294
(Well, and also because Daz Studio is shit, but that's nothing to do with this conversation.)
1381942832_UMG_cvrart_00602537606481_01_RGB72_1500x1500_13UAEIM07510.1200x1200-75.jpg


Don't know what else to tell you other than "this is the right way because it's how it has always been done" is just a completely asinine argument for what should or could be done with the engine.
More seriously, the thing that annoy me the most with Renpy & CGs is how layers are largely underused in most VNs. Throw me sticks & stones as I didn't play lot of it, but still. A lot could be done with very little, a bit of text transition here, a little parallax there tho o/

Make the whole thing more dynamic, bit more than a slide show. It's an old Lovecraftian crappy protype but anyway lol :

View attachment pythonw_7O3a2VGoCd.mp4

View attachment pythonw_buOZY91l1N.mp4


View attachment pythonw_GBb6jDDYzN.mp4
 
  • Like
Reactions: Turning Tricks

Turning Tricks

Rendering Fantasies
Game Developer
Apr 9, 2022
946
2,026
More seriously, the thing that annoy me the most with Renpy & CGs is how layers are largely underused in most VNs. Throw me sticks & stones as I didn't play lot of it, but still. A lot could be done with very little, a bit of text transition here, a little parallax there tho o/

Make the whole thing more dynamic, bit more than a slide show. It's an old Lovecraftian crappy protype but anyway lol :
Ren'py is awesome for that shit! I'm just starting to appreciate how nice it looks when you do some simple little translations or layer screens on top of one another. Heck, I have a few simple pseudo-animations because ren'py makes it easy to create image loops.

As for the sprite vs full render thing above.. what's the difference? I see no real downside for doing it the way most 3DCG VN devs do. I have a folder full of sprites in my game and I use them for narration and stuff. But the game itself is all full HD renders.

The whole argument above about the file names being too hard to manage is ridiculous. I use a system like this personally "act_1_s10_r001.jpg" Act --> Scene -- >Render number. I can go back a year from now and tell you almost exactly where that image will be in the game. It's not 100% definitive, because there's lots of renders that are reused for dialogue sequences, but generally speaking, my render numbers are in order of where they are in a scene. I don't even have to type these out all the time, as i just cut and paste as needed and change the last digit to match the render I want. When i am writing the dialogue, i have the renders open on my second monitor and it helps my creativity a lot.

It works okay if you know how to manage complexity (most amateur porn game devs do not) and don't mind typing out lengthy filenames over and over and having to compile the whole project and fast-forward constantly to see your changes. But I know for a fact it's meant to make sprite-based visual novels because all of PyTom's example projects use them. It's how he designed the engine to work. "Cinematic" visual novels can be done (with more effort), but it's not the intended method.
Why would anyone need to do this? When i need to test things on the fly, I just write a little test code into my start page, like this ...

Python:
 menu:
    "Scene 26 - Driving miss [ten1d_name] - Love Path":
            $ ten1_look1 = True
            $ ten1_kiss1 = True
            $ ten1d_look1 = True
            $ Ten1LovePath = True
            jump scene_26
I make the changes and then Launch Project and it's right there on the start menu. I put those variables in there just to save me the time of having to do that via the console. There's no compiling you have to do. The Ren'py launcher does that for you.

Why would this be any different then doing it for a sprite based game? Your logic just doesn't make any sense.

I also really don't get the people that think making a character variable a single letter like "e" (Eileen's obvious example) is all that different than a more descriptive one. I'm at 13 main characters already in my game already, and it's much easier for me to use something like mc_name or gilf1_name or gilf1 happy than it is to use "ee" or "gi" or some other code. After all, I am the one that has to go back and look through 20,000 lines of code to find a bug 6 months later... I dunno about you, but my eyes track patterns and and recognizable words. I see $ Gilf1LovePath = True a year after I wrote it, and i still know exactly what that variable is. If I saw $ G12 = True I would probably be like "Duh?" And considering renders are usually 90% of the game's bulk, at 500-600kb per, saving 50-100kb in code seems silly, when you conside how non-intuitive you make things.
 

jamdan

Forum Fanatic
Sep 28, 2018
4,279
22,877
It's not "my" sprite method, it's how visual novels have been made for the past thirty years, and it's how Ren'py is programmed to make them. The quality of your renders is besides the point, compared to a discussion about how Ren'py works on a technical level.

This is what a visual novel is:

You don't have permission to view the spoiler content. Log in or register now.

You take sprites, you layer them on a background, you give them dialogue. Every once in a while, you show a unique event still. Ren'py is made with the assumption you're making a visual novel this way. But now people are trying to use it so it's nothing but event stills, and that's not how it was designed to be used.
A visual novel is just a novel with visuals. It doesn't mean you have to use just sprites or just full renders. Or even both, as several games do.

For me, sprites are good for conversations and full renders are better for when the characters interact with things.
 
  • Like
Reactions: coffeeaddicted

MidnightArrow

Member
Aug 22, 2021
498
423
Don't know what else to tell you other than "this is the right way because it's how it has always been done" is just a completely asinine argument for what should or could be done with the engine.
This is about UI design. Ren'py was designed a particular way, to make it easy to code sprite-based visual novels with human-readable image names. That's why it's a text-based program with all variables placed into global scope by default. I'm stating how its design lends itself well to making the most common type of visual novel.

If you want to do more than that, go ahead. I do "cinematic" VN scenes too. Doesn't mean I can't acknowledge that isn't the intended usage, just from objectively observing how the program is put together.

You don't use Photoshop or Abode Premiere by tweaking one line of code in a text editor, hitting Shift-R to recompile, and waiting ten seconds for your program to load again. You use a visual editor that gives you instant feedback of what you're doing. Looking through your file browser doesn't work for previewing ATL or screen language or CDDs, which are the things you'll need to be previewing the most.

I make the changes and then Launch Project and it's right there on the start menu. I put those variables in there just to save me the time of having to do that via the console. There's no compiling you have to do. The Ren'py launcher does that for you.
I do the exact same thing. It's still a pain in the ass that involves recompiling the program to see your changes. And even if you use Shift-R, when dealing with screen language or ATL it often results in an invalid execution state that crashes the program.

Why would this be any different then doing it for a sprite based game? Your logic just doesn't make any sense.
Because you cherry-picked a single argument I made out of context. In that case, my argument was that Ren'py would be more suited for "cinematic" VNs if it had a visual editor with a live preview.
 
Last edited:

coffeeaddicted

Well-Known Member
Apr 13, 2021
1,765
1,438
Sprites are a way to reduce the amount of rendering you need to do, while at the same time reducing the overall size of the game.

You render a room.
Then you render a picture of a girl smiling.
Then you render a picture of the same girl frowning.
Then you render a picture of the same girl clearly angry.
etc.

All the pictures of the girl have a transparent background.

Anytime the girl speaks as part of your story, you use one of the "sprites" you have prepared of the girl, against the pre-rendered room. As the girl's mood changes, you swap one sprite for another.
Sprites have the minor bonus of being able to move or animate without affecting the background image.

The downside is usually the lighting or time of day, where you have a very brightly lit smiling girl stood in the middle of a forest at midnight. Then there's the complication of clothing (which I guess is why a lot of anime style games never change out of their school uniforms).

With semi-photorealistic characters, sprites doesn't usually work very well. Better with seemingly hand-drawn style characters.

Sprites work well when you want to present characters like this:
View attachment 2252361 View attachment 2252362

Where each girl would be a sprite image and the room would be a separate background image.

But doesn't really work when you want to do this:
View attachment 2252360 View attachment 2252363 View attachment 2252376 View attachment 2252379

Honestly, using sprites is pretty rare theses days. It's much more common to only use full sized fully rendered scenes with each character individually posed and lit. Since you're talking about using Daz, I think you can fairly safely forget about the idea of sprites.
I like you answer as always.
And you are right. Most games don't do sprites but i wonder the reason.
Maybe they don't know that you can do that or it fell out of fashion.
If it's made good, you won't notice that there are sprites.

RenPy, in my mind, is made for playing around with sprites. There has to be a good mix of it because just having sprites will be not entertaining.
A game lives through the story and not through if it's a full render or a sprite. Though i believe most players thing full render only is the way to go.
This is my personal opinion.

One example of a game that is using sprites is Light of my Life. It's a good mix between sprites and renders. Especially dialogs do benefit from it.

To get the lightning right, i had used the same setting to where i want to put the sprites. That way you get the same lighting. It isn't easier but in the end you will have more options that can be reused easily and mix and matched between dialogs. So in my mind there is a benefit for utilizing sprites.
 
  • Like
Reactions: osanaiko

coffeeaddicted

Well-Known Member
Apr 13, 2021
1,765
1,438
Organizing your image names is always something personal. Basically, whatever makes sense to you.
Just keep in mind that you might want to visit the bathroom more than once (so bathroom.png is probably a bad idea).

I've seen people organise filenames around the episode and/or scene number (so ep1_s03_0001.png can be an option if that makes sense for your game). But really... whatever works for you.

Two things though:
  • Always use lowercase filenames for at least your images (and almost everything else).
  • Avoid filenames with spaces in them.
There are technical RenPy reasons as to why, and like everything else with RenPy - you can break almost any rule if you like. But your development will be so much simpler if you stick to at least those two suggestions.
I organize my files in folder by days or event. That way you only have a limited amount in the folder. Since RenPy reads them regardless where they are, it's perfect. But they have to be unique.
 

Deleted member 1121028

Well-Known Member
Dec 28, 2018
1,716
3,294
Is there even a day on the calendar where you don't sniff your own fart?

Ren'py is awesome for that shit! I'm just starting to appreciate how nice it looks when you do some simple little translations or layer screens on top of one another. Heck, I have a few simple pseudo-animations because ren'py makes it easy to create image loops.
I could be wrong, but sometime I feel some devs go out of their way to make that perfectly (or not) framed 4sec animations loop (who don't add much most of the time), without really weighting what could be done (story telling wise) with just few layers for the same time. Imho a better emphasis on dynamic layers could bring much more to the table than anything else (for the VNs genre in general). I whish Renpy push more harder in that direction.
 

79flavors

Well-Known Member
Respected User
Jun 14, 2018
1,576
2,203
And you are right. Most games don't do sprites but i wonder the reason.

To my mind there are two reasons...
  • Despite it's origins as a well designed sprite engine, it's easier to write games without sprites.
    • Remember the target audience here. New developers, usually with half of a story idea but very little programming experience.
    • From a code point of view, it's easier to learn scene instead of scene AND show/hide.
    • From a graphics point of view, it's easier to render a full screen image than it is to learn how to render character models only against a transparent background and get the lighting right in all environments (although this is a somewhat Daz3D perspective and reflects the use of Daz for graphics in recent years).
  • Fully rendered scenes look better than background+sprites 99.9% of the time. Again, presuming Daz.
Whilst the core of what RenPy does hasn't really changed for most developers... the developers have. The majority of successful games don't use sprites, so that's what is treated as "normal" - regardless of what you believe the strengths and weaknesses of the engine may be.
 

Deleted member 1121028

Well-Known Member
Dec 28, 2018
1,716
3,294
Fully rendered scenes look better than background+sprites 99.9% of the time. Again, presuming Daz.
Kinda disagree on you second point. It's better if you make it so. While Renpy is clearly designed with hand drawing in mind, it doesn't add or remove anything much sensible over CGs workflow. It's much more about opportunity costs imho. Why would I corner myself in the same blurry kitchen background, when all it cost is clicking the render button? It's obviously much more a problem with hand drawn visual. But it doesn't make one approach or the other better (even on aesthetic), execution-flow-narration will imho.

That's me being picky, that said I agree on your conclusion tho.
 

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
10,302
15,172
It's faster to render sprites was what I was saying.
My bad.


From a graphics point of view, it's easier to render a full screen image than it is to learn how to render character models only against a transparent background and get the lighting right in all environments (although this is a somewhat Daz3D perspective and reflects the use of Daz for graphics in recent years).
There's also the question of the proportions. With 2D sprites it's less disturbing to have sprites that are bigger than they should be accordingly to the background. But since 3D sprites are more realistic, they feel out of place ; "wait, it this girl really as large as the armchair ?"

But I think that the most important is the freedom you get from fully rendered scenes.
Even if you use an Illusion Studio for your game, and therefore can afford to have hundreds of sprites for a give character, you'll always have something more generic than a fully rendered scene. The expression and pose will match the context, but you'll see the whole scene from a single angle.
With fully rendered scenes, you don't just use the expression and pose to carry information, you also use the camera. If the scene represent two girls arguing, center the camera on one of them, and the player will tend to agree with her more than he will agree with the other. If it's a group discussion, center the camera to keep one of the character on a border, and you'll exclude him/her from the discussion. Whatever if (s)he say something, the player will have the feeling that no one really cared what (s)he said.
Plus, the simple fact to move the camera bring more dynamism into the story.

If historically VN rely on sprites, it's because historically they rely on drawn CGs. But wanting to stick to this, or believing that the world should stick to this, now that we have the technology to do differently, is as stupid as continuing to use horse carriages now that we have cars.
We can use photography and movie tricks to extend the information carried by the CGs, it would be stupid to not benefit from them.
 

coffeeaddicted

Well-Known Member
Apr 13, 2021
1,765
1,438
To my mind there are two reasons...
  • Despite it's origins as a well designed sprite engine, it's easier to write games without sprites.
    • Remember the target audience here. New developers, usually with half of a story idea but very little programming experience.
    • From a code point of view, it's easier to learn scene instead of scene AND show/hide.
    • From a graphics point of view, it's easier to render a full screen image than it is to learn how to render character models only against a transparent background and get the lighting right in all environments (although this is a somewhat Daz3D perspective and reflects the use of Daz for graphics in recent years).
  • Fully rendered scenes look better than background+sprites 99.9% of the time. Again, presuming Daz.
Whilst the core of what RenPy does hasn't really changed for most developers... the developers have. The majority of successful games don't use sprites, so that's what is treated as "normal" - regardless of what you believe the strengths and weaknesses of the engine may be.
It's probably true, though i think that sprites can be useful. But you can't swim against the tide.
To me, it was hard to understand in the beginning but now it seems easier. Technically.
Though there seems to be no use use to argue as it's more or less decided by the player and the overall flow of games.

To me, sprites can serve a function of story telling but i do see that games in general don't use sprites, instead relying purely on full renders.
Perhaps one day there will be a revival of sorts for sprites. Nostalgic and all.

Older games used to rely heavily on sprites and i thought this looks really great. But, these were old games out of a different time line.
 

MidnightArrow

Member
Aug 22, 2021
498
423
To me, sprites can serve a function of story telling but i do see that games in general don't use sprites, instead relying purely on full renders.
Perhaps one day there will be a revival of sorts for sprites. Nostalgic and all.
No, the vast majority of visual novels still use sprites.

The odds that a niche porn game forum full of amateurs whose only experience is "played Being a DIK once" will ever supplant the professional Japanese VN market are slim to none, to put it mildly.

On top of that, you have the staggeringly vast market for Japanese mobile games, which are basically half visual novel, half slot machine.

Sprites are overwhelmingly the dominant medium for visual novels everywhere outside of F95Zone.
 

Turning Tricks

Rendering Fantasies
Game Developer
Apr 9, 2022
946
2,026
No, the vast majority of visual novels still use sprites.

The odds that a niche porn game forum full of amateurs whose only experience is "played Being a DIK once" will ever supplant the professional Japanese VN market are slim to none, to put it mildly.

On top of that, you have the staggeringly vast market for Japanese mobile games, which are basically half visual novel, half slot machine.

Sprites are overwhelmingly the dominant medium for visual novels everywhere outside of F95Zone.

It's funny though, I am starting to see all sorts of DAZ and Blender 3D generated content showing up on JAV sites (The real ones) and also on Japanese game reseller pages. Heck, even the main stream porn streaming sites are inserting 3DCG Renpy VN's into their hits when you do searches.

Markets change and the population that grew up on traditional Anime, Manga, Hentai and Sprite games is getting older every day. Newer generations see games on one side, with antiquated 2D sprite graphics and games on the other side, with photo-realistic 3DCG and they are trending towards that.

Right now, it's not even a close thing, but 5 years from now? I think 3D games and even VR is going to be at the top.
 
  • Like
Reactions: anne O'nymous

TessaXYZ

Active Member
Game Developer
Mar 24, 2020
686
1,497
No, the vast majority of visual novels still use sprites.

The odds that a niche porn game forum full of amateurs whose only experience is "played Being a DIK once" will ever supplant the professional Japanese VN market are slim to none, to put it mildly.

On top of that, you have the staggeringly vast market for Japanese mobile games, which are basically half visual novel, half slot machine.

Sprites are overwhelmingly the dominant medium for visual novels everywhere outside of F95Zone.
The frustrating part here is that you're seemingly refusing to acknowledge that there are valid, artistic reasons to prefer not using sprites, and that Renpy remains the easiest engine to use to implement them despite it containing syntax that makes it easy to use sprites. Like... who gives a fuck if it has syntax for sprites if you're going for a more immersive style? Just acknowledge this instead of arguing "this way is the right way, la-la-la-la-laaaaaaa"...

Edit: And besides, arguing that "this is how the industry does it" is a bullshit argument too. Of course that's how they do it! It's an order of magnitude cheaper to develop than full renders, and people buy their games anyways! Their incentive is financial, not artistic!
 

MidnightArrow

Member
Aug 22, 2021
498
423
It's funny though, I am starting to see all sorts of DAZ and Blender 3D generated content showing up on JAV sites (The real ones) and also on Japanese game reseller pages. Heck, even the main stream porn streaming sites are inserting 3DCG Renpy VN's into their hits when you do searches.

Markets change and the population that grew up on traditional Anime, Manga, Hentai and Sprite games is getting older every day. Newer generations see games on one side, with antiquated 2D sprite graphics and games on the other side, with photo-realistic 3DCG and they are trending towards that.

Right now, it's not even a close thing, but 5 years from now? I think 3D games and even VR is going to be at the top.
For porn, maybe? Though I doubt it. I think the tools are just more accessible for amateurs who don't have talent at drawing, rather than any great shift in the market. It takes a lot of work to make a 2d animation over five minutes, while 3d is all made with interpolated keyframes (and you don't need any talent at drawing to download a model off SFMLab either).

But I can't see the mainstream visual novel market ever divorcing themselves from manga/anime aesthetics, due to how closely all the industries are entwined over there, the existing talent pool, and general Japanese tastes for moe/bishounen/bishoujo. It'd take one hell of a cultural shift, among the entire population, for them to turn their backs on it. And as long as the mainstream VN market sticks to manga style, it's a good bet it'll dominate the porn market too even if alternatives like 3d gain ground.
 

MidnightArrow

Member
Aug 22, 2021
498
423
The frustrating part here is that you're seemingly refusing to acknowledge that there are valid, artistic reasons to prefer not using sprites, and that Renpy remains the easiest engine to use to implement them despite it containing syntax that makes it easy to use sprites. Like... who gives a fuck if it has syntax for sprites if you're going for a more immersive style? Just acknowledge this instead of arguing "this way is the right way, la-la-la-la-laaaaaaa"...
What are you talking about? I just stated a fact, that the overwhelming majority of mainstream visual novels are made with sprites. I didn't say anything about which one is better or worse in that post you quoted.

Though I would say using sprites is more immersive since it's meant to mimic a first-person, face-to-face conversation. But I'm not saying you should use one or the other.
 

immortalkid69

Member
Jun 13, 2022
215
46
I think sprites are better for 2d games and more render based visuals for 3d games. That is how the trend is and how ppl seemed to enjoy it anyways.