Пікірлер
@LMFAO_FAN_2004
@LMFAO_FAN_2004 18 сағат бұрын
very concise video. good job
@owencmyk
@owencmyk Күн бұрын
Haven't used RenPy in like... a year, but this seems cool
@Sunsym
@Sunsym 2 күн бұрын
It's ridiculous that KZbin isn't pushing this video to more viewers. This is one of the best Ren'py tutorials for doing this. It is easy to follow, clear and succinct. Thanks for sharing!
@etorommka
@etorommka Күн бұрын
Well... I've got this video recommended although I have no business with game design or programming or whatever this is about 🤷 So KZbin in fact is pushing it, but probably to the wrong audience.
@Sunsym
@Sunsym Күн бұрын
@@etorommka Oh wow, good to know it's getting out there. This is about programming a computer game/visual novel with graphics, artwork, text and music.
@qriist1850
@qriist1850 19 сағат бұрын
Monkey paw: *curls*
@yyokidd46012
@yyokidd46012 2 күн бұрын
hi, sorry but im new to renpy and coding in general, wgat if a wanted to play only a sound for every cps in the game? i don't want different sounds for every characters, i want a general sound for the entire game to play when a first letter is shown and to finish when the last letter of the dialogue is shown, can you help me? great video btw
@yyokidd46012
@yyokidd46012 2 күн бұрын
init python: def play_typing_sound(event, interact=True, **kwargs): if event == "show": renpy.sound.play("audio/sound/beep.ogg", channel="typing", loop=True) elif event in ("slow_done", "end"): renpy.sound.stop(channel="typing", fadeout=0.1) define mario = Character("Mario", callback=play_typing_sound) this is my code and i have an audio called beep in game/audio/sound and is .ogg
@BambooCalculator
@BambooCalculator Күн бұрын
@@yyokidd46012 Make sure your new channel "typing" is defined somewhere in your init python block: renpy.music.register_channel("typing", mixer=None, loop=True, stop_on_mute=True, tight=False, file_prefix='', file_suffix='', buffer_queue=True) Then it's just a matter of adding "callback=play_typing_sound" to each of your character objects. Example: define lucas = Character("Lucas", callback=play_typing_sound)
@Sunsym
@Sunsym 5 күн бұрын
This, as all the one's I've seen from you here, are some of the best tutorials I've seen on youtube, because of the way you explain every line and the various tricky commands. Thank you for sharing.
@Flames_Spirit
@Flames_Spirit 8 күн бұрын
Thankyou so much
@kashimaadsen
@kashimaadsen 15 күн бұрын
Hi there, this is super cool! Thanks for showing me this. Know that you can enter the label names directly in the program and export it as "label/track" and all the voice lines will be already uploaded with the id.
@boredchris
@boredchris 14 күн бұрын
Good to know, thank you!
@Imnotsplix
@Imnotsplix 16 күн бұрын
how about just checking forr any file name that is not supposed to be in your game lol
@boredchris
@boredchris 15 күн бұрын
Yeah, using similar logic we could implement an integrity check to make sure there are no extra RPY files in the game directory
@Sunsym
@Sunsym 20 күн бұрын
This is sooo helpful! I've been trying to figure out how to do exactly this. Thanks for sharing your knowledge.
@circusletterman
@circusletterman 20 күн бұрын
Hey, i was wondering if you could make a pastebin on the code you created in this video or a link to the renpy that you created so i get get a basis on how it works, id appreciate it :)
@boredchris
@boredchris 20 күн бұрын
Good idea! I should have done this sooner, but I've just created a GitHub repo: github.com/bamboocalc/continuous-text-sounds
@boredchris
@boredchris 21 күн бұрын
CORRECTION: Our code should be held in a "python early" block. Even though RenPy won't throw an error, I should note that "init python early" is not a valid block.
@SadKris
@SadKris 25 күн бұрын
Fun fact: This does not solve the problem as the rpa can be extracted before launch on a legitimate copy, run normally with unrpyc, then have the code modified to remove those lines and run normally without owning it
@boredchris
@boredchris 24 күн бұрын
Good point. On that topic, I've found that unrpyc can be thwarted if you include a variable with a value like "ü" in the init python block. I'm not near a computer so I don't have the exact error message handy, but from what I've seen, TaxHeaven3000 implements something similar to prevent modders from accessing the code that way.
@DanielTheHoff
@DanielTheHoff 25 күн бұрын
A great introduction to a big problem. Thanks!
@Ninja_Tendo
@Ninja_Tendo 25 күн бұрын
I understand wanting to protect your work, but I really think you should look into some other methods and not recommend this to people -- especially having the game delete itself. All it would take is some Steam-side bug, some lack of connection, some future change or breaking of the API and your game is not just unplayable but possibly *non-recoverable* for someone who bought it. I'd feel uncomfortable even relying on achievement.steam in any real way (outside of achievements) in case the player is simply in offline mode, and there is some desync between states involved. That shouldn't be the case, but I wouldn't rely on it. And I could be wrong, but I'd think a copied game would be run from the .exe, therefore might not initialize Steam (what if the pirate doesn't have Steam at all?), therefore the 'achievement.steam != None' line will fail and the game will run fine. If not, a savvy pirate/modder would just de-archive the game with something like UnRen and remove this code anyway (or spoof Steam integration, if necessary). In that way, the only people who could feasibly be hurt by this are those who DIDN'T copy the game and don't intend to copy/share it. I think a screen that freezes the game and tells the player "hey, the game thinks something weird is going on; make sure you've started the game through Steam in Online Mode or send feedback to the developer through Steam Support" would be appropriate, if not still a bit heavy-handed; if you really want more than that, unfortunately I think the easily-reversible engines like Ren'Py and RPGMaker just aren't the way to go. At any rate, the only way I'd go so far as (attempting to) delete the game files is with evidence akin to a signed confession of "yeah I pirated this game intentionally" -- anything less than that is just going to hurt innocent players and lead to a lot of confusing support requests.
@AlexisRoyce
@AlexisRoyce 25 күн бұрын
Absolutely BLESS YOU for this tutorial. I'm in the middle of debugging this year's Spooktober entry, it's my first time adding VA to a game, and you've saved me an enormous headache.
@boredchris
@boredchris 24 күн бұрын
Glad you found it useful!
@karolinam3633
@karolinam3633 22 күн бұрын
Same here haha! Good luck with your spooktober project!
@boredchris
@boredchris 27 күн бұрын
CORRECTION: The label for your splash screen must be called "splashscreen" ---- OTHER THINGS TO NOTE: os.path.join(renpy.config.basedir, 'game', 'archive.rpa') is the path to the RPA file. renpy.config.basedir brings you to the base directory of your RenPy game, as the name implies. In general, the complete path should look something like this: C:\Program Files (x86)\Steam\steamapps\common\YOUR_GAME_NAME\game\archive.rpa This assumes that you named your RPA file "archive", and that there is only one RPA file in your game.
@Sunsym
@Sunsym Ай бұрын
That was super helpful and clear to understand. Thank you for sharing this process!
@RyanSchwertfeger
@RyanSchwertfeger 2 ай бұрын
😮👏
@sirdraco6542
@sirdraco6542 2 ай бұрын
This is a phenomenal video. Thank you.
@thundersalt7031
@thundersalt7031 2 ай бұрын
this is super helpful, thank you a ton for sharing this man!
@Arckanda
@Arckanda 4 ай бұрын
Let's say I'd like the Goombas to have a different voice set than Mario does. How could it be implemented in the code?
@boredchris
@boredchris 4 ай бұрын
If you make another function, let's say "def goomba_speak(event, **kwargs)" and then update your character "goomba" to have "callback=goomba_speak" somewhere in its object. For example...... define goomba = Character("Goomba", callback=goomba_speak)
@LuckySpark42
@LuckySpark42 Ай бұрын
@@boredchris Hi! I did this and slotted this into the character code, but it comes back with a NameError: name 'goomba_speak' is not defined. I'm not sure how to fix this
@boredchris
@boredchris Ай бұрын
​@@LuckySpark42 In the script.rpy file, make sure that inside the "init python" block, there exists a function called "goomba_speak" and make sure the init python block appears at the top of the script, before you define any of your characters. I wish KZbin allowed screenshots in comments, but here's a pastebin of what the code should look like: pastebin.com/XzEue63d