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: 15200
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 » Tue May 08, 2018 1:25 am

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
"Silly and fun things are important." - Elon Musk
Software > Drama • https://www.patreon.com/renpytom

User avatar
Camille
Eileen-Class Veteran
Posts: 1226
Joined: Sat Apr 23, 2011 2:43 pm
Completed: Please see http://trash.moe
Projects: Spirit Parade
Organization: Cyanide Tea
Tumblr: narihira
Deviantart: crownwaltz
Skype: thievinghearts
Contact:

Re: Ren'Py 7.0.0 Prereleased

#17 Post by Camille » Tue May 08, 2018 3:58 am

Edit: Neverrrrrr mind! This ended up being something else entirely.
Attachments
Screen Shot 2018-05-08 at 2.36.58 AM.png
fake say screen
Screen Shot 2018-05-08 at 2.36.53 AM.png
say screen
1/2 of Cyanide Tea | Break Chance Memento (BL) | Spirit Parade (Otome) | Portfolio/List of Works/Contact
I'm not around LSF very much these days; please contact me via Skype/Twitter. Ask me things!

User avatar
Jackkel Dragon
Regular
Posts: 121
Joined: Mon Mar 31, 2014 7:17 pm
Projects: CPD2 series, EA, BN
Organization: Team Despair, Nightshade
Location: USA
Contact:

Re: Ren'Py 7.0.0 Prereleased

#18 Post by Jackkel Dragon » Thu May 10, 2018 9:22 pm

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?
Current Projects:
  • Eldritch Academy: A Romance/Paranormal Thriller Visual Novel about a Japanese boarding school's dark secret. (Lemmasoft) [Nightshade]
  • Blooming Nightshade: A lighthearted Romance Visual Novel set at the school from Eldritch Academy. (itch.io) [Nightshade]
  • Novels and short stories. (Shireishi, Those That Linger: GhostSense, and more) (Tumblr) [Nightshade]
  • Corpse Party D2: A series of RPG Maker and Ren'Py fangames based on CORPSE-PARTY's D-2 ending. (Tumblr) [Team Despair]

User avatar
PyTom
Ren'Py Creator
Posts: 15200
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 » Sat May 12, 2018 8:47 am

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
"Silly and fun things are important." - Elon Musk
Software > Drama • https://www.patreon.com/renpytom

User avatar
Zetsubou
Veteran
Posts: 475
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 » Sat May 12, 2018 7:13 pm

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
-Commissions: No One But You, Written In The Sky, Diamond Rose, To Libertad, Catch Canvas, Love Ribbon, Happy Campers, Wolf Tails

Working on:
Circadian Loop, My Heart Grows Fonder + VN writing commissions

Image

User avatar
PyTom
Ren'Py Creator
Posts: 15200
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 » Sun May 13, 2018 1:29 am

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
"Silly and fun things are important." - Elon Musk
Software > Drama • https://www.patreon.com/renpytom

User avatar
Zetsubou
Veteran
Posts: 475
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 » Sun May 13, 2018 3:04 am

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
-Commissions: No One But You, Written In The Sky, Diamond Rose, To Libertad, Catch Canvas, Love Ribbon, Happy Campers, Wolf Tails

Working on:
Circadian Loop, My Heart Grows Fonder + VN writing commissions

Image

User avatar
Zetsubou
Veteran
Posts: 475
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 » Sun May 13, 2018 5:51 am

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
-Commissions: No One But You, Written In The Sky, Diamond Rose, To Libertad, Catch Canvas, Love Ribbon, Happy Campers, Wolf Tails

Working on:
Circadian Loop, My Heart Grows Fonder + VN writing commissions

Image

User avatar
PyTom
Ren'Py Creator
Posts: 15200
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 » Sun May 13, 2018 11:59 am

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
"Silly and fun things are important." - Elon Musk
Software > Drama • https://www.patreon.com/renpytom

User avatar
Zetsubou
Veteran
Posts: 475
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 » Sun May 13, 2018 5:08 pm

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
-Commissions: No One But You, Written In The Sky, Diamond Rose, To Libertad, Catch Canvas, Love Ribbon, Happy Campers, Wolf Tails

Working on:
Circadian Loop, My Heart Grows Fonder + VN writing commissions

Image

User avatar
PyTom
Ren'Py Creator
Posts: 15200
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 » Sun May 13, 2018 5:50 pm

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
"Silly and fun things are important." - Elon Musk
Software > Drama • https://www.patreon.com/renpytom

User avatar
trooper6
Lemma-Class Veteran
Posts: 3385
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 » Sun May 13, 2018 8:33 pm

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: 1308
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: xavimat
Location: Italy
Contact:

Re: Ren'Py 7.0.0 Prereleased

#28 Post by xavimat » Sun May 13, 2018 8:41 pm

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.
Cops&Robbers A two-player experiment
Fear&Love Why can’t we simply express our feelings? Why am I afraid to say ‘I love you’?
unknown [Sci-Fi - mystery - computer]
Honest Critique (Avatar made with Chibi Maker by ~gen8)

User avatar
Zetsubou
Veteran
Posts: 475
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 » Sun May 13, 2018 9:13 pm

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
-Commissions: No One But You, Written In The Sky, Diamond Rose, To Libertad, Catch Canvas, Love Ribbon, Happy Campers, Wolf Tails

Working on:
Circadian Loop, My Heart Grows Fonder + VN writing commissions

Image

User avatar
Jackkel Dragon
Regular
Posts: 121
Joined: Mon Mar 31, 2014 7:17 pm
Projects: CPD2 series, EA, BN
Organization: Team Despair, Nightshade
Location: USA
Contact:

Re: Ren'Py 7.0.0 Prereleased

#30 Post by Jackkel Dragon » Sun May 13, 2018 9:15 pm

@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.
Current Projects:
  • Eldritch Academy: A Romance/Paranormal Thriller Visual Novel about a Japanese boarding school's dark secret. (Lemmasoft) [Nightshade]
  • Blooming Nightshade: A lighthearted Romance Visual Novel set at the school from Eldritch Academy. (itch.io) [Nightshade]
  • Novels and short stories. (Shireishi, Those That Linger: GhostSense, and more) (Tumblr) [Nightshade]
  • Corpse Party D2: A series of RPG Maker and Ren'Py fangames based on CORPSE-PARTY's D-2 ending. (Tumblr) [Team Despair]

Post Reply

Who is online

Users browsing this forum: No registered users