Ren'Py 7.0.0 Prereleased

Discuss how to use the Ren'Py engine to create visual novels and story-based games. New releases are announced in this section.
Forum rules
This is the right place for Ren'Py help. Please ask one question per thread, use a descriptive subject like 'NotFound error in option.rpy' , and include all the relevant information - especially any relevant code and traceback messages. Use the code tag to format scripts.
Message
Author
User avatar
PyTom
Ren'Py Creator
Posts: 16088
Joined: Mon Feb 02, 2004 10:58 am
Completed: Moonlight Walks
Projects: Ren'Py
IRC Nick: renpytom
Github: renpytom
itch: renpytom
Location: Kings Park, NY
Contact:

Re: Ren'Py 7.0.0 Prereleased

#16 Post by PyTom »

7.0.0.95)

This has a one-line change that fixes default inside a used screen, and a new French translation of The Question.
Supporting creators since 2004
(When was the last time you backed up your game?)
"Do good work." - Virgil Ivan "Gus" Grissom
Software > Drama • https://www.patreon.com/renpytom

User avatar
Camille
Eileen-Class Veteran
Posts: 1227
Joined: Sat Apr 23, 2011 2:43 pm
Completed: Please see http://trash.moe
Projects: the head well lost
Organization: L3
Tumblr: narihira
Deviantart: crownwaltz
itch: lore
Contact:

Re: Ren'Py 7.0.0 Prereleased

#17 Post by Camille »

Edit: Neverrrrrr mind! This ended up being something else entirely.
Attachments
fake say screen
fake say screen
say screen
say screen

User avatar
Jackkel Dragon
Veteran
Posts: 283
Joined: Mon Mar 31, 2014 7:17 pm
Organization: Nightshade, Team Despair
itch: jackkel-dragon
Location: USA
Contact:

Re: Ren'Py 7.0.0 Prereleased

#18 Post by Jackkel Dragon »

Jackkel Dragon wrote: Fri May 04, 2018 1:24 am I may have run into a minor graphical issue since testing the prerelease. Whenever I've opened a game with a splashscreen label with the prerelease, it displays the checkerboard "no image" background for a few frames on startup. This is despite my splashscreen labels usually having "scene black" at the beginning. I haven't double-checked if it's unique to this build, but it doesn't seem to be an issue for games without splash screens.
I still seem to be having problems with this... even at the latest prerelease. Do I need to delete my persistent data for the game to fix the issue after the update? (I've already tried recompiling scripts.) Is this maybe just an issue with the launcher, and not finalized games?
Main Website
Includes information about and links to many of my current and past projects.

Major Game Projects
[Nightshade] Eldritch Academy, Eldritch University, Blooming Nightshade, Flowering Nightshade, Life as Designed
[Team Despair] Corpse Party D2 series

User avatar
PyTom
Ren'Py Creator
Posts: 16088
Joined: Mon Feb 02, 2004 10:58 am
Completed: Moonlight Walks
Projects: Ren'Py
IRC Nick: renpytom
Github: renpytom
itch: renpytom
Location: Kings Park, NY
Contact:

Re: Ren'Py 7.0.0 Prereleased

#19 Post by PyTom »

7.0.0.102)

Ren'Py now supports movie channels that will not drop frames in order to keep from lagging. These are used by movie sprites with alpha masks, to ensure that dropping a frame from the mask but not the color channel (or vice versa) will not cause the two movies to go out of sync with each other.

The screen is forced to black early in start up, this should stop the checkerboard pattern from showing up in places where it wouldn't have in prior versions. (Note that it will never show up in released games.)

Added a few functions that make it possible to list out showing and hidden-but-has-attributes tags, which will be the basis of a new tool coming up to help people visualize those.
Supporting creators since 2004
(When was the last time you backed up your game?)
"Do good work." - Virgil Ivan "Gus" Grissom
Software > Drama • https://www.patreon.com/renpytom

User avatar
Zetsubou
Miko-Class Veteran
Posts: 522
Joined: Wed Mar 05, 2014 1:00 am
Completed: See my signature
Github: koroshiya
itch: zetsuboushita
Contact:

Re: Ren'Py 7.0.0 Prereleased

#20 Post by Zetsubou »

Is there a straightforward way to create a side image derived from a full sized layeredimage sprite?
ie. Create a sprite as a layeredimage, then crop it to make a side image, with tags working as expected across both.

I could make a side image in the same manner as a full sprite, but I couldn't get that working with "auto" for both unless I make two sets of images.
"image_format" doesn't work with auto, so I guess that's out.
I suspect "format_function" may be what I want, but I was unable to get this working as expected.

I was hoping for something along the lines of:

Code: Select all

layeredimage eileen:
  always:
    "base"
  group exp auto

layeredimage side eileen:
  some_image_format_tag "eileen" #so auto looks for "eileen" instead of "side_eileen"
  always:
    "base"
  group exp auto
  crop (x, y, x1, y1) #Use the same images as full sized sprite, but cropped
Right now it's looking like some batch rename/crop script might be easiest. Probably lighter on RAM too, though it would mean unnecessary image duplication.
Finished games
-My games: Sickness, Wander No More, Max Massacre, Humanity Must Perish, Tomboys Need Love Too, Sable's Grimoire, My Heart Grows Fonder, Man And Elf, A Dragon's Treasure, An Adventurer's Gallantry
-Commissions: No One But You, Written In The Sky, Diamond Rose, To Libertad, Catch Canvas, Love Ribbon, Happy Campers, Wolf Tails

Working on:
Sable's Grimoire 2

https://zetsubou.games

User avatar
PyTom
Ren'Py Creator
Posts: 16088
Joined: Mon Feb 02, 2004 10:58 am
Completed: Moonlight Walks
Projects: Ren'Py
IRC Nick: renpytom
Github: renpytom
itch: renpytom
Location: Kings Park, NY
Contact:

Re: Ren'Py 7.0.0 Prereleased

#21 Post by PyTom »

7.0.0.106)

Added LayeredImageProxy.


That's to address Zetsubo's use case. It's now possible to do:

Code: Select all

    image side augustina = LayeredImageProxy("augustina", Transform(crop=(0, 0, 362, 362), xoffset=-80))
And get your side image for free by attributes over to the main image.
Supporting creators since 2004
(When was the last time you backed up your game?)
"Do good work." - Virgil Ivan "Gus" Grissom
Software > Drama • https://www.patreon.com/renpytom

User avatar
Zetsubou
Miko-Class Veteran
Posts: 522
Joined: Wed Mar 05, 2014 1:00 am
Completed: See my signature
Github: koroshiya
itch: zetsuboushita
Contact:

Re: Ren'Py 7.0.0 Prereleased

#22 Post by Zetsubou »

Very nice! Just started testing LayeredImageProxy and it's working great. Thanks Pytom!
My sprite definitions have never been cleaner. One character just went from 115 lines (10,027 chars) to 17 lines (450 chars).
Finished games
-My games: Sickness, Wander No More, Max Massacre, Humanity Must Perish, Tomboys Need Love Too, Sable's Grimoire, My Heart Grows Fonder, Man And Elf, A Dragon's Treasure, An Adventurer's Gallantry
-Commissions: No One But You, Written In The Sky, Diamond Rose, To Libertad, Catch Canvas, Love Ribbon, Happy Campers, Wolf Tails

Working on:
Sable's Grimoire 2

https://zetsubou.games

User avatar
Zetsubou
Miko-Class Veteran
Posts: 522
Joined: Wed Mar 05, 2014 1:00 am
Completed: See my signature
Github: koroshiya
itch: zetsuboushita
Contact:

Re: Ren'Py 7.0.0 Prereleased

#23 Post by Zetsubou »

I believe I've found a bug in LayeredImageProxy, or at least a behavior change from how side images usually work.
If you define a side image, but don't supply any attributes with a say statement, it'll show the side image anyway minus any attributes.
eg.

Code: Select all

define barth = Character("Bartholomew", kind=adv, image='bartholomew')

layeredimage bartholomew:
    always "bartholomew_base"
    group exp:
        attribute smile

image side bartholomew = LayeredImageProxy("bartholomew", Transform(crop=(105, -10, 578,632)))

label start:
  barth "test"
In this example, the side sprite showed with a blank face.
If I were to define the side image the old way, it would fail to match any images without the attribute, so nothing would be shown.

Is there a tag for making a group mandatory and not showing an image if it isn't supplied? I don't see one in the docs.
Finished games
-My games: Sickness, Wander No More, Max Massacre, Humanity Must Perish, Tomboys Need Love Too, Sable's Grimoire, My Heart Grows Fonder, Man And Elf, A Dragon's Treasure, An Adventurer's Gallantry
-Commissions: No One But You, Written In The Sky, Diamond Rose, To Libertad, Catch Canvas, Love Ribbon, Happy Campers, Wolf Tails

Working on:
Sable's Grimoire 2

https://zetsubou.games

User avatar
PyTom
Ren'Py Creator
Posts: 16088
Joined: Mon Feb 02, 2004 10:58 am
Completed: Moonlight Walks
Projects: Ren'Py
IRC Nick: renpytom
Github: renpytom
itch: renpytom
Location: Kings Park, NY
Contact:

Re: Ren'Py 7.0.0 Prereleased

#24 Post by PyTom »

I don't think this is either a bug, or a change to the way side images work. In both cases, you're willing to show the bartholomew image without an expression. Previously, you likely hadn't defined an image with the name "side bartholomew", so nothing would be shown - but that's a change in what you've defined, I think.

You could reasonably use a conditional here to not show the base layer if there are no attributes for the image:

Code: Select all

layeredimage bartholomew:
    if renpy.get_attributes("bartholomew"):
       "bartholomew_base"
    group exp:
        attribute smile
Also, a crop with a negative number like that is ill-defined. Consider the equivalent:

Code: Select all

    image side bartholomew = LayeredImageProxy("bartholomew", Transform(crop=(105, 0, 578,622)))
Instead.
Supporting creators since 2004
(When was the last time you backed up your game?)
"Do good work." - Virgil Ivan "Gus" Grissom
Software > Drama • https://www.patreon.com/renpytom

User avatar
Zetsubou
Miko-Class Veteran
Posts: 522
Joined: Wed Mar 05, 2014 1:00 am
Completed: See my signature
Github: koroshiya
itch: zetsuboushita
Contact:

Re: Ren'Py 7.0.0 Prereleased

#25 Post by Zetsubou »

Thanks Pytom, I guess it's my misunderstanding of how groups work then.
I thought groups were mandatory, ie. you had to satisfy them or the image wouldn't show. Otherwise you could unintentionally show a sprite without an essential layer, like clothing or an expression. Particularly with side images, where you might intentionally omit attributes (eg. while showing a CG, you might not want the side image to show).
Perhaps a new parameter for the group might be warranted? eg. a "required" parameter to say whether the group is mandatory or not.

Unrelated, I noticed a delay between the sprite hiding and the expression hiding when using a layeredimage sprite. The expression faded out, as intended, whereas the base layer hid immediately.
I suspect it might be to do with the "on hide" clause of the ATL transform that I used when displaying the image, and the fact that I changed the expression with a different show statement before hiding, but I don't have enough information to give a useful report right now. I'll take another look later.
Finished games
-My games: Sickness, Wander No More, Max Massacre, Humanity Must Perish, Tomboys Need Love Too, Sable's Grimoire, My Heart Grows Fonder, Man And Elf, A Dragon's Treasure, An Adventurer's Gallantry
-Commissions: No One But You, Written In The Sky, Diamond Rose, To Libertad, Catch Canvas, Love Ribbon, Happy Campers, Wolf Tails

Working on:
Sable's Grimoire 2

https://zetsubou.games

User avatar
PyTom
Ren'Py Creator
Posts: 16088
Joined: Mon Feb 02, 2004 10:58 am
Completed: Moonlight Walks
Projects: Ren'Py
IRC Nick: renpytom
Github: renpytom
itch: renpytom
Location: Kings Park, NY
Contact:

Re: Ren'Py 7.0.0 Prereleased

#26 Post by PyTom »

At least right now, there's no enforcement here - it's up to you to add the attributes the layered image wants. At some point, I might add required groups, but I'm more likely to tell Ren'Py to produce an error than failing silently like that.

Can you give me an example of that delay ASAP? I'd like to get 7 out the door really soon, so I need to decide if this is a real problem or not. The one thing I think it might be is that if you're adjusting the Alpha, it gets applied to each layer individually, and not to the sprite as a whole. That's been the case forever, though - it's not something new with layered images.

If you want to fix this, you can use the at clause to apply Flatten to the displayable once it's created.

Code: Select all

layeredimage foo:
    at Flatten

     # ...
That will merge all the layers together. But that's expensive. The other thing you could do is to apply transitions to the layer (hide foo with dissolve), or perhaps the new dictionary transition syntax (hide foo with { 'master' : dissolve }).
Supporting creators since 2004
(When was the last time you backed up your game?)
"Do good work." - Virgil Ivan "Gus" Grissom
Software > Drama • https://www.patreon.com/renpytom

User avatar
trooper6
Lemma-Class Veteran
Posts: 3712
Joined: Sat Jul 09, 2011 10:33 pm
Projects: A Close Shave
Location: Medford, MA
Contact:

Re: Ren'Py 7.0.0 Prereleased

#27 Post by trooper6 »

I'm testing out layered images to see how to use them. I have a question about using Layered Images in practice for complex sprites.
Let's say you have a sprite named rex that has separate eyebrow, eye, and mouth layers.
Let's say you have the following images:
rex_base
rex_pants_long
rex_pants_short
rex_shirt
rex_eyebrow_angry
rex_eyebrow_happy
rex_eyebrow_sad
rex_eye_angry
rex_eye_happy
rex_eye_sad
rex_mouth_angry
rex_mouth_happy
rex_mouth_sad

So I assume we set up our layered sprite like so:

Code: Select all

layeredimage rex:
    always "rex_base"
    group pants auto:
        attribute long default
    always "rex_shirt"
    group eyebrow auto:
        attribute happy default
    group eye auto:
        attribute happy default
    group mouth auto:
        attribute happy default

label start:
    scene black
    show rex at center
    r "I am happy."
Okay...but how do you switch emotions with these different elements?

If you want the sprite to be happy, you'd want eyebrow, eye, and mouth to be happy.
If you want the sprint to be angry, you'd want eyebrow, eye, and mouth to be angry.
If you want the sprint to be sad, you'd want eyebrow, eye, and mouth to be sad.

That seems easy. You just type:

Code: Select all

show rex sad
show rex angry
show rex happy
But what if you want the sprite to be maniacal, you'd want angry eyebrow and eye, and a happy mouth.
Or if you want the sprite to be broody, you'd want angry eyebrow, sad eye and sad mouth.

Using the old method I set up a class with functions that would change the conditionals. So I could type:
$rexEmote.angry() or $rexEmote.manic() and it would set the conditionals so I'd get those emotions without having to type out all the specific eyebrow/eye/mouth combo over and over.

How does one do this mixing and matching in LayeredImages? Would I nest groups maybe?

Ideally, if I set up the Layered Image right, I should be able to type:

show rex happy
show rex manic

and have it all work out, right? But how do you set up the layered image to make that work? Is that possible?

I also don't quite understand why/when I'd use variable and prefix.

Also, for the life of me I couldn't get the layeredimage to take a transform property.
I tried all the following:

Code: Select all

layeredimage rex zoom 0.2:

Code: Select all

layeredimage rex zoom=0.2:

Code: Select all

layeredimage rex: 
    zoom 0.2

Code: Select all

layeredimage rex: 
    zoom=0.2
The documentation say the layered image statement can take transform properties...but I'm not making it work. What am I doing wrong here?
Last edited by trooper6 on Sun May 13, 2018 8:44 pm, edited 2 times in total.
A Close Shave:
*Last Thing Done (Aug 17): Finished coding emotions and camera for 4/10 main labels.
*Currently Doing: Coding of emotions and camera for the labels--On 5/10
*First Next thing to do: Code in all CG and special animation stuff
*Next Next thing to do: Set up film animation
*Other Thing to Do: Do SFX and Score (maybe think about eye blinks?)
Check out My Clock Cookbook Recipe: http://lemmasoft.renai.us/forums/viewto ... 51&t=21978

User avatar
xavimat
Eileen-Class Veteran
Posts: 1460
Joined: Sat Feb 25, 2012 8:45 pm
Completed: Yeshua, Jesus Life, Cops&Robbers
Projects: Fear&Love, unknown
Organization: Pilgrim Creations
Github: xavi-mat
itch: pilgrimcreations
Location: Spain
Contact:

Re: Ren'Py 7.0.0 Prereleased

#28 Post by xavimat »

I've just submitted a Pull Request with the Updated Spanish translation: https://github.com/renpy/renpy/pull/1456
I hope I'm still on time for the 7.0 release.
Now the Spanish translation should be complete.
Comunidad Ren'Py en español: ¡Únete a nuestro Discord!
Rhaier Kingdom A Ren'Py Multiplayer Adventure Visual Novel.
Cops&Robbers A two-player experiment | Fear&Love Why can't we say I love you?
Honest Critique (Avatar made with Chibi Maker by ~gen8)

User avatar
Zetsubou
Miko-Class Veteran
Posts: 522
Joined: Wed Mar 05, 2014 1:00 am
Completed: See my signature
Github: koroshiya
itch: zetsuboushita
Contact:

Re: Ren'Py 7.0.0 Prereleased

#29 Post by Zetsubou »

I won't be able to test it until I get home this evening (~7 hours), but from memory, I compared two versions of the same image, one LiveComposite and one layeredimage. Something like:

Code: Select all

image eileen smile = LiveComposite(dims, (0,0), "base", (0,0), "smile")
image eileen neutral = LiveComposite(dims, (0,0), "base", (0,0), "neutral")

layeredimage eileen2:
  always "base"
  group exp:
    attribute smile
    attribute neutral

transform fadeinout:
  on show:
    alpha 0
    linear 0.35 alpha 1
  on hide:
    alpha 1
    linear 0.35 alpha 0

label start:
  
  show eileen neutral at fadeinout
  ""
  show eileen smile at move_left
  ""
  hide eileen

  ""

  show eileen2 neutral at fadeinout
  ""
  show eileen2 smile at move_right
  ""
  hide eileen2
  ""
The LiveComposite faded both the base and the expression out at the same time, but the layeredimage immediately hid the base, then faded out the expression.
I didn't have time to check if the movement was a factor or not. I don't believe the movement touches the alpha.
I'll play with The Tutorial when I get home and see what's necessary to replicate this.
Finished games
-My games: Sickness, Wander No More, Max Massacre, Humanity Must Perish, Tomboys Need Love Too, Sable's Grimoire, My Heart Grows Fonder, Man And Elf, A Dragon's Treasure, An Adventurer's Gallantry
-Commissions: No One But You, Written In The Sky, Diamond Rose, To Libertad, Catch Canvas, Love Ribbon, Happy Campers, Wolf Tails

Working on:
Sable's Grimoire 2

https://zetsubou.games

User avatar
Jackkel Dragon
Veteran
Posts: 283
Joined: Mon Mar 31, 2014 7:17 pm
Organization: Nightshade, Team Despair
itch: jackkel-dragon
Location: USA
Contact:

Re: Ren'Py 7.0.0 Prereleased

#30 Post by Jackkel Dragon »

@trooper6: For applying the zoom transform to a layered image during definition, the workaround I've been using is to put the transform as part of each group's block. As things are, not sure if you can apply a transform to the whole image during definition right now. (You can do it during the game or in each group during definition, but it doesn't seem to work if you do what you gave examples for.)

Maybe that should be added as a feature, to apply transformations to all groups by default.
Main Website
Includes information about and links to many of my current and past projects.

Major Game Projects
[Nightshade] Eldritch Academy, Eldritch University, Blooming Nightshade, Flowering Nightshade, Life as Designed
[Team Despair] Corpse Party D2 series

Post Reply

Who is online

Users browsing this forum: Google [Bot], Ocelot, Semrush [Bot]