Q: Creating a Fire Emblem styled dialogue engine?

Discuss how to use the Ren'Py engine to create visual novels and story-based games. New releases are announced in this section.
Forum rules
This is the right place for Ren'Py help. Please ask one question per thread, use a descriptive subject like 'NotFound error in option.rpy' , and include all the relevant information - especially any relevant code and traceback messages. Use the code tag to format scripts.
Post Reply
Message
Author
User avatar
Klokinator
Newbie
Posts: 13
Joined: Wed Jan 16, 2013 4:13 pm
Projects: Phoenix Emblem: Heirs to Destruction
Contact:

Q: Creating a Fire Emblem styled dialogue engine?

#1 Post by Klokinator »

Hey there guys. I'm making a visual novel based on Fire Emblem styled dialogue, but featuring an entirely custom world, graphics, sound, and etc. I really want the dialogue to look similar to how it would look in Path of Radiance/Radiant Dawn combined with the GBA Engine dialogue as well. To that end, I've come up with the following ideas for my UI.

1. The dialogue will have halfbody characters with an over-the-head text bubble, similar to how GBA FE does it. Example here:
Image
The bubble will be much bigger though and will fill up the top 1/4th of the screen.

2. The dialogue bubble will point to a character that is currently speaking. I already have this idea in progress and a good idea of how to do it, by using commands like 1, 2, 3, and etc to make the bubble arrow point towards a character "slot" on the screen.

3. When a character is actively speaking, the other characters will "dim" so that the currently speaking character is shown the most brightly on the screen. My issue is that I can't think of a simple way to dim the other characters and brighten the currently speaking one without using a bunch of code, which bloats my script file and becomes unintuitive to read and check for errors. This is where I need the help.

Can anyone think of a good way to dim the other onscreen characters automatically and only brighten the currently speaking one? If it requires a lot of art assets I can manage, I just really want to avoid typing 3 lines of code everytime a character speaks.

User avatar
PyTom
Ren'Py Creator
Posts: 16097
Joined: Mon Feb 02, 2004 10:58 am
Completed: Moonlight Walks
Projects: Ren'Py
IRC Nick: renpytom
Github: renpytom
itch: renpytom
Location: Kings Park, NY
Contact:

Re: Q: Creating a Fire Emblem styled dialogue engine?

#2 Post by PyTom »

I'll just point out that in Ren'Py, the dialogue statement:

Code: Select all

e "Hello, world."
Is turned into the function call:

Code: Select all

e("Hello, world.", interact=True)
So if you can do what you want with multiple lines (and you probably can, using a ConditionSwitch), you can just wrap those lines in a function that calls a character to do the actual speaking.
Supporting creators since 2004
(When was the last time you backed up your game?)
"Do good work." - Virgil Ivan "Gus" Grissom
Software > Drama • https://www.patreon.com/renpytom

User avatar
Klokinator
Newbie
Posts: 13
Joined: Wed Jan 16, 2013 4:13 pm
Projects: Phoenix Emblem: Heirs to Destruction
Contact:

Re: Q: Creating a Fire Emblem styled dialogue engine?

#3 Post by Klokinator »

Well I was thinking that I would be displaying the characters onscreen in 6-8 set locations, then just using a series of 6-8 custom message boxes that have the little arrow aimed at whatever number they're formatted for.

As an example, slot 1 would be the far left of the screen. I would load a character face into that spot, then use this command:

Code: Select all

1 "Hi there, the far left character is now speaking."
To display the message box aimed at that character. The only really tricky part is making the characters dim and brighten based on who is speaking, as I can't think of a particularly intuitive way of making that happen.

Now, if you're saying that by using the interact= function I can make a character brighten or dim, that's remarkably useful, though I can't figure out how I'll link the number to whichever character is speaking. It'll take some ingenuity but hopefully someone can help me with this issue.

AxemRed
Veteran
Posts: 482
Joined: Sun Jan 09, 2011 7:10 am
Contact:

Re: Q: Creating a Fire Emblem styled dialogue engine?

#4 Post by AxemRed »

You could tint sprites with im.matrix.tint

User avatar
Klokinator
Newbie
Posts: 13
Joined: Wed Jan 16, 2013 4:13 pm
Projects: Phoenix Emblem: Heirs to Destruction
Contact:

Re: Q: Creating a Fire Emblem styled dialogue engine?

#5 Post by Klokinator »

I've seen scripts similar to that, but I not only don't understand how they work, but they seem ridiculously complicated. I mean, if I needed to, I could just add two versions of every sprite, one that's bright and one that's dark and do everything manually, it'd just be a pain to constantly swap everything around. And it would look pretty ugly.

peterah
Newbie
Posts: 6
Joined: Sat May 18, 2013 10:36 am
Contact:

Re: Q: Creating a Fire Emblem styled dialogue engine?

#6 Post by peterah »

PyTom wrote:I'll just point out that in Ren'Py, the dialogue statement:

Code: Select all

e "Hello, world."
Is turned into the function call:

Code: Select all

e("Hello, world.", interact=True)
So if you can do what you want with multiple lines (and you probably can, using a ConditionSwitch), you can just wrap those lines in a function that calls a character to do the actual speaking.
Ahh thanks, I'll try and use a ConditionSwitch where I can and hopefully don't mess it up :)

User avatar
Godline
Veteran
Posts: 499
Joined: Fri Jun 27, 2014 12:26 am
Completed: numerous
Tumblr: godlinegames
Deviantart: godline-games
itch: godline
Contact:

Re: Q: Creating a Fire Emblem styled dialogue engine?

#7 Post by Godline »

Did this ever end up working? I'd love more feedback on this topic.

SundownKid
Lemma-Class Veteran
Posts: 2299
Joined: Mon Feb 06, 2012 9:50 pm
Completed: Icebound, Selenon Rising Ep. 1-2
Projects: Selenon Rising Ep. 3-4
Organization: Fastermind Games
Deviantart: sundownkid
Location: NYC
Contact:

Re: Q: Creating a Fire Emblem styled dialogue engine?

#8 Post by SundownKid »

Godline wrote:Did this ever end up working? I'd love more feedback on this topic.
It's possible and not that hard.

Step 1: Align the text box to yalign 0.0 instead of yalign 1.0. Make the background transparent.
Step 2: Create the bubble as a screen behind the text box. You can make multiple bubbles with different "tails" or make the "tail" a separate screen. You can add a transform to show or hide the text box/bubble with an animation.
Step 3: To lighten or darken the characters you will have to use modification of variables and ConditionSwitch. Like $johndark = True or something whenever you want someone to darken or lighten. Alternatively, just "show" the dark version.

Post Reply

Who is online

Users browsing this forum: Google [Bot], Ocelot