Custom Imagebuttons instead of Basic Textbuttons in RenPy Main Menu Guide
Vložit
- čas přidán 28. 07. 2024
- Image buttons in Ren'Py game main menu for a more unique look without messing up the pause menu (too much).
0:00 This is what we're working towards
0:10 Intro
0:22 Ren'Py project start
0:48 Default menu look
0:55 Menu background image
1:37 Resizing background image
2:41 Cut my image into buttons, this is my last resort
5:33 Export layers as images in GIMP
7:33 _hover versions of buttons
8:47 imagebutton instead of textbutton
10:35 get x/y position of buttons
11:40 imagebutton xpos and y position
12:32 button hover click sound*
13:40 save (load) button
15:45 vbox image position messed up fix
17:13 Shift-R (autoreload changes in RenPy)
19:16 Fixing imagebuttons on top of game menu
* You don't actually need the [ rectangular/square paranthesis ] after 'hovered'. Those are only needed if hovering the button is supposed to call multiple (comma-separated) functions.
How to install GIMP • How to Download and In...
Complete click sound effect tutorial • Creating a Click Sound...
Thanks to @tyras_extra_bagelization and @cannibal.chrollo for posting at / how_do_i_make_the_butt... and for permission to use the nice menu image in a tutorial - Věda a technologie
Hey just wanted to say you can bypass the xpos ypos button thingy. I have a file that's as big as my game screen on medibang (I use that as my art editor) where I place my button exactly where I want it. Then just use imagebutton auto "gui/mm_start_%s.png" focus_mask True action Start() and it will automatically be in the right place. :) just make sure the rest of the picture is completely transparent.
Had a feeling this would work but wasnt sure if Renpy 'knew' which bounds were transparent. Thanks for confirming!!
Just figured it out myself, and returned here to comment, lol
How will it be automatically where you want it? Could you explain please?
@@TrueMonkeyNinja Let's say, you have 1920x1080 picture of hall, where you need a button on a door. You take the whole picture, cut everything, except that door and keep the rest space transparent, so you have a small door on a 1920x1080 picture. If you use this picture for your button, it should work like a charm!
i did this but the dimensions are all messed up when i put it in the game... even though i made it match with the dimensions of the game in my art program, when i put it in, it's completely wrong??
In case you are using Photoshop:
- Use the select tool to select it, then press CTRL + C to copy, and CTRL + V to paste. It will paste the selection as a new layer
- Right click the desired layer in the layer menu, and click "Quick Export as PNG". It will automatically crop it down to the layer size and only export that layer
- To find the coordinates, click on the layer and press CTRL + T. In the top left-ish hand corner of your screen, you will see the coordinates of the top-leftmost corner of the layer.
If you have trouble somewhere on 11:40 :
make sure there's a "start_idle" and "start_hover" image
make sure you add "gui/" before the name of the image, and do not include the idle or hover part
and the "True action Start() needs to be in the same line as the imagebutton auto
THANK YOU THIS HELPED SO MUCH!
you're a literal life saver! Fixed my problem. Thanks so much
My goat
Bro. You saved me. Thank you.
THANK YOU
that "click click click click" felt ASMR goooooooood~~~~
I was thinking the exact same thing!! Never heard any asmrtist who says click like that 😭
I've found a better method of reconfiguring the game menu so it doesn't have the main menu buttons!
Leave your new code for the image buttons where it is (under screen navigation():).
Go to the end of the main menu code (before where it explains the game menu screen using comments), and type "screen navigation2():" or something to differentiate it.
Then, make a new RenPy project, find the navigation code, copy it, then paste it under your new screen.
Change the "use navigation" in the game menu code to "use [name of new screen here]."
Thanks for this tutorial btw! I'm new to RenPy and I'm actually attempting to make a visual novel as a present for me and my partner's first anniversary.
Fckin thank you, this was more helpful than video when it comes to ingame main menu
can confirm that it works like you described. Thank you very much!
thanks! the solution of the video had no logic for me. this has much more sense.
@@genshinfiok sorry to bother you, but can you please help me? In this comment it says "Then, make a new RenPy project, find the navigation code" and i don`t understand what navigation code, under what screen?
Hi, could you explain what you mean by change the USE NAVIGATION (where is this?)
Thank you, thank you, thank you! This is easily the best Ren'Py tutorial I've ever seen. Your explanations are so clear and logical (much clearer than the Ren'Py documentation and anything on Lemma soft forums, that's for sure!) If you did more of these I would lap them up! Thanks again.
Thanks, that's very encouraging to read! I'll be keeping an eye on the renpy subreddit for interesting problems to solve and maybe people will ask questions here or on my renpy hello world video. So see ya in the next guide ^^
For those who have problems on 11:40 with "Tab characters not allowed", I fixed it by editing it directly on Atom (the same as used to edit* the script). I already tried to do it on notepad++ and didn't work, it automatically identifiy spaces as an unknown language.
Now, on the last part, I fixed my problem on the 19:45. You will have two "use navigation", on the second one you will only put that # at the beginning of the command, you will paste the cutted part (from "fixed" to "confirm not main menu") bellow the first "use navigation" and voila, it'll working without problems.
Yo tengo el mismo problema, si pudieras ayudarme:(
@@lacuentadev Fijate en el espaciado, osea sí es como dice el del vídeo peeero, lo tienes que pegar a la izquierda, si no, el lenguaje piensa que es un "hijo" y no te lo acepta como tal. En otras palabras, fíjate que "screen navigation()" esté pegado a la izquierda.
@@lacuentadev A y también deja activado el primer "use navigation"
@@JonasSpartan Bueno, realmente resolví todo el problema al pasar el código a Atom, igualmente gracias Jsjsk
thank you so much for this, and ty for pointing out that save should be load, ill definitely fix that! tysm
Thanks for this! I'm still a beginner at coding but the more I learn about it, the more it seems a lot simpler than what I initially thought^^ it also gets more fun, maybe I'll pursue a job in game developing-- which is a bit of a stretch for me though to be honest
Fantastic tutorial on customizing the main menu. It's not a huge change to a game but things like this just feel more polished when a dev puts the effort in to do something like this IMO. Looking forward to trying it myself.
Dude, I've been looking for a remotely comprehensive overview of image mapping for years; many thanks for this video!
Oh my lord, you have no idea how useful this is!! This makes me so tempted to try this out for my game!! I will definitely keep this in mind for the future, and thank you for such a wonderful resource!
Thank you so much for making these tutorials! I've just started using Ren'py and to say it's confusing without any coding knowledge is an understatement, haha. But it's so much more understandable when you explain and show things.
oh please keep making renpy tutorials. these are so helpful.
OMG THANK U SO MUCH!, me and my friends need this for a project at school. You saved us, thank you
I would kiss you if I could, you have no idea how happy I am when this has worked as a work around for a problem with my Main menu buttons, thank you!!!!
Thank you for this tutorial! It took me many hours but I finally got mine working consistently in my project!
I wish you made more ren'py tutorial videos. This is extremely helpful!
Omg thank you thank you thank you my main menu came out so well and I love it and it’s all because of you so thank you so much!
Thank you for this tutorial, I never knew I needed this
Almost lost me at 19:16 but this still helped me big time. Thanks!
Such an amazing tutorial. Thank you!!!!!!!!!
Thank you so much. It the best tutorial I've ever seen!))
Awesome tutorial!!!
Thank you!!
Very helpful thank you my dude
Thank you for this helpful video.
Thanks, man! I should have done this ages ago.
Amazing! tyvm! super tutorial!
Thank you so much, this was so helpfull!
really good tutorial! and super helpful thank you, I just kinda wondered what you did at the end tho, it looked like you set some things back to their original way and I got a little lost 😂 basically how did you get the custom menu not show up on preferences/load/game menu?
Yeah it ended up being a bit quick. I should have zoomed out or something to illustrate it better.
So at first my solution to prevent the image menu from showing up in the game menu was to move the content of `screen navigation` into* `screen main_menu` - where `use navigation` was written. And comment out `use navigation` in both `screen main_menu` and `screen game_menu`.
The problem is that this leads to the game menu not having any navigation.
My solution was to keep what I copied into `screen main_menu` but restore `screen navigation` and also undo all my original changes, restoring the text button navigation. Then I de-uncommented `use navigation` only in `screen game_menu`
*moving or copying "into" something means moving/copying code into a block. you can tell what a block is by looking at indentation. `screen game_menu` has 0 spaces on its left. `tag menu` has 4 spaces on its left, meaning it is "inside" `screen game_menu`. The next block starts as soon as a line somewhere below it also has 0 spaces on its left. (This is most likely not correct Python terminology but I hope its understandable)
Please let me know if it's still not 100% clear.
@@qubodupDev thank you for taking the time to write it out for me! It was really helpful and I managed to get it working smoothly 😄
amazing i love you
THANK YOU SO MUCH!!!
So helpful thanks
you are my savior
THANKS SM !!
Thank you
THANK YOU!
Thank you so much man, this is one of those tutorials that is just SO GOOD and so needed, and you learn a TON while making it too.
I had a SINGLE QUESTION; and that is, what if I wanted to add a transparent text button? I tried this method with text buttons that are image buttons, but they have transparency behind them. IE, say my bg has a looping pattern, so it isnt just a solid color image or static image. Is there a 'hotbox' function like that or something where I can set which region is actually hoverable and clickable?
Life saver!
I did every thing like the video But the start button is the only one working but others don't
I'm just getting into renpy, so my working knowledge is a little lacking. I was imagining a game mechanic that would allow a player to be focused on something in the foreground with a blurred, but as he moved the cursor to the blurred background it would focus on the background while blurring the foreground, kind of like a rack focus on a camera. I saw people make a parallax mechanic based on mouse placement, so I didn't know if a similar thing could be done for this, where as the mouse moves over certain zones a new image in an image sequence would display, mimicking a rack focus type look. Is something like that possible?
Super helpful! Just wondering if you knew a way to make the click sound not when you hover over the image but when you click on it?
I have a question - if you don't crop the individual idle/hover buttons, and you set the mouse to only detect the button above an area that isn't transparent, then do you really need to crop the buttons? I think if you don't crop them, you can position them easier over the background image without looking for coordinates, because the scales will be the same. Or does the start screen become heavier like that and the game lags?
Does this method works with quick menu too? Great tutorial btw
an easier way to get rid of the button overlay in the other menus (e.g. Preferences Menu) you can # the second use navigation line without having to cut and paste the whole menu screen
Thank you 🙏🏻
yuo are everything to me
The only working button which I got is "start", the rest absolutely do not want to appear in the main menu, I'm freezing, I've already several times almost threw my laptop. Absolutely no idea what to do...
I still don't know the reason why my buttons didn't work, but by mixing two different codes and through REAL luck I created working code, yay!!! Thanks so much for the tutorial!
@@wormeow what was the code?? i got the same issue and i dont want to rip every single hair off my head
@@wormeowcould you tell me the code? I have the same issue and I don't know how to fix it
@@user-rv9gc9vm9j did you fix it ?
@@imtrappedinmydadsbasement @user-rv9gc9vm9j @raczy-3364 if you make a fullsize image only one of them will load you have to crop them
Have you made a tutorial regarding on the buttons under the gui dialogue box during gameplay? (Save, load, skip, etc.) Replacing the text buttons with images, would it be the same as it was done here?
i have the image buttons showing in the correct position but i cant click on them nor is the colour changing when i hover over them and the original menu text is at the top left bunched together which i can interact with i have tried both cropped images and 1920 x 1080 transparent backgrounds neither is working any fix would be appreciated
This was really helpful but I'm having some issues with the buttons. After I click on the load or about options, they stay floating on the screen after they've changed the window. I'm a bit new to renpy so if anyone could help me with that I'd appreciate it a lot! (Nvm, I realized all is explained at the end lol thanks regardless!)
Is there a way to make the hover a lot smoother?
Can you do a tutorial on how to do the game menu please👍🏼
Quick Question! How do you put audio on the pre-existing buttons? I decided to ask you since this video was so useful and I know you'd do a great job at explaining it!
It's quite easy. Just put:
hovered [ Play("sound", "audio/soundname.mp3") ]
right after Start ( ) to every button :)
@@diediedice i did this and it doesnt show any errors, the game runs, but when i hover nothing happens. What do you think the issue could be?
@@mortyxisonyt Hmm...In which folder did you put your mp3 file? Maybe try putting it into the audio folder and change "soundname.mp3" to "audio/soundname.mp3"? Also, double check that the file isn't just silence instead of the sound you wanted. Lastly it could also be that your sound is turned off (in the game settings). I hope something in here helped ^^
@@diediedice thank you for replying! I tried all but sadly for some reason it still doesn't work. I will look more into it and reply if I find a solution in case someone is struggling with the same problem
@@mortyxisonyt No problem! I'm sorry it didn't work though. Good luck with your research, I hope you find out how to fix it :))
12:30 I did everything and saved and went to open the project and it said a exception has occurred this is what it says
File "renpy/common/00start.rpy", line 212, in script call call_load_reload_game from _call_load_reload_game_1
File "renpy/common/00keymap.rpy", line 504, in script
python hide:
File "renpy/common/00keymap.rpy", line 504, in
python hide:
File "renpy/common/00keymap.rpy", line 514, in _execute_python_hide
renpy.load("reload-2") Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?
If you can help me with this that would be really great🤕
try closing and reopening the project (dont forget to save your script!)
this method worked for me, tell me if it works for you
@qubodupDev how did you configure notepad++ for renpy? i can't get it to highlight the markup language
Btw, it's probably better to use hovered (and unhovered) for actual images, for sounds it's easier to use hover_sound ("sound", "path/to/file") or activate_sound ("sound", "path/to/file") no need to add the Play statement as these parameters are passed directly to renpy with those functions (if you add Play it won't work, which can be confusing because for hovered you MUST add Play for it to work, hence, save hovered for other stuff like images).
In case you're still not convinced, there's also a noise clipping sound if you pass over the button really fast when you use hovered (for my sound anyway), but with hover_sound it doesn't happen, cheers.
Is RenPy capable of dynamically adjusting aspect ratio? I'd like to make my game playable on both 21:9 and 16:9 monitors without black bars (with 16:9 just cutting off the extra width as needed). Or do I need to make two different versions of my game?
Very good question. From what I found so far, RenPy can't handle different aspect ratios :|
Found a forum post from 2015 saying that they want to add it one day...
Sorry But I would love to see how you fixed the image buttons ontop of game menu again, it was very unclear and I had trouble understanding what to do, nonetheless good vid
What if I want the audio to play only when you click the button?
it's been literally a year but the problem is that when i reload the game for seeing if the buttons works it say "tab characters are not allowed in Ren'py script" what i have to do to resolve this problem?
Hi, I'm having a problem with making the other buttons to work, I can get the start one! But I have load, options, and info but non of them with light up or work, and I did everything like you did and it frustrating me, heck I even deleted renpy for a fresh reset but still! If anyone has any advice I'd be so grateful!
Awesome video, thanks a lot! It only took me like 4 hours haha. I used a png photo, not a full background. So it was a pain finding the button coordinates. I had to do it all manually. I finally have everything working except 1 little bugger. The button hover sound isn’t working. I wrote it exactly the same, but I get a can’t find the file error every time. I tried it with the file in audio, game file, even tried changing the name. It is still not working. I am trying to research it but nothing is helping so far. Would really appreciate if anyone knows how I may fix this.
hey, idk if im too alte to this but, i had the same issue with game music, and it helped putting it in the images folder with a subfolder called music so the path was "music/buttonsound.mp3". dont ask me why, i have no clue
but it solved the issue for me
I have done everything without skipping anything, but renpy gives me an error saying that tab characters are not allowed in renpy scripts.
Help :')
SAMEEE
I don't even know if someone is still watching this video or is willing to help me, but here's my problem : I want to make the menu image appear with a dissolve effect when the player is launching the game, and not just make the image appear all at once, since my menu music has a kind of fade-in effect. Is it possible to do that?
In the last section "fixing imagebuttons on top of game menu", I followed all of the instructions but it did not work for me. It just deleted my imagebuttons and brought back the standard main menu. I found another comment on this video saying:
I've found a better method of reconfiguring the game menu so it doesn't have the main menu buttons!
Leave your new code for the image buttons where it is (under screen navigation():).
Go to the end of the main menu code (before where it explains the game menu screen using comments), and type "screen navigation2():" or something to differentiate it.
Then, make a new RenPy project, find the navigation code, copy it, then paste it under your new screen.
Change the "use navigation" in the game menu code to "use [name of new screen here]."
I tried this method as well but I got this error:
File "game/screens.rpy", line 431: end of line expected.
"screen navigation2():"
Can someone please help me?
When I did the last part, the original text buttons appeared in the menu alongside the image buttons. How do I fix this?
20:56 I did everything and when I go to the main menu it doesn't allow me to click on the start or anything the buttons dont work anymore🤕 I got really lost at the end
👌
i tried this imagebutton is working after that i got an error saying " 'focus_mask' is not a keyword argument or valid child for the vbox statement. focus_mask > True" same error for action start() and hovered.
So I had an issue where when I clicked on my Load or Options button, it would bring up a transparent version of the game menu (I customized my game menu before i did the main menu oops) and everything looked junky. It took me quite a while to find out what the heck I was trying to fix, but for anyone having the same issue!!
Go to your screens.rpy, and underneath screen game_menu(title, scroll=None, yinitial=0.0): there should be another couple lines, one that says style_prefix "game_menu"
underneath this line should be something like "if main_menu: add.gui_main_menu_background"
all you need to do is change it to "add.gui_game_menu_background" and it'll pull up your custom game menu instead of the transparent thing that it did to me. :) i hope this helps others haha.
Does your method work even if the user is not using full screen, smaller or larger (full screen) resolution?
Edit: I testet it, Ren'Py will scale it automatically, great :)
Ik this is a year old but with the hiding the buttons from when you go onto another page (19:16) whenever I do it,it completely breaks my game and I have to keep it as it was before
I’m really confused.
If this helps I use the software Atom,if you could try to help me figure what I’m doing wrong that would be a great help
Same!! It keeps crashing my game when I delete the navigation. If you find a fix to this please let me know!
why does it keeps saying that tab characters are not allowed in renpys scripts at the line 305?
How can i export a image in GIMP with a transparent background?
I did everything I had to do (although it only occupied 1 button) when playing the game I get this error: file "game/screens.rpy", line 301: tab characters are not allowed in ren´py scripts
Since the rest of the image is transparent at the time, do you need to do the cropping step? Wouldn't it just autoalign correctly if you left the extra transparent space?
I wondered about this as well once I was done with it all. You are completely right, this should work and save time figuring out coordinates and typing those in.
I wonder how many buttons it'd take for performance to drop significantly...
@@qubodupDev So can it be done without the coordinates it is too hard for me to do since I am new to all of this?
How will this work man ?
@@esm6427 You can skip the "Crop to Content" step for the buttons (first at 5:43), and export the full layer for each button. This wil allow you to omit the the xpos and ypos values when coding it into ren'py. Exporting the full layer will inflate the file size of a PNG slightly, but it's marginal, and makes it much easier to work with, especially when they're static elements that always appear in the same place.
@@obliqueninja4961 Thank you for the reply
Thank you very much for the tutorial! I know this video is quite old, but if you're still there could you please help me with a problem?
I've made an imagebutton for a painting on the wall of a background: when you click on it, it displays a zoomed image of the painting and a comment by the main character. I've used "show screen" instead of "call", 'cause I wanted the dialogue to continue if you click anywhere else. So far, so good: everything works, except for the fact that when you're done looking at the painting and you click, the game kicks you back to the title screen. I've looked everywhere and for the life of me I can't find the right script line to resume the gameplay!
This is my code:
screen living_room():
imagebutton auto "bg scene_3_painting_%s":
focus_mask True
hovered [ Play("sound", "audio/click.mp3") ]
action Jump ("look_at_painting")
label look_at_painting:
show image "painting_see.png"
with dissolve
alice "It's a painting."
hide image "painting_see.png"
I have a question: Does this work for any sort of button, and does it have to look like part of the menu image, or can they be buttons that stand alone against the menu backdrop?
i wouldn't believe so. What i would do it put the buttons on the screen image and treat it the same as if it fit.
I'm having an issue where replacing the Load button with an image button puts the image button in the save/load screen instead of the Main Menu screen. Any ideas on how to fix this would be greatly appreciated!
I have the same issue :(
The sound on my image buttons has a delay, which is really unfortunate since my game is heavily rhythm, based. Anyone know how to fix it? I can't find a solution anywhere online.
Could I do this in photopea?
can u make animated image button?
I have an issue with the coding, there seems to be a problem with using True its like it wont recognise that word
That True is in the same line (line 306 in his case). You have to write it in the same line
@@avellox1419 Yes,Continuallty erro....
Hello, how are you?. I have a "little" problem. As of minute 11:40, when modifying screens.rpy and saving the result, Renpy notifies me of an error: File "game/screens.rpy", line 306: Tab characters are not allowed in Ren'Py scripts. What do you think it is? I have the latest version of Renpy and I followed the steps as is in the video D:
have you figured that out?
for anyone wondering:
if you edited with notepad, too bad, when you use TAB or space renpy registers is as some weird language
if you edit with anything remotely similar to atom, notepad ++ , that is suited for coding, press enter at the end of the previous line and your cursor will jump to where it sould be (in this block)
then the best it would be to paste already written somewhere else prepared code so you dont accidentally press space etc.
it often happens with screens renpy i had it many times, really annoying
try to never interfere with any lines when you do stuff in screens lol
I'm having a problem. I did the load button exactly as you showed in the video, but it's NOT appearing on my game. I tried refreshing but still not there. And it's not showing any error, it just doesn't show up in my menu... Can you please help?
My guess is that you first add the image and then (below it) add the background image. Is that it?
Did you save the file?
What does refreshing mean? Shift-R? Restart the game.
@@qubodupDev I managed to fix the problem but I have no idea how... Haha. Thank you!
Yes, sorry. English is not my first language.
I'm having the same problem! No matter what I do it doesn't show up :(
Edit: just tested the other buttons similar to load and those aren't working too
@@great-white-bengal-tiger i have the same problem :(
this method bricked my game for whatever reason
you should try VS Code. It's a great editor. Far better than notepad++
To anyone who only want the audio and not the imagebutton;
Just use: "hovered [ Play("sound", "audio/Pen_Clicking .mp3") ]" after "action Start()"
THANK YOOOU damn
hi !! im having problems with the hover sound button code, whenever i try to put it it always says an error. " the name 'play' is not defined" can you please help me?
You have to write *Play* , not *play* (has to have upper case P)
Does this solve it?
@@qubodupDev it did !! thanks alot!
I have a problem:
I named all my images exactly like you did, but it gives me this error:
Exception: Imagebutton does not have a idle image. (auto=u'gui/mm_start_%s').
But the thing is, the start button does have an idle image!! It's in the gui folder, named "mm_start_idle" with all the other menu buttons.
I also made the exactly same changes you did, So I do not understand where the problem is
Please, could you help me?
EDIT:
Found a way that works!!
I use this code:
imagebutton xpos XXX ypos YYY idle "mm_ZZZ_idle" hover "mm_ZZZ_hover" focus_mask True action Start()
- Replace the XXX , YYY and ZZZ by whatever they need to be
- PUT THE BUTTON PNG IMAGES IN THE 'image' folder, not the 'gui' one. (It wouldn't work for me if the images where in the 'gui' file.)
- if you want to use this code for another button than the start one, just change "Start()" by whatever you need
THANK YOU, i have been struggling for two hours trying to get it to work
I have a problem on 12:21 . It says True is not a keyword argument or valid child for the box statement.
I know this is a year later but THANK YOU SO MUCH! This was just the solution I was looking for.
Not working it's showing "TypeError: 'ShowMenu' object is not subscriptable"
I have a problem. It keeps saying " File "game/screens.rpy ", Line 307: u'True' is not a keyword arguement or valid child for the vbox statement. True > action Start()". What do I do for this? Can you help me out.
edit: Fixed it! Yet it isn't in the right spot I wanted it to be in :(
what was the fix for the True statement? i have the same problem. (nvm just continue on the same line and even though it doesnt highlight it works).
i have this same problem too i need to know
edit : So apparently, i need to make sure there's an start_idle and start_hover image.
make sure you add "gui/" before the name of the image, and do not include the idle or hover part.
and the "True action Start() needs to be in the same line as the imagebutton auto
You lost me at the debugging part. I keep getting the
File "[File name]", line 367: expected statement.
fixed->:
12:20 If I type in TRUE it gives me an error message and the letters do not turn orange when I type it. Any ideas?
NVM I figured it out. Instead of entering TRUE in a new line I just continued the line. The letters still didn't turn out orange but it worked
True action not working ,, I know I can't code , it always gives me error , I can't even get hello world working .. I hate coding ..
I kneel
bro, after every step i'd notice a problem which i would spend an hour crying over until i realised that you adressed it in the nesxt section bruh.... so od
Am I the only one who hears Snape.
What game is that in the thumbnail
SUFFOCATION!!! NO BREATHING!!!
09:45