Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

brunoais

77
Posts
2
Topics
33
Followers
11
Following
A member registered Nov 13, 2016 · View creator page →

Creator of

Recent community posts

(1 edit)

I can't reproduce that, so I need more information which may help me knowing what's wrong.

What are you doing when you place the rpe file? Are you only reloading? Are you restarting renpy? Does this happen when you remove the rpe and only reload renpy without restarting renpy?

Do you have any code that tries to do something with layers which runs before init -5?
Do you have a non-updated version of ActionEditor3 (it had a bug which caused issues).

If you can send me a simplified version of the VN which also fails, that works too (you can replace all images with the same image as placeholder, if you prefer)

The issue is non-partisan. Doesn't matter about political parties. This is an attach on the people.

The payment processors consider themselves more wise than you about what you may buy

Collective Shout is just a pawn. The excuse for the payment processors.

You're welcome.

I can edit the main page to mention that.

I didn't test this but I'd assume it works:

A workaround you can try is making a new function that does that for you.

def says(who, what):
    return renpy.say(who, speechPauses.add_speech_pauses(what))

If you are using tooling that is calling renpy.say directly, you can consider replacing renpy.say() function but renpy also uses that function, so that can lead to duplicated pauses.

If you tell me the specific situation you are dealing with, I may come up with a compromise for you that won't be as hard to work with.

Didn't I? WOW it's been so long!

It's been my main job and I'm doing commissions as my 2nd job and this time they haven't been ren'py commissions. Then I'm KO but I had opportunities but I didn't remember. Sorry. I'll try to do Monday or Tuesday. I have a commission finishing this weekend.

Sorry I didn't write anything. I genuinely forgot.

I'm hopping to have another ren'py commission so I have an excuse to continue my GuiManipulate too.

Ok. So,

  1. Where is the best place for a newcomer? I've used the file too much already and I'm already fully biased...
  2. OK. I'll do that next week (busy with a commission right now).
  3. I think that would be too intrusive to the user I much rather do some sort of default behavior in my code than changing settings for the user. Even worse when my code is more of a "appliance in the VN dev's house". I would be displeased if my fridge started messing with my AC thermostat, even if for my own good.
(1 edit)

Relative pauses requires the text speed to not be maxed out. It's relative to the pause between each character. If the pause is 0 (the text speed is maxed out), then there's no possible pause because the multiplication to make it relative results in 0.

Try reducing the text speed in the preferences. You can see at 0:56 on the bottom left of the preferences screen.

I consider this is a UX problem and not a bug. What do you suggest for me to fix it? Maybe a message that appears under the "Sentences" bar when the Text Speed is maxed out warning just that? Or maybe nearby the "Relative pauses" radio button? Or maybe you have a better idea? For ease of install, I don't want to require more than the use for integration in settings.

Just noticed the edit.

Did the change. Looks good now?

Thank you.

I used what you wrote there, I've made the change and I've place it here: https://gitlab.com/brunoais/renpy-speech-pauses/-/snippets/4833299

Please test whether it's working right because I don't have any Indonesian VN to test on.

Awesome to read that! I'll be eagerly waiting!

I received DM confirming it works. I'm releasing a new version

I've tried making changes so the inspect adapts to the GUI size.

The direct download link is here: https://gitlab.com/brunoais/renpy-guiInspect/-/raw/dist/renpy-guiInspectv0.3.1-pre.rpe

Let me know if this works for you. If the issue is solved for you, I'll release it as a new fix version.

Thank you for reporting

I have a couple of ideas but I don't know how comfortable you are editing an rpe, so I'll get you a probable solution soon. Give me just a small while to figure this out properly.

Either that or grab the previous function and store it locally while calling it, which is what I suggested and KigyoDev did

Sent an example as discord DM

(1 edit)

Export doesn't work.

I tried converting a .rpy file translation I have for one of my previous commissions and the file comes out with just a line as the header with the correct language set but and all the already translated and not translated yet strings aren't there. It's only the single header line.

By the way, I had to run it through Proton because this is a windows executable.

You're welcome. Glad it helped you. Did you have any issues using it?

Nice!

Go ahead, you can use the code I gave you for this.

Sounds good. 👍

There's some things I really would want to implement such as the concept of namespacing the variables, functions, transforms, etc... so it doesn't clash with other stuff. The rest, that's not as important.

I'm open for discussion or comments, if you want. You can contact me. I'm also on Discord and other discussion forums.

If you want some help with it, I'm open to try this too. Maybe we can come up some solution together.

Thank you for your time to answer and explain your situation.

For licensing, in my case I ended up with MPL 2.0. It's strict enough for my creation but loose enough to allow others to use it. Attribution enforced by the license is really something I'd like it to have. I could edit it but then it's a custom license that is untested and unproven (and couldn't be called MPL or any variation of that).

I'm open to cooperate and help making stuff that is useful for the community. Like these tools you spent a lot of time on. If I can help, I'm open to help. I want Ren'Py to succeed and I believe these tools help achieving just that.

If you ever feel like cooperating with something, I help with what I can. You can find me here or Discord or lemmasoft forums. I'm brunoais pretty much everywhere. See you soon 😉.

(1 edit)

Now that I remember... I think I've seen that function before. Is it this? https://github.com/ojii/imgsize

I remember seeing something like this when I was doing a library for image loading and handling (which is still not ready for public consumption) a couple years ago...

Nevermind. I get it now. The standalone script was fixed.

I don't know what get_size is. Did you mean to use renpy.image_size() instead? That's what I used so I could see the demo.

E.g.

Instead of:

v = renpy.Render(get_size(self.mask)[0], get_size(self.mask)[1])

I swapped it with:

v = renpy.Render(*renpy.image_size(self.mask))

(That way it only calculates the size once too)

However, this is a very slow function, so I think it would be productive if you cached it. I tried caching it and I got a significantly more responsive UI.

Other than that and some few more things... Overall, this is very well done. It's a keeper.

Part3:
I like what you are doing this and I want this to succeed. I want to see more of good mouth flaps. However, when I see the code provided. I see multiple points I feel I shouldn't just leave like that.

So, here's some thing I'd suggest. Maybe you can learn too, the same way this presentation had things for me to learn.

Oversampling

Ren'Py already comes with oversampling out-of-the-box. You only need to use the "@" in the file name and Ren'Py takes care of oversampling for you.
Manual: https://www.renpy.org/doc/html/displaying_images.html#oversampling

Namespacing

I'd like if this example also made use of namespacing. In this case, it involves making us of the "in" modifier for python init.

E.g.
Instead of:

init python:

do:

init python in flapsAndBlinks:


This avoids clashing with functions of other libraries or the VN maker's

Choice

When doing choice, reduce repetition. Make use of the simple expression whenever viable. Ren'Py caches these expressions.

E.g.

alpha 1
choice:
    closed_eyes
choice:
    closed_eyes
choice:
    closed_eyes
    pause 0.05
    alpha 0
    pause 0.2
    alpha 1
    closed_eyes
pause 0.05

->

alpha 1
closed_eyes
choice 2:
    pass
choice:
    pause 0.05
    alpha 0
    pause 0.2
    alpha 1
    closed_eyes
pause 0.05

-----

alpha 1
choice:
    pause  0.1
    mouth_open
    pause  0.1
    mouth_half_open
    repeat 3
choice:
    pause  0.1
    mouth_open
    pause  0.1
    mouth_half_open
    repeat 6

->

alpha 1
pause  0.1
mouth_open
pause  0.1
mouth_half_open
choice:
    repeat 3
choice:
    repeat 6

(code is hard to type in itch....)

WhileSpeaking is intelligently made

The way you do this is smart:

def WhileSpeaking(name, speaking_d, done_d=Null()):
 return DynamicDisplayable(curried_while_speaking(name, speaking_d, done_d))


Finally

Thank you for making this tutorial. I hope it's picked up by many people and this can be used by many more people.

(1 edit)

Part2:
When I read this VN's source code, specially the code used for the examples, it makes me want to 

Using a CCA license for software is weird. However, nowadays mature (and tried-and-true) software licenses do not enforce attribution. I know that feel and I just decided to accept that and hope for people's good faith.

Well done. I wish I could provide such through and complete usage manuals as this one with practical examples to boot.

I have a few separate things I'd like to comment related to this tool, so I'll create a separate comment for each of both.

For starters, It's well presented and it's well done. Quite visually interesting. I see quite some (intended or not) inspiration from Ren'Py's own tutorial. That makes it flow nicely. The links are also fairly welcome.

By the way, while checking this out I found a single typo:

Let us first look at how we put voice lines into our sript. This is important.

With all that text for a jam, typos are those things that appear out of nowhere, no matter how many times you read, you read it right until someone points it out and then it magically becomes wrong 🤣.

This has a lot to go well for it. It has a great base to work on but then it has quirks with its code design which I wish weren't there.

  1. I like how it's well done and how easy it is to set up. 
  2. I like how I could make it work with a VN I'm being commissioned to work on (although this won't be included with it... Maybe).
  3. Being able to choose what sounds are too much for me is such a great addition. I wish I could do this with the lighter horror games to remove insect sounds and remove the jumpscare sfx and out of tune music.

At the same time, I wish:

  1. It had a directory-based opt-in auto mode. It already has the code to auto-guess code generation, which is good. Now it would just need an auto-mode where everything is just done automatically through directory names.
  2. The use of before_main_menu while it must be unique is not pleasant. When I added this tool, the first thing that happened was it blowing up with an error that the label was already defined. It's true the manual warns about it but I wish that you'd listen to one of Ren'Py's callbacks instead and then made a custom screen that appears for a short amount of time.
  3. I wish you namespaced your transforms and styles. I had to rename drop_in because it was already in use elsewhere. Problem was that it was erroring on my own drop_in transform, which delayed by debugging on where this was.
  4. You namespaced your code. Your tool was also not behaving correctly when I first tried because I already had a function called stop_all_audio so, when your tool was trying to execute it, it was actually running my function stop_all_audio which was causing issues. That one wasn't fun to debug.

Good luck with this. Thank you for providing this to the community. Thank you for all the tooling and stuff you've been making over time for free.

This has a lot to go well for it. It has a great base to work on but then it has quirks with its code design which I wish weren't there.

  1. I like how it's well done and how easy it is to set up. 
  2. I like how I could make it work with a VN I'm being commissioned to work on (although this won't be included with it... Maybe).
  3. Being able to choose what sounds are too much for me is such a great addition. I wish I could do this with the lighter horror games to remove insect sounds and remove the jumpscare sfx and out of tune music.

At the same time, I wish:

  1. It had a directory-based opt-in auto mode. It already has the code to auto-guess code generation, which is good. Now it would just need an auto-mode where everything is just done automatically through directory names.
  2. The use of before_main_menu while it must be unique is not pleasant. When I added this tool, the first thing that happened was it blowing up with an error that the label was already defined. It's true the manual warns about it but I wish that you'd listen to one of Ren'Py's callbacks instead and then made a custom screen that appears for a short amount of time.
  3. I wish you namespaced your transforms and styles. I had to rename drop_in because it was already in use elsewhere. Problem was that it was erroring on my own drop_in transform, which delayed by debugging on where this was.
  4. You namespaced your code. Your tool was also not behaving correctly when I first tried because I already had a function called stop_all_audio so, when your tool was trying to execute it, it was actually running my function stop_all_audio which was causing issues. That one wasn't fun to debug.


Good luck with this. Thank you for providing this to the community. Thank you for all the tooling and stuff you've been making over time for free.

Oh wow! I post it and you immediately find it. I just woke up to find that there's already a message.

Thank you! Glad it was useful for you!

No idea what you mean.

Ur welcome

Because it's the closest nth zeroes to the number the game can reasonably store for a number.

It's best you don't mess with them. Export the saves instead.

That's an anti-virus problem. Check what it's doing. It's probably false-flagging some files.

That gives me an idea. I know a JAM that will come soon. Maybe I can do that for that JAM. I'll let you know when I have an initial version for you to check if it looks good.

True. I'll keep it as is now then. I will still implement the n when I have time to also test it works.

Let me see if I get it:
You would like to have a "take me to the source code of this" kind of addon for Renpy? You activate it, then click on the thing where you want to go the source code of and you end up there?

Ah yes. I think I get the idea. If you rotate that way, more like a piece of paper on the table, that would definitely happen. I checked the code about how would it be to implement that. It's not impossible but that one is a bit harder. The hardest part of that solution is the need to invert the levels. Basically, I'd need to figure out first what's the nth of the thing on top (the button in your example) so I can invert the subtraction.

More like 

maximum_level - level 

instead of just 

level 

. Quite feasible. Just takes some extra work.

(sorry. I answered outside the thread)

  1. Yeah. I'd say there's some inspiration from HTML+CSS when Tom did Ren'Py's code architecture for the UI. However, there's clear simplifications all around whenever it was feasible. This is one of them.
  2. I'm not sure what do you mean... Do you mean to have the reverse order for the list that appears? This is actually the same API that Ren'Py uses for the inspector Tool to work.
  3. Yeah. That's fine to implement at some point. N would only work after pressing M but I think that shouldn't be a problem.
  4. No problem.