Dialogue intensive game

I plan to write a dialogue intensive game in PULP (Between a visual novel and an RPG) and I would like to customize teh speech bubbles design.

  • custom frame design
  • display icon of the face of the speaker beside the bubble
  • animate the bubble when special effects are needed
  • having the bubble form a cons¥versation between several people like a messaging app (something seen in bloom)

Are there already some snippets to achieve that, is it even possible in PULP?

  • custom frame design

You can edit the Pulp menu/window UI under the Font section.

  • display icon of the face of the speaker beside the bubble

This is a little trickier. If using the existing Pulp dialogue system (say or ask), you'd want to allow a draw event to occur with your speaker face on screen before calling another Pulp window/dialogue.
If you don't use the Pulp's built-in dialogue system, then it's just a matter of drawing all the components to the screen yourself (draw for the speaker, window for the bubble, label for the text). But you'll have to pre-wordwrap the text yourself.

  • animate the bubble when special effects are needed

You can't use the Pulp built-in dialogue for this. You'd need to custom draw it to the screen. All say, ask, menu functions will pause any ongoing animations. So, you'd have to go back to the previously mentioned method of drawing all the components onscreen yourself. Then you can indeed animate it. It's a bit more effort though.

  • having the bubble form a cons¥versation between several people like a messaging app (something seen in bloom)

If drawing the components yourself, then sure you can. Like the other issues, will be a bit more effort than using say but is definitely doable. It could get tedious though. If there's a lot of code in the draw event, you could affect your game's performance.

2 Likes

Thank you very much!!

custom frame design

I mean I can have only a single frame design? Is it possible to have multiple designs to use in different situations?(I guess the next answer is a solution to this one too)

display icon of the face of the speaker beside the bubble

I saw in the documentation we can display a tile in a string so it may be a workaround (not so good design-wise though) but your suggestion of drawing all the bubble components may be the best. I would have to create a custom function to check the text length and put carriage returns accordingly right? (I was not sure it could be done in pulp but I began to see how I could code it thanks)

I mean I can have only a single frame design? Is it possible to have multiple designs to use in different situations?(I guess the next answer is a solution to this one too)

You can have only one UI design if you use the built-in system. If you want more than one style of chat bubble, then you'd need to draw the additional styles beyond the first directly to the screen in the player draw event. You could draw them as tiles.

I would have to create a custom function to check the text length and put carriage returns accordingly right? (I was not sure it could be done in pulp but I began to see how I could code it thanks)

If you know what the length of the text is already going to be, so assuming this isn't dynamically generated words/text, you can force a line break with \n wherever you want in the text. Then it's just a matter of testing it out onscreen to ensure the line breaks are where you want them.
For example:
label "This sentence is broken\nup into two lines" at 1,1
would read as

This sentence is broken
up into two lines

You are essentially coding all your line breaks ahead of time this way. The advantage would be less code running (depending on where your custom line-break code is happening, performance could be affected). That's up to you.

1 Like

Thank you! I think that in the long run I will code the speech bubbles length and height dynamically based on the text length. I have already done that in LUA so I think I could do it in PULP but if there are already some snippets of a similar code somewhere it would help☆

@hokori You might find this tutorial helpful for displaying the face of the speaker near the dialogue:

Good luck!