A downloadable asset pack

Download NowName your own price

This hopefully is an easy-to-use drop-in solution for Ren'P. To make a gallery for images and a replay gallery to be used in any Ren'Py game

I tried to make this as easy as I could to use. I hope you find it useful. The replay gallery will only show replay-marked areas that have been played. The gallery has two ways to unlock the gallery images and uses the renpy notification system to let the player know a new image has been unlocked.

Complete instructions are included. Just use the Launch Project button from the Ren'Py launcher to read them in the game.

With version 2, you no longer need to generate the thumbnail images; they will be auto-rescaled from the original images for both galleries.

Have fun and stay safe out there

StatusReleased
CategoryAssets
Rating
Rated 4.6 out of 5 stars
(12 total ratings)
AuthorBadMustard

Download

Download NowName your own price

Click download now to get access to the following files:

Gallery_Replay-1.01.rar 4 MB
Gallery_Replay_2.rar 4.7 MB

Development log

Comments

Log in with itch.io to leave a comment.

Hi! How do you make the image gallery background transparent? I want it to look something like the menu screen! Thanks a lot for making this.

something like this a screnshot

I'm currently working on an update to do this, but as you can see it's not quite ready... yet 

give me a little while, it takes time (my family, my job and my VN kind of come first)

but I am working on it

Of course! It already looks really good, lemme know when it's done. :)
And happy holidays btw.

Where can i relock all images?

(+1)

use the renpy launchers Delete Persistent action to re-lock the images (and reset everything about the project)

Thank you!

you're welcome

good luck with your project

This is very usefull for me, thanks!

(+1)

you're welcome

good luck with your project

Second issue, sorry for bothering you! As you see in the screenshots the descriptions of the various replay are not fine, even if I change colour, I want to try maybe an outline but I don't know how to do it, can you help me?

In the game I have all the writes outlined with this in the main script:

define gui.dialogue_text_outlines = [ (1.5, "#000000a8", 0, 0) ]

define gui.name_text_outlines = [ (1.5, "#000000a8", 0, 0) ]

But with the description of these replays I dunno how to do it.



edit the gallery.rpy file and find this section

        for i in range(start, end + 1):
            hbox:
                spacing maxthumbx - 20
                xalign 0.5
                yalign 0.1
                text gallery_items[i].name # we will be editing this line 


and make this change


                text gallery_items[i].name # we will be editing this line: # add a colon
                    outlines [ (1, "#e9ec09", 0, 0) ] # adjust the outlines as required

whoops, I don't have the gallery.rpy. I have only replay and replay_setup because I need only replay. So I need to put everything inside even if I only use replay?

sorry I thought that was the gallery 

in the replay.rpy file find this section

        for i in range(start, end + 1):
            if renpy.seen_label(Replay_items[i].replay):
                hbox:
                    spacing maxthumbx - 20
                    xalign 0.5
                    yalign 0.1
                    text Replay_items[i].name # make the same changes as before but to this line add the colon and the outline command below it

Ok found it, works like a charm! Now I have the only issue with roles

Sorry, I have another question. In my game the user define the roles at the beginning of the game, while in replay they're always the default one like "landlady". Is it possible to (easy) toggle something to remember the user defined roles?

after you call the screens to get the name add this 

    $ persistent.nome_protagonista = nome_protagonista
    $ persistent.nome_landlady = nome_landlady
    $ persistent.nome_ruolo = nome_ruolo

now for the fun part 

in the replay.rpy file find this section

        for i in range(start, end + 1):
            if renpy.seen_label(Replay_items[i].replay):
                imagebutton idle Replay_items[i].thumbs:
                    style "gallery_button"
                    action Replay(Replay_items[i].replay)  # make changes to this line only!!!


and make this change

action [SetVariable("nome_protagonista", "[persistent.nome_protagonista]"), SetVariable("nome_landlady", "[persistent.nome_landlady]"), SetVariable("nome_ruolo", "[persistent.nome_ruolo]"), Replay(Replay_items[i].replay)]

I made these changes as you say;

Main script after call screen:


And in replay.rpy this change:


But doesnt work ç_ç

did you start a new game and enter some names?

Yes, even deleted persistent and started again from scratch but nothing. Maybe has something to do with that "3" above like there is an error?


Here is the code if you can put an eye on it:

default nome_protagonista = "Andrew"
default nome_landlady = "landlady"
default nome_ruolo = "tenant"
define gui.dialogue_text_outlines = [ (1.5, "#000000a8", 0, 0) ]
define gui.name_text_outlines = [ (1.5, "#000000a8", 0, 0) ]
define p = DynamicCharacter('nome_protagonista', color="#3d3dca") # Blu per il protagonista
define l = DynamicCharacter('nome_landlady', color="#ff69b4") # Rosa per la landlady
define s = DynamicCharacter('nome_ruolo', color="#00ff3c") 
define c = Character('Clarissa', color="#FFA500") define m = Character('Margot', color="#fcfc00") define j = Character('Jennifer', color="#17c2bc") screen inserisci_nome_protagonista():     zorder 100     vbox:         align (0.5, 0.5)         text "Before starting this journey, what is your name?"         input default nome_protagonista value VariableInputValue("nome_protagonista") length 20         textbutton "Confirm" action Return() screen inserisci_nome_landlady():     zorder 100     vbox:         align (0.5, 0.5)         text "Another important question, what is your landlady for you?"         input default nome_landlady value VariableInputValue("nome_landlady") length 20         textbutton "Confirm" action Return() screen inserisci_nome_ruolo():     zorder 100     vbox:         align (0.5, 0.5)         text "And you for her?"         input default nome_ruolo value VariableInputValue("nome_ruolo") length 20         textbutton "Confirm" action Return() screen check_age_screen():     zorder 100     vbox:         align (0.5, 0.5)         text "This game deals with themes not suitable for minors."         text "Have you reached the legal age in your country?"         textbutton "Yes" action Return()         textbutton "No" action Quit(confirm=False) # Inizio della storia  
                label start:     call screen check_age_screen     call screen inserisci_nome_protagonista     call screen inserisci_nome_landlady     call screen inserisci_nome_ruolo     $ persistent.nome_protagonista = nome_protagonista     $ persistent.nome_landlady = nome_landlady     $ persistent.nome_ruolo = nome_ruolo
(1 edit)

those lines are because you haven't used default of define for those variables, but you don't have to do that with persistent variables

Thanks a lot! I will use this in my game!

you're welcome

good luck with your project

little question, replays are closed when the label ends? What about parts of game where, due to a menu with choices, I have multiple labels I want to include in a single replay?

(1 edit)

replays are ended with  $ renpy.end_replay()  and can span multiple labels

you can have multiple end points for a replay as it will stop when every it hits one of them 

just be careful that they don't interfere with other replay areas 

HTH

Thanks! So they ends with $ renpy.end_replay(), but starts with the simple label name, am I correct?

yes that is correct

also the player has to have played past the label to unlock it in the replay gallery

Thank you so much for this asset!! I have a question though. Is there a way to check which gallery image is shown on the close up screen? i want to set up a background selector with the gallery images..

screen gallery_closeup(images)

the image link is in the variable images that is being passed to the gallery_closeup

you could add another button to pass that to a variable that you could use for your background

Thanks you for your help!

is there a way to circumvent an issue like in the following-

label sc1:

show image1

"look at this"

$ renpy.end_replay()

label sc2:

(needs to keep showing image1 during this replay)

"looking at it"

$ renpy.end_replay()

-without having to manually show image1 again, in case there's a scenario you won't be able to?

you could just show the image again there, it won't affect anything or check in they are in a replay and show the image again like this

if _in_replay:
     show image1

thank you!

(+1)

you're welcome

good luck with your project

Thank you. How can I reduce the size and centralize the gallery thumbnails?

I want to add decoration to the edges of the screen  :s

take a look at this modified gallery.rpy file.

https://drive.google.com/file/d/16N1JB6ZAuR5J_HJ6h3Ciahr51tk7eWuG/view?usp=shari...

 in testing I reduced the size of the gallery thumbnails to 288x162 and put a frame around the thumbnails and buttons to shrink it
I tested with a 1280x720 gui so you may have to adjust the size of the grid and the thumbnails / lock image to find a good fit for your gui size

Thanks, I also solved it a few hours ago by putting both sections, text and thumbnails in frames, but now I would like to know if I can title the page screens separately, Ex: page 1/Chapter 1 and page 2/Chapter 2

you could set up an if statement to check the variable gallery_page and display text base off of that, or if each page is for a specific chapter i.e. page 1 is chapter 1, page 2 is chapter 2; then

    $ chap = gallery_page + 1
    label "Chapter [chap]"

keep in mind gallery_page is 0 through (however many pages you have) and you must have 6 images only for the chapter .

So. Is it possible to change the background on each page? It would be best to include the chapter title there.

And thanks for responding. I swear this is my last question. I love your gallery.

yes it is possible and should be quite easy

you're welcome

good luck with your project

Is there any way to have a different locked thumbnail for each unlockable image?

yes it can quite easily. grab this copy of the gallery_setup.rpy and use it 

https://drive.google.com/file/d/16xcCir-QJYiJ8L99DSYtJxIspA0e1-M7/view?usp=shari...

if you have already edited your gallery_setup.rpy be sure to copy over the changes you have made to this one before overwriting yours.

I chose a separate folder for the individual lock images, but you can combine them with the thumbnails (or anywhere really) just be sure to point to them correctly in the gallery_setup.rpy file

thank you so much!!!

Dude, thanks so much for sharing this code! I was already going crazy. This saved my life hahaha. I have a question, would it be very complicated to be able to play videos in this gallery?

you're welcome

yes, define your gallery image like this example:

image img1 = (Movie(channel="movie_dp", play = "images/movies/chapter1-1.webm"))

good luck with your project

Thank you very much, it worked perfectly! If you don't mind, I could share your itch.io page in my game credits as a thank you.

you can if you want to, i don't mind.

My game fails whenever I use the replay gallery as it doesn't remember my mcname, here is my code

$ mcname = renpy.input("What is your name?", default="Daniel")

    $ mcname == mcname.strip()

    if mcname == "":

        $mcname = "Daniel"

Do you know how to fix this?

I'm going to assume this code is in your script for entering the character's name during the game...

first try it like this

$ mcname = renpy.input("What is your name?", default="Daniel").strip() or "Daniel"

$ persistent.name = mcname

then in your code at the labels for the replay do this

label replayLabelHowOriginal:

            if _in_replay:

                show screen Replayexit #the optional exit provided with the gallery

                $ mcname = persistent.name #see what I did there...


that should fix your problem

You are the GOAT of renpy <3

(+1)

I am just a well practiced idiot...

Hi! This gallery was so helpful! Thank you! I was wondering if there's a way to add a "credits" section to the Full CG when you open it up?

Full CG??

I do have a scrolling credits screen that you can use..

Oh I mean more like, adding a text box under the full image once you click it. I have some fanart for my game's gallery and I want to include something below it that says the artist's name

there is already the description that is shown on top of the image when it is unlocked, you can use that ??

Is there a way to move it lower so it's not at the top of the image?

(1 edit)

yes there is, edit the gallery.rpy file

in it there are two -->  grid maxnumx maxnumy:  <-- the first is for the images, the second is for the text adjust the --> yalign 0.1 <-- (IN THE SECOND one only) to a larger number to move it down 0.5 will be in the middle of the image and 1.0 would be the bottom

thank you very much for the code

quick question, how would u make it so that each gallery page is viewed with a dissolve transition instead of it being instant?

you're welcome

no, there is only one page that gets changed when you go to another page

ah, so a transition can't be implemented huh

(+1)

Sadly no it can not be done

you could do the initial showing of the first 6 when the gallery is first shown, but that would be all after that instant again

This gallery is really good, however I can't figure out how to add more pages. Could you please explain?

as you add more images, it will add more pages automatically and a next and previous button to change to them

Thank, figured it out <3

you're welcome

good luck with your project

Really appreciate this - I had a gallery working on a previous version of a VN and the new Python setup totally screwed it over, and very little I looked up managed to fix it. One snag I'm running into is that the images I had were locked by a persistent variable (if you got a certain game ending) which had previously been marked as "condition." There's 20 of these images, so I'm banging my head against a blanket check for all of them. Any insights would be highly appreciated!

(1 edit)

is this for my gallery or your old gallery?

My gallery uses the renpy seen to unlock an image. 

if you downloaded the files, there is a short tutorial in there as the VN. Use your renpy launcher and give it a read. It will show you how to unlock the images without the user seeing them in game

This is asking if you know a way to tweak your gallery function to unlock via persistent variables vs. seen. My old gallery has a lot of very arcane code in it that doesn't seem to translate easily, and I was wondering if you had more familiarity with those kind of unlockable parameters. :)

I'm sure it could be done that way, but if you're using my gallery just do a

show galleryimage

hide galleryimage

instead of setting a persistent.variable the image is not displayed and it gets unlocked in my gallery, you can do this multiple time to unlock more than one image at a time.

show galleryimage1

hide galleryimage1

show galleryimage2

hide galleryimage2

(+1)

I think is great of you to share your vast knowledge with other Devs! I know this isn't your first time doing this! Anytime Devs collaborate, us Users benefit!

(+3)

I don't know about vast...

But I do share the things I think others might be able to use in their projects

I've been figuring out how to add gallery to my adult VN.  I'll give this a go, if that's OK by you.

(+2)

That's why I put it up here so people can use it in their VN

(2 edits)

Can I use this template to show video scenes? Is there much extra code for that?


Edit: 

Figured it out. I just used the replay gallery and created new labels that only played the videos sequentially, instead of having it jump to the label in the game where the videos for the scene appears. This way I avoided the dialog, and making the user continually click through each video that makes up the scene.

I guess I was looking for a video replay gallery more than a "play this part of the game over again" thingy.

Anyways, thanks for posting this, not to mention all the help you provide on Reddit. 

 

Really appreciate how -- if you run this in Ren'Py -- you've created a tutorial on how to use this gallery as part of a Ren'py project. Many of us pick up Ren'py to tell stories, and don't have formal training in programming. Having someone who knows what they're doing (you) explain how to use this asset properly really helps. Thanks!

(+1)

I'm just glad you could find a use for it in your project.

When I finally finish this thing -- it's going to be at least a year yet -- I will try to get a free copy to you. Thanks again!

(+1)

Thank you

Hey there! I'm developing my own VN right now and have it Published too. I have downloaded your Phone assets and now this. I would like to use it in my next Chapter of my Game, when I jump from Tyrano to Renpy. I would like to Credit you if that's ok. I know you uploaded it as creative common, but its the least I can do.

Yeah, sure, that's cool!!

Awesome :) Thank you, for all these assets. Its very helpful especially for someone who is still very beginner :) Thank you.

Thanks so much for sharing this!

You're welcome!!

This looks good will give it a go

Sweet! This might come in handy one day!  :)

are you working on a VN?

Not actively yet, but I'm working on scripting outlines based on some ideas I've had in my head for a long time, and if the script outline works out to be something I think would work as a serious format AVN (not one of those 30 minute eroges, but several hours of story combined with some NSFW fun) I will try my hand at it!
I've picked up 3D rendering as a hobby recently, so I'll keep on practising on that in my spare free time, so I can hopefully make renders similar to your quality one of these days!

And I thought you deserved some cash for that effort!

Given the number of unfinished games on here, I have come to the conclusion that it is better to pay once a game is finished... But this is something that is useful and usable as it is, so...

(2 edits)

Thank you.

I have a few other things on here for Renpy (they're free as well) !!

https://badmustard.itch.io/

Yeah, I saw those before, but at this time I don't see a use for those two yet... 

Thanks for pointing them out though!

Awesome. Good luck with it !!!