devolution

Author Topic: General Discussion  (Read 3821877 times)

0 Members and 14 Guests are viewing this topic.

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #6825 on: March 15, 2016, 01:24:50 PM »
No, onlayer screens doesn't help with that...
Even more, when I use it, the looped animation keeps playing forever, and even hide doesn't hide it. While without it I don't even need to hide the image, it disappears once the interaction is over and the game jumps to the interactions menu.

Anyway, I pushed it as it is, take a look at the kiss interaction (with lover status to pass all checks at once, Intimacy-> Become Lv testing command). Since we cannot do tricks with camera because we don't know where the face is, we can at least decorate the portrait.
Even if it's impossible to make it work above everything, I still can show it higher, above the portrait in terms of y coordinate.
« Last Edit: March 15, 2016, 01:27:18 PM by DarkTl »

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #6826 on: March 15, 2016, 03:36:19 PM »
...

I've fixed the animation show (it's timings might be a bit off), it looks really great and there is prolly no need for automation of any kind.

Don't forget to hide the images after you're done with them, that was your issue. Screens layer didn't work because I put the say screen on higher zorder and forgot :(

It looks really great at any rate, maybe we can do something with the picture as well. Like zooming in a bit... but it'll prolly be very tricky due to current code structure (and will prolly be a first good use to the UDD controller I wrote couple of weeks ago).
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #6827 on: March 15, 2016, 03:58:07 PM »
Surprisingly, it always hides itself when we return to the interactions menu even if I don't do it (except when I used onlayer screens), so I figured I might as well skip it this time. Probably has something to do with the interaction screen structure.

Zooming of some kind is a must have for hugs anyway.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #6828 on: March 15, 2016, 04:26:13 PM »
Surprisingly, it always hides itself when we return to the interactions menu even if I don't do it (except when I used onlayer screens), so I figured I might as well skip it this time. Probably has something to do with the interaction screen structure.

Ren'Py (by default) has 4 layers: https://www.renpy.org/doc/html/displaying_images.html#layer

Master layer where Ren'Py script sh!t gets shown most of the time is cleared with scene statement which is run when you enter locations/interactions and etc. That's why it was removed.

Zooming of some kind is a must have for hugs anyway.

Yeah... you're prolly right... I need to think if it's a better idea to use my new class or to rewrite that bit of interactions.
Like what we're doing?

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #6829 on: March 15, 2016, 06:11:32 PM »
I improved the transition between girlsmeets and interaction for now. What I don't like are the messages constantly telling the player what choice he had made (like "You're trying to kiss her"), they feel really out of place.
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #6830 on: March 16, 2016, 01:11:13 AM »
Then we need tooltips for interactions options to make clear what they do. Some of them are not intuitive for non devs  :)
« Last Edit: March 16, 2016, 01:20:10 AM by DarkTl »

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #6831 on: March 16, 2016, 03:33:25 AM »
Then we need tooltips for interactions options to make clear what they do. Some of them are not intuitive for non devs  :)

Which ones are you concerned about? Maybe we can come up with an alternative?
« Last Edit: March 16, 2016, 03:53:42 AM by Xela »
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #6832 on: March 16, 2016, 06:55:06 AM »
Buttons are too small for long names. Atm we have big "How she feels" button that doesn't looks good at all. And buttons like "General" or "About Job" that will be quite vague if I remove all lines where we tell what choice player had made. Same for sex, we don't just jump there, we ask the character. But if I change it to propose to have sex or something, it will be too long for sure, and the button will become huge.


That aside, I have a problem with combining renpy and python code. This thing shows needed animation in renpy after we call it.
Quote
    transform interactions_angry_pulse_tr:
        xanchor 0.5 yanchor 0.5
        block:
            linear 0.05 zoom 1.1
            linear 0.05 zoom 0.9
            pause 0.2
            linear 0.05 zoom 1.1
            linear 0.05 zoom 0.9
            pause 0.8
            repeat
           
    transform interactions_sweat_drop_tr:
        xalign 1.0 yalign 0.5 alpha 0.0
        linear 1.0 yalign 0.0 alpha 1.0
       
    transform interactions_scared_lines_tr:
        alpha 0.0
        linear 1.0 alpha 1.0
       
    python:
        interactions_angry_pulse = im.Image("content/gfx/animations/interactions/angry.png")
        interactions_angry_pulse = At(interactions_angry_pulse, interactions_angry_pulse_tr)
        renpy.image("interactions_angry_pulse", interactions_angry_pulse)
        interactions_sweat_drop = im.Image("content/gfx/animations/interactions/uncertain.png")
        interactions_sweat_drop = At(interactions_sweat_drop, interactions_sweat_drop_tr)
        renpy.image("interactions_sweat_drop", interactions_sweat_drop)
        interactions_scared_lines = im.Image("content/gfx/animations/interactions/scared.png")
        interactions_scared_lines = At(interactions_scared_lines, interactions_scared_lines_tr)
        renpy.image("interactions_scared_lines", interactions_scared_lines)
       
image interactions_hearts_flow:
    anchor (0.5, 0.5)
    "content/gfx/animations/interactions/hearts/heart1.png"
    pause 0.1
...
    repeat

label interactions_show_anim_emotion:
    if current_emotion == "angry":
        show interactions_angry_pulse onlayer overlay:
            xpos 180
            ypos 596
    elif current_emotion == "sweat":
        show interactions_sweat_drop onlayer overlay:
            xpos 180
            ypos 596
    elif current_emotion == "scared":
        show interactions_scared_lines onlayer overlay:
            xanchor 0.5
            yanchor 0
            xpos 218
            ypos 577
    elif current_emotion == "love":
        show interactions_hearts_flow onlayer overlay:
                xanchor 0.5
                yanchor 0.5
                xpos 220
                ypos 637
    return
But it requires current_emotion variable which might as well be passed as an argument, and besides I'd like to include this stuff into override_portrait function, where animations can help to replace some missing pics. Meaning it should be a python function, not a renpy call. But I have no idea how to show animations there, especially with additional parameters like xpos.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #6833 on: March 16, 2016, 08:41:59 AM »
Ok. I'll see if we can merge the portraits with these animations somehow tonight.
Like what we're doing?

Offline oratorio

  • Newbie
  • *
  • Posts: 7
Re: General Discussion
« Reply #6834 on: March 16, 2016, 09:11:21 AM »
Buttons are too small for long names.
Same for sex, we don't just jump there, we ask the character. But if I change it to propose to have sex or something, it will be too long for sure, and the button will become huge.


You could use "proposition" for the sex button. It essentially means propose to have sex but with not so nice undertones (you would proposition someone you thought was a slut, not your girlfriend).

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #6835 on: March 16, 2016, 09:25:11 AM »
You could use "proposition" for the sex button. It essentially means propose to have sex but with not so nice undertones (you would proposition someone you thought was a slut, not your girlfriend).
Well, I will use it for whores characters then  :)

Ohhkey, my push directly from a browser was a failure. I hoped it will ask me where to put it, but nope, it just uploaded it silently -_-

There is no need to actually combine portraits and animations directly into one single piece. We may not want animations in some cases, and besides some animations look better when they are not entirely inside the portrait frame. What I need is a python function that will show animations like renpy does at the moment, ideally without the need to hide it manually (again, it's a part of how it works atm). Then I will be able to freely use it for both the portrait function and interactions.

I tried to mess with renpy.show inside python code, but examples from your code are a bit different from my case, so it didn't worked.
« Last Edit: March 16, 2016, 09:31:53 AM by DarkTl »

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #6836 on: March 16, 2016, 05:41:24 PM »
Just got back home :(

It's not possible to show the animations over portraits without hiding them, as I've explained, we have to show them on a layer not cleared by scene. I could prolly come up with a system but I doubt that it's worth the effort.

As for the python function, I need more info on how it is supposed to work. It sounds like a job for my new UDD but it's hard to condition everything without the better knowledge of interactions and what you want to happen there.
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #6837 on: March 17, 2016, 06:36:25 AM »
Well, you use renpy.show to show animations in many places inside python blocks. I probably just don't know how to do it correctly to make it work  :D

After my last push label interactions_show_anim_emotion shows all animations I was able to find depending on a certain variable. But in order to use it we have to use call, and you can use only one call. While some parts of interactions already work based on calling, so it will be impossible to use the label everywhere.

Thus I believe a function is needed instead of interactions_show_anim_emotion label that does the same thing.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #6838 on: March 17, 2016, 08:04:30 AM »
Actually you can call as many times as you like (labels will stack), you just need to always return from called labels so not to pollute the call stack.

I'll take a look at what you did today, if I can understand what it was meant for, maybe we can come up with a better way to do it.

Edit: Yeah, I see what you did there, your approach of doing it is great, code just needs to be improved a little bit, there is a bit of unnecessary clutter there and you should have passed current mood as an argument to the label but we can flip it to a function as well, no problem... Maybe it will be useful outside of Ren'Py script at some point (like in Arena for example) and calling a label is a clumsy thing to do.

Those animations would have to be hidden I think, unless you want to automate them to be a part of the say window, we don't know for how long we want to show hearts animation (for example).
« Last Edit: March 17, 2016, 08:26:26 AM by Xela »
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #6839 on: March 17, 2016, 09:54:26 AM »
I read about issues with calls a bit at the renpy forum, and I had an impression that too many calls will result in overflowing calls stack. So you say I can call a label, inside it call another label, and as long as they all end with return there won't be a problem?

and you should have passed current mood as an argument to the label but we can flip it to a function as well, no problem...
They are multipurpose. Like, angry animation can be successfully used with indifferent to show displeasure that is too small to be angry. Or with angry portrait to show very strong anger.

Those animations would have to be hidden I think, unless you want to automate them to be a part of the say window, we don't know for how long we want to show hearts animation (for example).
Well, when I tested the hearts animation, it lasted until we hide a line. I mean, I have to call it before every line if I want it to last longer. Like:
call hearts
char.say "ayy"
<animation disappears here after we click left mouse button to show the next line>
call hearts
char.say "lmao"

Probably because the engine hides its screen layer after every line.
« Last Edit: March 17, 2016, 09:58:33 AM by DarkTl »