(Multilingual) Localizable Voice & Subtitles System – L.V.S.S.

**(Multilingual) Localizable Voices & Subtitles System – L.V.S.S. **

Have you ever thought “man, if only it would be easier to make subtitles”? Ever wished for an easy way to get voices in your cinematic game? Hoped your game could reach people all around the world with tons of languages, including your own? Do you get a headache every time you check the localization dashboard’s tutorials with all that C++?
L.V.S.S is the solution you were waiting for! Easy to migrate to an existing project, easy to create and translate content, easy to use. :slight_smile:

Quick and easy to setup, LVSS lets you create, manage and use subtitles and voices in any language for your game. Use triggers, events, the level blueprint, your own input, etc to bring your narrative to life. Includes a working options menu and different trigger blueprints.

Preview – Example map and character:
Part 1:

Part 2: LVSS Preview 2 - Blueprint setup - YouTube (blueprint setup)

Use LVSS to have a translator-friendly, localization-ready game and being able to quickly integrate any dialogue or narrative into your game.

- Really quick setup with new project and less than 10 minutes to integrate in an existing one.
- Activate monologues and conversations, from any blueprint or actor at any time.
- Customize the subtitles font, position, box size and position however you wish.
- Options menu ready to use and completely customizable as well.
- Different events and functions:
o Quick subtitles: create and display a subtitle and/or voice specified directly in the function node. It doesn’t use data from any datatable so it is perfect for quick prototyping.
o Simple “monologue”: fire a series of voiced subtitles in the order you specify.
o “Conversation”: fire two monologues with a pause in between, defined by you. Link several for longer conversations.
o Randomized: play a voiced subtitle randomly from a pool that you specify. Very useful for repeating events like killing an enemy, being hit…
o Check monologue length: easily get the length of any monologue so you can time your events perfectly regardless of language i.e. an explosion just after a character mentions it, etc.
o Check conversation length: same functionality, but this one will also take into account the pause in between a conversation. Use it to time and script to your liking.
o Round Countdown event: example of how to use the system with events, display a countdown on screen and then spawn an actor in any Spawner actors (included in the system) on the map. You can select which actor is spawned so you can spawn hordes of minions, pickups, powerups…


Completely datatable-driven:

  • You can add, edit or remove content easily.
  • Add new languages with almost no effort in 5 minutes using my detailed guide.
  • Very translator friendly (import-export CSV format into Excel easily).


Customization for the player:

  • Options to choose whether subtitles, voices or both are active.
  • Option to choose the language for voices and subtitles independently.
  • Master global volume slider for all voices in the game. Can be overridden by the developer for whichever voices they wish.
  • Settings are all in one object, so they’re very easy to save.


Please keep in mind that this is not designed to substitute other blueprint systems already existing that focus more on a Visual Novel/Point and Click style. This is supposed to be a simpler, quicker way to get a cinematic voice/subtitle system in your game that is fully localization-friendly and has all the options you need, since most games do not need such complex systems (as awesome as they are in their own way :)).

Update 1: the content has now been submitted after being tested with both 4.10 and 4.11 Preview 8. Yay!

The full in depth tutorial video can be watched here:


This seems like a better solution to my current dialogue system. Just wondering. Can dialogue be used to triggering events like spawning blueprint actors or drive custom events?



Well, you could, for example, add an event in the SubtitlesManager called RoundCountdown for example, and have that automatically do a countdown like “3… 2… 1… Go!” and after that call an EventDispatcher that triggers custom events in any other blueprint. I’ll make an example of this in a bit.

You could also have it the other way around, for example, if you already have a GameOver event dispatcher called in your char when health is below 0 that updates the HUD, you can modify the SubtitlesManager so that when that fires in your character, it automatically does a voice or dialogue, even chosen at random between a predefined pool of voices.

I hope I’m understanding what you ask correctly :slight_smile:

Edit: Here is how I’ve done it:

  1. Create a new custom event in the SubsManager and wire it to trigger the dialogue you want for the round start, then create an Event Dispatcher called RoundStart and call it:

(Error because I compiled while the Array of subtitles still wasn’t connected :P)

  1. In your Spawner BP, or whichever BP you’re using to handle spawning actors, get SubsManager, bind RoundStart to a new or existing Custom Event and set up the spawning:


  1. Then in, for example, your character if you want the player to press a button to start, or in your menu/HUD widget if you want them to click a menu button, you simply Get SubsManager and call RoundCountdown:

(Note: I use interfaces because I prefer it for organization purposes, but it’s completely optional)

And that’s it! You could have an Integer variable that keeps count of which round the player is in, etc, but this is the basic framework.

If you wanted to do what I said above (trigger certain random dialogue when you die or when you kill an enemy for example) you would do it the other way around. Create Event Dispatcher in your char BP (if you die) or your enemy BP (if they die), bind that dispatcher in the SubsManager to a new Custom Event that calls RandomMonologue with a pool of entries.

This is something I could make standard with the system later on. I’m finalizing the banners for the Marketplace now and will submit as soon as I’m done with that.

Thanks Katilio!

Looks great! I was wondering as I was concerned about fitting in with my questing system. But, this will do nicely. Looking forward to seeing it in the marketplace. Well done.

I’ve been polishing the system and fixing not-quite-bugs. Mainly, it was up to the designer/scripter to organize the dialogues so that they wouldn’t start while something else was playing, because there would be problems. I thought that was a bit lazy of me so I’ve reworked the system a bit, and now you won’t have to worry about that. A new dialogue, doesn’t matter if it’s a simple of a complex one, will cleanly stop the previous one and play as intended, just like in many other games I’ve played.

I’ve also added a “Quick Subtitle” function which I find most useful for quickly prototyping something. Basically, you don’t need any datatables and you define the subtitle and/or voice that you want to play right in the blueprint node, like this:

Thank you! It really means a lot to me :slight_smile: I’ve had to delay the submission due to what I mentioned above, plus the March game jam, plus personal stuff (moving to a new place, and I got a job at DICE!), but I’d really like to submit it before next week so you can get it as soon as possible.

I’ve also already recorded a setup + tutorial video that’s around half an hour long as well, so that everyone can set it up and use it very quickly.

Really Awesome, I was wondering how I was going to go about interrupting dialogues. Busy times, I appreciate you working on this. Congratz on the job at DICE too!

Thanks again! I actually submitted this just a few hours ago, for 4.10 and 4.11, so hopefully it’ll be up soon! I’m updating the OP a bit too.

Hoping a mod can change the title :slight_smile:

Hello! Thank you for this useful asset!
I’m wondering that could you please make a tutorial about using this in multilanguage cutscene?

Edit: I just found out how to do it. It’s easy just add the command in notify tracks. Thanks again, this asset is great!