Localizing Action RPG Game | Inside Unreal

March 25, 2020 | Articles, Blog | 19 Comments

Localizing Action RPG Game | Inside Unreal

>>Amanda: Hey, everyone!
Now available for free, the revised Automotive
Materials collection includes a set of
10 master materials, and over 150 instances,
giving artists the foundation to
add new materials to fit their products. Plus all materials are now
simpler, more organized, more efficient, and best
of all, more fun to use. Download the collection today,
and try it for yourself. Recently we welcomed
Cubic Motion to the Epic Games family. Cubic Motion has been a
longtime Epic partner, integral to notable
real-time demonstrations such as the first Hellblade: Senua’s Sacrifice, live
character performance Meet Mike, and Siren. They are a leading provider of
automated, performance-driven facial animation technology and
services for video games, film, broadcast, and
immersive experiences. By joining forces, our teams
are solidifying our commitment to advancing the
state of the art in the creation of believable
digital humans for all Unreal Engine users. For the sound designers
in the audience, senior technical sound
designer, Adam Block wrote up a thorough Dev
blog on his audio redesign of the Shooter Game
sample project, where he not only made
the soundscape more modern and dynamic,
but updated how the sounds were implemented. For a deep dive, head over
to the Unreal Engine blog. And once you’ve finished with
your lesson on sound design, check out a piece from
Epic’s lead audio programmer, Aaron Mcleran, on Unreal
Engine’s split-screen support, originally rolled out
for Fortnite Season 11. Mcleran describes how
split screen audio works in Unreal, some of the
challenges of implementing it, and why, in the case
of split-screen audio, your intuition may
not always be right. Interactive 3D started
in the games industry, but this technology is
now being used everywhere, from advertising to
manufacturing, architecture, health care, film, and more. As more and more employers
embrace this technology, the demand for real-time
3D skills is skyrocketing. We’d like to introduce
The Creator’s Field Guide to Emerging Careers
in Interactive 3D, a free roadmap for students
and job seekers to help navigate the exciting world
of interactive 3D careers and provide guidance
on the specific skills and competencies these
new roles require. Download The
Creator’s Field Guide to Careers in Interactive 3D
via the Unreal Engine blog. If you’re an Android
developer, please know that Unreal Engine
4.25 requires Android-native Development Kit Revision 21
to support the development of Android projects. This requires a new setup
process using Android Studio. While new documentation
will be published on this process for
4.25’s full release, for those of you trying
out the 4.25 previews, you can check out the new
setup steps ahead of time on our blog. You may have seen The
Mill’s work on The Human Race, previously
showcased at GDC in 2017, or perhaps our spotlight on
their use of Unreal Engine to puppet the monster for
monster.com’s award-winning advertising series called
Opportunity Roars. Watch their latest
short and a brief behind-the-scenes to see
how they cross the finish line to deliver a
piece that seamlessly blends digital and physical
reality for Sky’s Formula One’s 2020 coverage, with the
help of Sky Creative. And over to our top weekly
karma earners, ClockworkOcean, GEODVS, Vecherka, Deathrey,
ugmoe, VOxFire, Nooxet, Grot13, T_Sumisaki, and rumerayaki. Thank you all for
your contributions. Our first spotlight this
week is a stunning tech demo from Black Amber
Digital, specialists in high-end
cinematics and games. They wanted to see what
was possible with ray tracing for a game that
runs in 4K at 60 FPS- and they impressed! If you’d like to stay
up to date on Zenobia, formally Origin
Zero, follow them at Twitter.com/Zenobia_Game. Here you see a beautiful
blacksmith setup by Artattak. They’re
utilizing Quixel Megascans, and are also showing off
ray tracing techniques. Head over to the forums to share
your comments and suggestions. Nice work. The final spotlight is
from Daisuke Sakamoto. And they made these Gibson
Les Paul guitars sing. Not only did they build
a stunning cinematic, they’ve also created
a guitar configurator and virtual showroom
using the Oculus Rift S. Again, jump
over to the forums and let Daisuke
know what you think. All right, thanks for tuning
in to this week’s News and Community Spotlight.>>Victor: Hey everyone, and
welcome to Inside Unreal, a weekly show where we
learn, explore, and celebrate everything Unreal. I’m your host, Victor Brodin. And with me today I
have Mr. Paulo Souza.>>Paulo: Hi. Hi, everyone.>>Victor: Thanks for coming. You are our South
American Evangelist– or one of our South
American Evangelists, right? There’s actually two now.>>Paulo: Yes.>>Victor: Yes.>>Paulo: Three now.>>Victor: Oh, even better. Do you want to talk a
little bit about what you do as an Evangelist?>>Paulo: Yes. As evangelists, we travel
around the continent, of course, talking to developers,
mostly indie developers, but also the ones who
are getting to the level where they’re going to
take the next step when they’re going to release the
games with Unreal Engine. And we tried to nurture
the relationship, and help them ship. And basically being
a point of contact with those indie
developers, and also other developers
who may be thinking about switching to Unreal. So we are able to help them get
the tools and the information that they need to learn
Unreal and get into our world.>>Victor: That sounds good. I believe there’s an email
as well that they can use to contact you guys, right?>>Paulo: Yes. There is an email
that I am not sure right now, that I can’t
remember right now.>>Victor:
[email protected]>>Paulo: But yes, you
should definitely look at our new initiative
that we have released last year at Unreal Dev Days. It’s called Unreal Indies. So just look for
indies.epicgames.com. You’re going to find not
only all the information that you need if you’re an indie
developer and is using Unreal or want to use Unreal, but
also other ways that you can find to contact us.>>Victor: Yeah, and
maybe in the future, even where you might be. Because you do go and
visit Meetups and–>>Paulo: Yeah. Yes, we usually do,
yes, local meetups. I do most of my traveling
in Brazil right now. We’re going to we’ve got
to have more Evangelists to cover the territories
in South America. We also do, whenever
we can, game jams. So we’re going to have
Global Game Jam coming.>>Victor: Awesome.>>Paulo: And we’re going
to have a presence. Not all the venues, but the
larger ones in South America. And GDC, and game Dev
events in general, for sure you definitely find. I mean, we’re now
hiring more Evangelists. We just hired a few
more for South America. We’re hiring more
for Brazil soon. So for sure, over the
course of the year, there will be
absolutely no event that we’re not going
to be covering. That’s at least the goal.>>Victor: That’s awesome. And today, we’re going to talk– it’s a little bit
relevant to countries. And you being from
South America, we’re here to talk
about localization.>>Paulo: Yeah. Localization system is a very
powerful feature in Unreal that’s, in general, a
little bit overlooked. Most people that– at least some
of the people that I talk to– I mean, on traveling,
talking to developers, they don’t know
that Unreal comes with a built-in system that
can help you localize your game to any languages that you need. Usually developers
think that they need to buy some third-party
plugin from the marketplace, or that they need to
implement, themselves, ways to make their games
support multiple languages. But with Unreal,
you don’t need that. It comes with a very
powerful localization system. It covers not only basic text,
but also assets, and sounds, dialogue, and everything. It’s very powerful. We’ve been using
that for many years. And a few Engine versions
back, we added the localization dashboard, which makes
things even easier for you to implement your own
localization, or even do– even translate the
game yourself if you’re small indie developers. But if you’re making
something that’s bigger, and you need to maybe
hire an external resource to translate your game,
the Localization Dashboard also helps you a lot with that.>>Victor: That’s great. Should we take a look at it?>>Paulo: Sure.>>Victor: All right.>>Paulo: Yeah, we should
definitely first start– So for you that don’t
know, this is Action RPG. This has been in the stream
for many times already. I think that Sam did probably
a few streams talking about Action RPG. So we’re going to use Action RPG
as an example of a very quick localization that we can do. So Action RPG has
this RPG kind of look. So it has a lot of text
that we can look at. It has a lot of assets and art
that we can look at translating and get this set up
for localization. So let me first go over
the Localization Dashboard. You can find this here, in
Window, Localization Dashboard. And we’ll basically
open the screen. And what it’s going to show
you first, on the left side, we need to talk a little
bit about game targets. A game target basically
is a way that you have to separate parts of your
game, parts of the product that you’re making
that you can localize. It’s mostly used, at
least internally at Epic, to separate in between
not different versions, but you can do, like,
a localization target for your main game, for
the game that you’re going to release first. And then you can do different
localization targets for DLC, or expansion packs,
and something like that, just to keep things organized. In general, for
every new project, Unreal already creates
a localization target called Game. So this comes by
default in the Engine. So we actually don’t
need to recreate one. But by clicking here on Game,
you can delete the target, create another one. And clicking here, in Game,
you can rename this for, maybe, in our case, Action
RPG main release. And, like, create other
ones, Action RPG DLC 1 extra pack or
something like that. A few things that you
have to be aware– you have to be aware
of the loading policy. This pretty much tells you
where the kind of localization content that you’re
making, and of course when it’s going to be loaded,
and when you run your project. This is something
very interesting– this is the exact
same system that we use to translate to
localize the Engine. So every text that you see– not every text, but the
majority of the text of the content that you’re
seeing in the Engine that has text and sometimes
even images, assets, is localized
through this system. So it’s the proof that we
actually use this internally. So keep in mind that you can
literally– you can actually localize the editor using this. I do not recommend
that, but if you want to take a deeper
look at it, you can. OK, a few things that we
need to discuss, all right. I would recommend a lot that
right after this training, or maybe before
watching this training, I would recommend a lot
of people take a look at our localization docs that
we have in the documentation. That’s a great, great
job that we did there– to understand a little bit
more about the concepts of what localization really
means, and the differences between localization,
internationalization. We have all of those very
detailed in our docs. We’re not going to deep on that. We’re going to go
over, very quickly, a little bit about cultures. And a culture is basically– it’s this thing that
contains information for internationalization
for a particular place, particular locale. That’s how we called it. It’s usually composed–
I mean, it’s named– and you’ve probably,
I mean, if you ever worked with translation ever,
you have seen that before. It’s composed of three
hyphen-separated parts. It’s usually a two-letter,
like PT for Portuguese, or EN for English. Sometimes a four– optional–
letter script code. And also an optional
letter country code. So for the English language,
the localization code for the United
States will be EN-US. For Brazil and
Portuguese, it’s PT-BR. And this code is mostly
used because someone can– I don’t know, maybe
I’m a Brazilian and I’m playing a game. But this game was only
translated into Portuguese from Portugal. So Portuguese from
Portugal will be PT slash– probably PT-PT. But then if I’m playing
this game from Brazil, the operating system
is going to detect that I’m playing in a
Brazilian language environment, and is going to ask
the game– so, hey, what is the language
that I should pick. And then it will try to find,
in the list of languages, that the game was translated. And if you can’t
find PT-BR, it will try to get the first
language that it finds that has the PT, anything
before the first hyphen. So it will fall back to the
Portuguese from Portugal. And that’s the same with English
and any languages, any cultures that you try. So this is very
briefly something that it’s interesting
to understand. And it is literally
an ISO standard that you have to follow. The very basic
component of when you’re speaking about localization
is, of course, text. You need to translate the
sentences, the words, anything that you need to– they
need to be read in the game. And the very basic property
that we use for that is the FText property. FText is a little bit
different from the strings, a little bit different
from the name. Because it’s made–
it was designed to be used for text that
the end user, the player, is going to see. And that’s why it comes
with all the functions that you can use to concatenate
texts, create bigger sentences, support for plurals. And of course FText property
is the property that gives Unreal– the property that is able
to be translated, to be localized in Unreal Engine. So it supports live cultural
switching, and creating culture-invariant
sources, which basically means it can be translated. Good. OK, let’s start
with actual stuff. So here we have the
Localization Dashboard. And this is where
the magic happens. Across this game, we
have lots of text. Let me show some examples. Let me show the UI, Blueprint,
we’d get Blueprints. Let’s say option screen. Right, OK. And then, so for every text
that’s going to be user-facing, so this is a great example. This is something that– it’s going to be–
it’s an FText object. And what you’re
going to see here when I click this pop-up,
every FText that you declare, be it on Blueprint or
if you just add a text to UMG, it will be
automatically localizable. And this parameter will be
set to yes automatically. What it basically does, it
registers itself with a key so that it can be found later. Every text goes– I mean, if I can explain
that very simply, every FText will go to a
list that can be gathered by the localization system. And that will be identifiable
as a translatable text. And how do I do that? Well, it’s very easy. There are two ways to do that. You can gather
texts from packages. And by that, you’re
getting UMAP files, which is map files in the Engine, or a UASSET files,
which is basically anything, any kind
of asset, including Blueprint and everything. But you are also able to look
on texts because of course sometimes you need to declare
FText variables on code in C++. The Engine is also able
to track that, of course, that you need to use
some macros in your code to declare and create the proper
IDs so you can properly track. We’re not going to that today. And it’s very easy,
very straightforward. You can find a
lot of information in our documentation that
we can have on the comment– sorry, on the–>>Victor: I’ll add it to the
forum post for the announcement, and also in the description
underneath the video.>>Paulo: Perfect. OK, so [AUDIO OUT]
this, I’m going to gather only from packages. And I’m only– well,
I could probably– I have the Include Path
Wildcard. I could probably add the
entire content folder. I sure don’t need that. Because this project, I know that all my texts,
they live in Blueprint– Widget Blueprint folder. And probably, if
I’m not mistaken, Items folder, right? Good. So what the Engine’s
going to do, it’s going to go over every
asset in those folders, and any folder inside it. And we will look for FText
that are marked [AUDIO OUT], and add it to the
list to be translated. And that will be pretty much it. Oh, no. Yes, we need to add– of course, we need to support–
to add the list of cultures that we want to
translate, right? Of course, as default,
as the standard, Unreal comes setup to– I mean, as the default
culture to be English. Right? English, United States. So I do speak English, but my
first language is Portuguese. So let’s give it a try
translating it to Portuguese. Portuguese. And then what
you’re going to see is that Portuguese here is
the root of all the languages. I mean, of all the
Portuguese variations. And that will be just PT, right? And then Portuguese
Brazil is PT-BR.>>Victor: OK.>>Paulo: And then you’ll find
Angola, Portugal, and PT-BR. Yeah, so let’s do Portuguese
Brazil, because that’s where I come from. And the first thing that I will
ask you to do, tell you to do, is that as you see, you
have this small circle here. So it means that
Unreal is looking at this culture as the
native culture, the culture that you’re going to
develop your game. Let’s say it like that. So this is how– this
is the culture that you will develop your game. And then all the
other translations will be based on this culture. You usually don’t do
that, because if you’re using international services for
localization, English will probably be the
standard language for this. So we still click here
from this small circle, and then we’re going
to be setting the– English to be the
native culture. Right? And in general,
this should be it. If I click Gather Text,
what Unreal is going to do, it’s going to go
over all the assets that have FText
variables, parameters. It’s going over everything. It’s trying to find FText.. It’s done. And then it’s going to
show here that I have 188 words that I can translate. If I look here for– if I click on Edit
Translations for Portuguese, you see that all of those
words are now translated. Right? Now translated, a lot of them. Great. So yeah, first things first. When you’re working
on translating your game for the first
time, that’s something that– that’s the first– I wouldn’t say “problem,”
but it’s the first thing that you will find. Like I told you before,
any text component, text we’d get that you add to
UMG, it will come, of course, with an FText in it. That is the text that’s going
to be shown to the user. And that will automatically come
as a localizable text, which means that at the
very end, it’s going to be tracked by the
localization assistant, and it’s going to be added here. Right? So in the end, you’re going
to have a lot of stuff that sometimes you don’t
necessarily want to translate, because this uses
universal language. So the first thing
that we should tackle is finding texts,
finding labels that you don’t need to translate, or
you don’t want to translate, and setting them– setting the FText variables
as non-localizable. So they will be
out of that list. They will not be tracked
for localization. Right? And the second thing
is, usually when you’re translating your game
or localizing your game, you’re paying for
that localization.>>Victor: Mhm.>>Paulo: Sometimes per
word, sometimes per– I mean, you’re paying
for the amount of effort. It doesn’t matter. And if you have stuff like– OK, a great example, “potion.” If you have your translator
to translate “potion” twice, you’re going to pay twice
to translate that word.>>Victor: Uh-huh.>>Paulo: That’s the same with– recovers 50% HP and recovers 50% MP. I mean, those
are very similar sentences that you can get some– you can get– if you
get them more organized, you can probably reduce
a little bit the cost of translation in the end. We’re talking about Action
RPG, which is a sample project. It’s a very small project. But from an actual game
that you’re going to ship, this thing can get a
little bit out of control. And Unreal has a really
good system for that. We do have something that
we call, let me show you, the string table. And the string
table is literally a table, a place where you
can store common words. I used common text, but
I want to use common words. It’s a place where you can store
common words, things, text, that you may need to reuse. Stuff that you usually
have in your UI like, OK, Cancel,
Back, Delete.>>Victor: OK.>>Paulo: That kind of
stuff that you don’t need to translate very frequently. If I take a look at this
very quickly, I have– OK I can give you
a few examples. I have this Souls.
This could pretty much be a new common word. So that’s going to be
called Souls. To add a new word, just write a key for it. And then I can write
the original string in the original language,
in the native language. So I’m going to use– my
native language is English. I’m going to use English here. Right? Let me see something else. Autoplay could be Back. So we’re using Back and Cancel. Yeah, Back, Cancel, Confirm. So let’s just add
those as an example. So Back, Cancel, Confirm. Yeah, and that should be it. It’s just a– yeah. Options, but again,
it’s just [INAUDIBLE]. Options. Great. Good. I will save this. I will close this down, get back
to the Localization Dashboard, and I’m going to
gather all text again. So look at this. We have 188 words.>>Victor: Mhm.>>Paulo: So I’m going
to gather the text. This number is
going to increase, because we have just added
the new library of words, the common words that we use. So we have 193 now. So they’re usually
at the very end here. So what I’m going to do, I’m
going to translate it here to Portuguese. So that’s a new thing. Confirm. I hope the keyboard– oh,
it’s not going to work. You need a special keyboard to–>>Victor: I see. Maybe you need to
put the computer in a different culture.>>Paulo: Yeah. Well, we actually just need
to use US International, and then you have
some shortcuts–>>Victor: OK.>>Paulo: –to use the weird– [LAUGHS] –the weird characters.>>Victor: I had to relearn
when I moved to the US.>>Paulo: Oh, yeah, yeah. Sure, because–>>Victor: And I’m sure you
had to do the same thing.>>Paulo: Yeah, Yeah. OK, I just translated
these very common terms. But first, I need to go over all
of my UI, all of my interface, to go through each of
those text properties and set them to use
that common word. Set them to use
the string table. So let’s see the options. OK, the Options screen. Right? So back here, I have Options. So those are the words that
can probably be reused. They are using a single
instance of an FText here. So what I’m going
to do is I’m going to click here on String Table. I’m going to pick the
string table I just created, and then I’m going to
link this to the option– yeah, to the option. And then we’ll show here
options on the label. Same thing for Back, I’m going
to go to my string table. What else can we do? I think that we have Cancel,
Confirm, Options, Tools.>>Victor: Sounds
like a main menu.>>Paulo: Yeah. Well actually, I
think that the HUD– let’s go to the BC HUD,
because we have Souls here. No, we don’t. Sorry. Oh, OK. We can– This one is going to be– yeah
we can just add [INAUDIBLE]. Just add Health and Manna. So it’s going to be– Yeah. Good. Then here, I’m going to pick
my common words and set it to Health and Manna.
I’ll do the same thing. Yeah, should be good. OK, what else? Then I have Confirm and Cancel. I do have [INAUDIBLE] here. Yeah, this screen here, where I
have Cancel and I have Confirm. Then I can show you– set them to my common words. And just to make it clear
for you that are joining the livestream now, this is– I mean, I’m not saying that
you need to use this system to translate any– each of the words. We should use it carefully. It’s just to reduce
the amount of time that you’re going to spend
to translate words or even sentences, it doesn’t
need to be words, it can actually be
sentences, that you’re going to reuse a lot in your game.>>Victor: Mhm.>>Paulo: It’s also good because
you can make sure that you won’t be lost in translation. So you can have– if you want to make sure that,
I want this sentence to be exactly the same
every time, so create a library of
sentences so you’ll make sure that it’s not going to be
different for different parts of the game. It’s actually pretty useful. OK, good. Getting back to the
translation system, I’m going to to gather again and what you’re going to see
here that since I went through some of my [AUDIO OUT]
and I’ve set them to use the common words string
table, when I gather– oops, nope. When I gather text, this
number will actually go down. Because instead of having
one instance of that text for every–>>Victor: Oh, look at that. Yeah.>>Paulo: Yeah, text file,
you’re going to have– it’s going to be
referencing the table. And you see that here. You can actually see the
progress of the translator here.>>Victor: 3%.>>Paulo: 3%. We’re getting there. We actually can
see untranslated. OK, let’s go down here
to translate Health.>>Victor: Not only are you
teaching us localization in another language–>>Paulo: But also Portuguese.>>Victor: –but you’re also
teaching us a little bit of Portuguese, yes.>>Paulo: Yeah. [INAUDIBLE] OK, yeah. So that will do. OK, good. OK, what else can we do? We could probably
try [AUDIO OUT].>>Victor: Yeah.>>Paulo: Get it in
Portuguese right now. Let me see if I do remember
the console command for that. Let me see. Nope. I know that– Well, anyway, I can
do it very quickly. I’m going to add– I was planning to do
that, oops, in the end, but I can do it very quickly
on the Options screen.>>Victor: I think it’s
Set Current Culture.>>Paulo: Yeah.>>Victor: There’s also
Set Current Locale.>>Paulo: Yeah, but that’s
a Blueprint or a console?>>Victor: I believe
these are actually– these are functions.>>Paulo: OK, yeah.>>Victor: Yes.>>Paulo: No, I can
do it very quickly. I can show you here. What are we going to do?>>Victor: Oh, here we go. It’s straight-up just “Culture
=”, and then the culture.>>Paulo: OK, so that’s
going to be Culture=–>>Victor: And then no space.>>Paulo: Equals–>>Victor: Equals, and
then I guess PT-BR.>>Paulo: BR. Oh, yeah. That was actually a great idea. [LAUGHS] Here’s the thing. Yes, our game is in Portuguese. It actually is not Portuguese. Not the game. If I play the game now,
that’s probably [INAUDIBLE]..>>Victor: Oh.>>Paulo: No, it’s not. So if you–>>Victor: Yeah. [LAUGHS]>>Paulo: Yeah. If you look at the editor
now, it’s in Portuguese.>>Victor: [LAUGHS]>>Paulo: So here’s the thing. Usually, when you’re
testing localization or you’re doing
initial implementation, if you just change the culture
while playing in editor, it will change the editor–>>Victor: OK, so it’s a good
thing to maybe not do? [LAUGHS]>>Paulo: Yeah. So what I prefer to do
when I’m doing that, when I’m playing with
localization, I prefer to just play as a standalone.>>Victor: OK.>>Paulo: Because that even
simulates a little bit better the environment
of the game, but it will ultimately
detect the operating system language that already– you do that automatically. And of course, you won’t have
to be changing the language back to your native
language in the end. Oh– OK.>>Victor: [LAUGHS]>>Paulo: OK.>>Victor: I’m glad
you speak Portuguese and that we picked
the right one there.>>Paulo: Yeah. OK, now– oh my gosh. I don’t use the editor
in Portuguese at all. Ah. User Interface.>>Victor: You want to bring
that over to the other screen so we can see what you’re doing?>>Paulo: OK, sure.>>Victor: And also,
more Portuguese.>>Paulo: Yes. So if any of you are
learning Portuguese, your Portuguese teacher is
going to be very happy today. Ah, OK.>>Victor: What if
we switch it back?>>Paulo: Yeah. You’re so smart.>>Victor: I try.>>Paulo: Culture and–>>Victor: It’s “equal.”>>Paulo: Equals US.>>Victor: Ta-da! [LAUGHS]>>Paulo: Oh, thanks. Whew. Whew. OK, so–>>Victor: How often do you work
with the editor in Portuguese?>>Paulo: Never. [LAUGHS]>>Victor: Yeah.>>Paulo: Yeah. OK, let me run this. It’s going to open
in another monitor. I’ll bring this back. Come on. OK, it’s back. Ah. So– yeah, it’s
not going to work. It’s still in English. But–>>Victor: But now we
can access them.>>Paulo: Yeah. How do I– OK. Equals PT-BR. And it should work. Did it work? No. Hm. I’m not 100% sure that– I mean, we definitely have a way
to change that on the console, but– that’s fine.>>Victor: And you’re sure we
assigned the main UI with the Health and Manna?>>Paulo: I’m sure.>>Victor: OK.>>Paulo: Yeah, I’m pretty sure.>>Victor: Just double-checking.>>Paulo: Yeah, yeah. OK, let’s add this here. Right?>>Victor: Yeah.>>Paulo: Let’s do a combo box,
a very simple combo box. I’m going to add this there. And this combo box– of course, if you’re doing
a combo box for a game, this is supposed to be
populated dynamically, right?>>Victor: Mhm.>>Paulo: You’re supposed to list
all the languages that you do support officially,
and then you can just populate that combo
box with all the languages that you need. We’re going to do that manually. If we have time, I can show how
to do that dynamically later. But I’m going to have
the first one, English US as the main language. And then we’re going
to have Portuguese Brazil as the second language. We’re going to have English
US as the default selected option. Then we’re going
to do some padding, because I think this is ugly. Compile, Save. And if I play this now– oh no. Yeah, I forgot, I
didn’t add any code.>>Victor: That’s–>>Paulo: Yeah, I just have–>>Victor: It’s nice
to have something to execute when we switch it.>>Paulo: Yeah, yeah, sure. Oh, look at that,
we have errors here.>>Victor: Mhm.>>Paulo: Because– yeah,
this probably comes from another project. Yeah, let’s ignore that. If I go to–>>Victor: Do you want to bring
it over to the other monitor?>>Paulo: Yeah, I’m trying to. Shift F1 does not work. OK, it’s working now. Ah! OK, am I doing this–>>Victor: Do Windows down, I
think would work as well. No. Or right? It’s a new monitor setup here. [LAUGHS] It’s not
left-to-right anymore.>>Paulo: OK, I found a way. Great, this is here now. Yeah, but we basically
just have a pop-up here that is worthless. OK, what we’re
going to do, we’re going to get one of the
change events for this guy. So on Selection Changed, that’s
going to create an event here. And we’re going to use
the function Set Culture. Set Current Culture. And since we are
already using the–>>Victor: Correct denomination?>>Paulo: –denomination,
the correct code, I’ll just plug this here. But of course, for– I mean, if you’re
working on a game, you don’t want the user-facing
EN-US or PT-BR. You want this to be in
Portuguese or English.>>Victor: Mhm.>>Paulo: So you can
probably do the– you’d do the translations or
reference in between the word that you’re using
with the right code that we need to pass. And that should be it. Let me play this again. I’m going to have a hard
time bringing this to the– oh no. It just needs to be fast. And if I go here and
select Portuguese– it’s not working. What am I doing
right– oh, of course. Yeah. Yes, there are a few
things that we need to do before this can work. I’m sorry. First, I’m going to gather
text one more time, just to make sure things are OK. And for the localization
system, for text to work– so all this data is now stored
into the Project folder. I can show you right now if
we do have access to this. It’s stored here in
the Contents folder, and then Unreal created
a localization folder with that target that we have
configured earlier, Game. And then you’re
going to have lots of stuff, English, Portuguese. All of your data is
going to be there. But it’s all text files now. So we need to compile that into
a format that’s going to be– that Unreal is going to
use to read those texts, basically because it’s going
to be more performance. So it will be compiled
into the final format that the Engine will
use during runtime, just so things are more performant. So I’m compiling this now,
and it should be done. If I play the game now
it should just work. Let’s hope.>>Victor: It’s a good thing
you know which button–>>Paulo: Yes, yeah. So yeah, now we have it working. So English US, Portuguese BR. We have everything ready. I don’t know what is happening. But if you can see here, I
have Saude, Magia, and everything in place. And it just works. This Pause menu has an issue. Let me see–>>Victor: Yeah, that’s–>>Paulo: –what’s
the issue with it. Because this
project– yeah, yeah. I had to sanitize the
project, because Action RPG– and this is a good thing that
you probably want you know– Action RPG actually already
has the localization for Portuguese.>>Victor: OK.>>Paulo: So if you need
a project that you need to use as a reference
to how the localization system already works,
Action RPG has a– it’s a very simple– it’s not
that complicated, but a very simple example of how
you can look at things, and how I localize
that for Portuguese. So I had to sanitize that
before the stream. Well, now that we already have–
it was using the string table. Now we can just use what we were
using, and use common words. Let me unlink to the broken
one, and link to the new one and use Back. This one, I’m going
to do the same thing. I’m going to unlink and
link to the new one, Option. And this one, I have no
idea what it used to be. [LAUGHS]>>Victor: [LAUGHS]>>Paulo: Well, it’s–>>Victor: We can figure
out what the button does.>>Paulo: We can
figure it out later.>>Victor: Yeah.>>Paulo: Yeah, yeah. It’s going to be– yeah. Something.>>Victor: [LAUGHS]
Surprise, maybe.>>Paulo: Yeah. OK, so that should be fixed now. Good. So we are mostly ready. We should be able to start
translating our text, the rest of the sentences of the game. Right?>>Victor: Mhm.>>Paulo: We already
have our menu here, so we can select the language. And everything is
set and working.>>Victor: And to be
clear, we are– when we’re using the
combo box and the dropdown and we’re clicking, we’re
obviously calling a function during runtime.>>Paulo: Yes, yes.>>Victor: But the localization
system, as it is, will still, without you doing anything
else, and now correct me if I’m wrong, will load the
correct culture–>>Paulo: Yes, right.>>Victor: –when you
start the game.>>Paulo: Yes. Well, here it will not do
that automatically for you. It definitely gives you
the options to do that.>>Victor: OK.>>Paulo: So you have– I can show you. You have a few functions
that you can do. When you start your game, I
can show you all the cultures that we have. We have– OK, Get
Localized Culture. So this is all the
localized cultures that your game
currently supports. So the same list of
cultures that you have here and you added
support to your game, you will be able to
access this over here. And then what you can do, you
can get the current culture.>>Victor: OK.>>Paulo: I don’t know if this
is the current culture. But let me see if this is– because you can definitely– I mean, you have
functions here to get– you have functions in Unreal
to get the native culture– yeah, this one. You get the native
culture of the– Oh no, this is a
different thing. You have functions in Unreal
to get the native culture of the operating system, what
the operating system is using.>>Victor: OK.>>Paulo: And then
you can basically try to match with the cultures
that you already have, that you’ve
translated your game. And then you can say that,
OK, for these regions, the default culture
that we’re going to use is going to be this one. Right? So it tries– you’re able to try
to detect and to automatically set the right culture for
that region that the game– where the game is running,
and the computer that the game is running. The Engine doesn’t
do that by itself.>>Victor: OK.>>Paulo: But you can just do
that in the initialization. Maybe in the game instance,
once the game opens, say, OK, what are the
cultures that I have? What is the culture of
the operating system? What is the best
one I should pick? And just setup.>>Victor: OK, so there
is– you actually do need to implement
changing the culture.>>Paulo: Yeah, you actually–
you do need to implement. Because in the end,
it’s really something that’s up to the developers. And sometimes, developers–>>Victor: Because they want to–>>Paulo: Yeah, they
just want to let the user decide the
language that they want to play the game.>>Victor: And that’s nice. So you don’t have to turn
anything off to not have it.>>Paulo: Oh, I’ve definitely had
games that I had a hard time. I mean, not today, because
things are much better. But in the past, they were
like, oh, you’re in Brazil. So if you want
to– of course you want to play this in Portuguese. They had so much work to
translate that for you. And it’s going to automatically
be set to Portuguese. But I usually preferred
to play it in English. And sometimes it was really
hard to change it back.>>Victor: OK.>>Paulo: Because it was like, OK,
I want to play it in English. No, you have to use the
language that we gave you. So yeah, you don’t want
to make the user to– to force the user to set the
operating system in English just to play. No, just– it really
is up to the developer to let the user decide
what language he wants to play the game. OK, where we were? We were about to
start translating?>>Victor: Yes.>>Paulo: OK. Here are a few things. We do provide this
interface here where you can
translate everything. It’s pretty cool. It shows– you can track
what you want it to be, what needs to be reviewed, what
you’re wanting to be reviewed. It can track what is completed. It’s great. But in general,
that’s OK if you’re doing minor, small stuff. A small project, that’s
OK you use this interface. In general, professional
translators, they use different
formats for that. And Unreal does support that. The main format that
the industry uses is the Portable Object Format. We just basically
call it .PO files. And if you’re going to use a
localization service provider, this is probably what
they– sometimes, they just want a CSV file. But in general, they
will ask for a .PO file, because this can be opened in
special specific localization applications that make
their life much easier. We could probably do that here. I can show you– This is basically
just a text file. I can just– I will
export the .PO file, and then we can look at
the structure in it here. OK. Portuguese. And this is basically
a text file. Let me see. How can I open this?>>Victor: Yeah. Notepad, Visual Studio.>>Paulo: Yeah. Yeah. No, not Visual Studio. Just Notepad. So yeah. So you can start to see here
the strings, the message IDs, the original string. That’s the number that we
need to use to know what we’re actually translating. It has some comments to show
you what is the asset that you are translating. This usually is useful for us
but sometimes not very useful for the localization. This was made to be opened
in a different application, different kind of
applications that are made for that, tailored for
translation and localization. So just to show you
that we do support that. And if you need,
you can use that. But yeah. Let’s do some– let’s do another
round of localization here. So yeah, let’s do– let’s just go over
some of the text. Let’s take this. Let’s translate that. This is one. OK. This is one that is
one of the common words that we didn’t change. We didn’t catch. This one here,
WB equipment. OK. WB equipment. C, whatever. So yeah, this is the thing
that’s you’re going to do that. You’re going to do a lot. So you need to go that. And so here we have
WB equipment. And then we’ll need to set
this to use our common words. Set it to Back, Compile, Save. And then when we get
back to our dashboard and we gather text again,
we’re going to see–>>Victor: So it’s important. Every time you make a change
regarding what your FText variables are
loading, you’re going to have to gather text again.>>Paulo: Yes. Yes. Just to make sure. So we probably have
one less word here. Oh, we translated–
we’re 88% now.>>Victor: Oh, look at that. Progress.>>Paulo: Progress. OK. And then you do more– again, Souls. Points label, whatever. Get back to the points label. UMG widget, where it is– points label. And the word “souls” needs
to be pointed to our thing. Yeah, OK. Good. And same thing again. So it becomes a little bit of
kind of a homework thing. But in the end, I mean, as the
game grows bigger, and bigger, and bigger, it becomes– I mean, the amount of
money that you can– the cost that you
can reduce with that, it’s pretty impressive. And here we have some examples. OK. Let me translate
just the skills. So we can have it pretty– edges of– how do
I translate that? Oh, gosh. I should not be– I promise. It’s going to be very fast. Whoever created this–>>Victor: I think
we’ve all learned that “fogo” means “fire.”>>Paulo: Yeah. Whoever created the skill
names was not very creative.>>Victor: Fiery edges.>>Paulo: Yeah. It was me. So here’s a good
example of something that we should create a new–>>Victor: Common word for?>>Paulo: Yeah. Yeah, of course I am
sure that you at home, when you’re doing the
translation for your project, you’re going to be much
more organized than we are. Yeah. We have lots of stuff. I got ocean over there,
skill, skill, skill, skill. OK. Here we’re using this guy. Yeah. But you already got it. You understood that,
the concept of it. There’s another thing
I want to come back. So you see here we have some
numbers, at least four numbers. Those are things that usually
we will not translate, because those are labels that
are going to be dynamically filled by the game build. So plus 5 health– I mean, that’s
dynamically– it’s here, because we needed to use it
when we were designing the UI, we needed to have some
texts for reference.>>Victor: A default, yeah.>>Paulo: So I mentioned
that again before. But I’m doing that again. So this is in the HUD. This is in the HUD, too. This is equipment slots,
and this is points label. So yeah. Let’s go to the HUD.>>Victor: And now you’re
going to select these two be not localized, is that correct?>>Paulo: Not localized, yes. Because we don’t need them. So once I do that,
the Engine will never need to be aware of
them for translation. OK. What else. It was equipment slot. Let me compile and save. This should be here in
the inventory folder– equipment slot. Probably this text here. So it doesn’t need to
be ever translated. Save. And the other one
was points label. Where is points label? Here. OK. So this guy– no. Yeah. So again, just click
Gather Text, wait.>>Victor: 21%.>>Paulo: 21%.>>Victor: Look at us.>>Paulo: Let me compile
the translations. OK. And let me play the game again. And then we’re going to
have more things translated.>>Victor: How many
times do you think you’ve launched the Action RPG?>>Paulo: Oh, more than
a thousand, for sure. OK. So let’s go to the
Options menu, something. And then, yes. You have most of the
stuff translated– Saude, Magia, Automatico
over there. Clearly some of the
skills were translated– Bola De Fogo, whatever. Some of the weapons. Yes. [SPEAKING PORTUGUESE]
here is translated. Yeah, some of the potions. Though, of course we
won’t spend all the time translating all the words. But yeah. I’m not using some of
the special characters that the Portuguese
language requires, like the accents and something,
just because we haven’t configured the keyboard to be
US international so we could use the shortcuts for that. But yes, we do support that. And Unreal– this is
a subject that we’re going to get and access. Unreal do support not
only text localization but asset localization. And we may think, OK,
that’s really weird. Why you would support
asset localization? Yes. Because sometimes for–
Action RPG is a great example. Like, the logo of Action RPG
contains sticks and letters. And let’s say you were
localizing your game to Korean or Japanese. You want to localize
the logo so it’s going to use their alphabet. It’s going to look different. And in the end, it’s an image. It’s a texture. So you will need to
be able to support to load a different texture
for that specific culture. But other times,
it’s just because you have content in your game
that’s sensitive to a culture, to a country, to
a specific place. So let’s say there are some
countries where you’re not able to depict blood. So let’s say you have
a blood particle. Then you can localize
that blood particle to be like a green
particle instead of red. You can like flow
green particles. So just in that given
country, given place, it loads a different particle
file and a different texture file, because that content
is sensitive for them. And of course, that
goes to textures that you use in the game,
animations, and even entire– even characters. Skeletal Meshes
can be translated. So you may need to use that. I’m not going very
crazy on that. I just want you to
use the logo example. So let’s say we want to have
a different logo for Brazil. I hope that Photoshop– so yeah. Those are the logo
files that we use for the main menu and
the loading screen. And it’s as straightforward
as you can expect. Just right-click the asset. You go here to
Asset Localization. And what you’re just going to
do is create a localized asset. So I’m going to create
a localized asset. So it’s Portuguese. And the Engine does
everything for you. I can just go here. I can export this file
and do changes to it. If we have time– let’s see. Do we have time?>>Victor: We have a
little bit time, yeah.>>Paulo: OK. So let me export this. Select the Asset Actions,
Export. It’s going to be here. Yeah. I’m going to use the same name. I’m going to open this here. I’m going to open
this in Photoshop. I should probably
pick the other one, because this Photoshop is weird. OK. What? OK. Yeah. Do I have the layers? Layers. How do I– close.>>Victor: Paulo is
preparing the interface.>>Paulo: Yeah.>>Victor: Do you want
to bring it down?>>Paulo: Oh, sure, yes. Can we do it? Share, right? Now, I’m not going to
do anything crazy here. I’m just going to get the
transparent part of it. And then I’m going to change
this guy to be more Brazilian. That should be it. How do I do something
to be more Brazilian? You add lots of colors. Yeah, that’s it. Does it look very Brazilian?>>Victor: That’s up
to you to decide.>>Paulo: OK.>>Victor: I’d say you have
more experience with Brazil than I do.>>Paulo: OK. And then yeah, let’s just– yeah, I’m not sure
I trust this thing. Let’s just do this. And I’m going to– yeah, that will do. I’m going to export this. Click Export to PNG. Oh, that’s nice. So it’s probably in the folder– no, it’s not. Yeah. So I have a PNG file here
with my new very Brazilian looking logo. Then I get back to the Engine. And what I’m going
to do, I’m going to change the file
it’s pointing at. I could probably just overwrite
that file, but that will be–>>Victor: This is a
nice way actually– and if you don’t know about– that you can just sort of
point to a different– so that this UASSET is pointing
now to a different source file.>>Paulo: Yes, exactly. And you see– OK, that’s
actually a really interesting good point. Remember that the original
file lives here in the folder contents/ui, right? So what Unreal
Engine made for you, it ultimately created
this folder L10N, or “lion,” if you want to. And then it ultimately
created that code that I wanted to use
for that localization. And then it creates
the folder structure that we originally
used in the project. So if this was a texture that we
were here, like in ui/texture, Unreal will automatically create
that same folder structure inside the Portuguese
Brazil language folder, just to keep things organized.>>Victor: Can there
be an issue there if you were to move the
English file, in this case?>>Paulo: Potentially, yes. I haven’t tried that. I mean, it shouldn’t,
because once you move it, Unreal will ask you, hey, do you
want to update the references to those files? So in general, it
should automatically update that for you. But of course, I would
not recommend it, because this probably
follows a standard that would make your life much
easier if you use this. But yeah. So we’re going to pick a
different file, the file we just exported, PNG file. Re-import it. Yeah, so we have a
very Brazilian logo. And here’s the thing
that I have to tell you. So if you don’t set the
language initially, the moment that
the game opens, Unreal will load
the files that– I mean, the files that are set
to be loaded in that culture. If you don’t do that
initially in the game, as the game is
loading, if you don’t set the different language
as the game is loading, what is going to happen is that
once a texture, an asset, is loaded on the memory, if
you change the language up for that, Unreal won’t
be able to reload that asset automatically. So it will need to be reloaded. So you will need to
ask that file asset to be reloaded
again, so that Unreal will load the actual, the
proper translated file. It’s complicated. But I can show you very quickly. If I go back to the main menu– oh, that’s the main menu. OK. See? It’s in English. It’s compiling shaders. Let’s wait for that. If I change it
back to Portuguese, unfortunately the
logo won’t be updated. You can probably
have some function that you can go to that
image file and say, hey, reload or load
a different image. And then we will
automatically do that for you. But then if I start
the game, and then I get back to the main menu again,
now that it’s in Portuguese, then it will load those files. So this is something that
you need to keep in mind. If you’re playing your
game and, say, you want to change
something, you want to change the
language of your game, but you’re translating
assets like textures and whatever, if you
change it during gameplay, you have to be aware that
you will need to refresh those assets that you loaded. Because Unreal will
only pick the translated files once you reload
those assets, as it needs. So that’s something
that needs to be– you need to be aware. There are other stuff
that we could probably mention about the localization. I was about to mention that– was that yes, we do
support the alphabets, the fonts that we use
in the Western world. But of course, Unreal is
also able to localize fonts. So you can have fonts for
Chinese language, Japanese, Korean, and any kind of
different sets of characters that you need for your game. We also have a very, very
complex dialogue localization system. In general, you could probably
use the assets system– sorry, the asset localization
system to localize dialog. Because in the end,
it’s just an audio file. And in the end, it
will become an asset. But even though that
will be OK, Unreal has another layer
of complexity, especially for dialogue. So it will take care
of you, let’s say, if you need to have
different levels of– how can I say? Different levels of
categorization for, OK, I want a version of the game
that doesn’t have these words, the things like that
can be played for kids. So the dialogue system in Unreal
is powerful to that level. I don’t want to get into
much detail of that, because that goes
a little bit deep. But if you’re doing
dialogue, a simple dialogue, the localization system
for you should work fine. But if you need that kind
of complexity, yes, Unreal Engine already provides
a system that’s pretty complex.>>Victor: And that’s for
like age selection or–>>Paulo: Yeah. For stuff like
for age selection. And even for stuff
like microregions where the game is running that– I mean, this word may
be very offensive. But you still want to allow
the player to be able to, no, I don’t want any kind of changes. I want to play the
original content.>>Victor: So like a
profanity filter?>>Paulo: Yes, yes. All that other
[INAUDIBLE] could be– yeah.>>Victor: Do we have
them documented?>>Paulo: Oh, yes. Everything that I mentioned,
and even everything that I mentioned in the screen,
it’s very well documented. It’s going to be in the stream.>>Victor: Yeah, we’ll drop it in
the forum announcement post.>>Paulo: Yeah, forum
announcement. And also, if you’re
looking to localize phones, if you need to have localized
phones for your project, and if you need to
have localized– if you’re going to do complex
dialogue for your game, and you need to
have those features, yes, it’s very well documented. And you can find it on the forum
post that you’re going to do.>>Victor: Perfect. Yeah, I’ll make sure
to put it in there.>>Paulo: Yeah. And that should be it.>>Victor: That’s very
informative. Not only do we know how to
replace assets and text. But we also learned a
little bit of Portuguese. I don’t think I’ll
ever forget that one. “Fogo” means “fire.”>>Paulo: Yeah.
there’s lots– yeah. Lots of fire, lots of fogo.>>Victor: So if I’m
in Brazil, or– it sounds like
it’s a kind of word that might be the same across
all Portuguese languages. Is that correct?>>Paulo: Yeah.>>Victor: OK. So if I’m in a Portuguese
speaking country and someone is running
around yelling, fogo, fogo, then I know–>>Paulo: You know you have to
run.>>Victor: Yep. The more you know. Yeah, the more you know. It’s good. So you might have noticed
today, we are actually pre-recording the stream. And so we won’t be taking
any questions live from chat. But you’re more than
welcome to go ahead and post your questions on
the forum thread. And I’ll make sure that
we head back there. And I’ll have Paulo
try to help out and answer some
of the questions. So that link will be in
the YouTube description. And it’s to the
events forum, where we announce all the livestreams. And we’ll make sure that
we’ll follow up and see if there are any questions,
anything that might have been unclear throughout the stream. But all in all, it looks
pretty straightforward. As long as you
remember gather text– or change translation, gather
text, compile text, reload.>>Paulo: And make sure to
use– to have your library of common words of– to set up your string
table properly. So not only you can
reduce translation costs if you need to translate
this with a third party, but it actually also helps
keep your game organized so you do not like misspell
the word “confirm,” “back,” “cancel,” the kind of stuff that
you use a lot in your games. Why do you need to write that– I mean, to repeat writing
that all the time, when you can have a library
of words that makes sure that you won’t misspell any
of these important sentences.>>Victor: Sounds great. Anything else you want to
leave our viewers with?>>Paulo: No. I think we’re all good.>>Victor: What’s the
word for “ice”?>>Paulo: Ice? “Gelo.”>>Victor: “Gelo.” All right. It’s good. You need the counterbalance.>>Paulo: Yeah. And if any of you need
to contact me directly, you can find me on Twitter, too. I’m @unrealpaulo. Any developers in Latin
America and in Brazil can also, if you need
to reach me directly. Of course, we have
the indies.unrealengine.com But you can also reach
me directly over Twitter. So feel free to get in touch.>>Victor: That sounds good. And as always, if you’re
interested in meeting occasional evangelists out,
you can go ahead and go to unrealengine.com/user-groups,
where you’ll see a list of all of the user groups that we
have going on in the world. You can go ahead and
go to the Meetup page and see when the
next Meetup will be. And I do believe you’ve
visited some of them in Brazil?>>Paulo: Yeah.>>Victor: Yeah. And the rest goes for
the rest of the world. And it’s kind of a,
you know, fun part doing a little bit
of localization, considering how global
our suite of tools are. And it’s important. You can increase the size
of your potential market by localizing your game.>>Paulo: Absolutely.>>Victor: And so
balancing the cost, also making it more accessible. Because not everyone
speaks English.>>Paulo: Yeah. And the best part of it
is that when you use– how can I say– a
professional-grade Engine, like Unreal Engine, this is
the tools that we use to– I mean, to have Fortnite
translated in Portuguese. And Fortnite, it’s a
world-class product. We need a very good system
to allow us to do what we do. So what we giving developers
is a world-class tool for free that you don’t need to buy any
third-party plugin and anything else from anywhere else, from
the marketplace or wherever. It’s built into the Engine. You just need to use it. And it already supports all
the standards that you need. And, you know, in general,
this is the kind of stuff that Unreal has comparing
to the competition. It already gives you these
kind of tools that will allow you to ship your game– the things that the developer– I mean, the developers
that are working on it, I mean working
seriously on games– needs to ship their games.>>Victor: For sure. That’s great. A few other points. If you heard something
throughout the stream that you don’t really remember
when we were talking about it, after a couple of days
that the stream goes up, we actually transcribe, and– we don’t translate
we don’t localize the streams, unfortunately.>>Paulo: Not yet.>>Victor: Not yet. But we do transcribe them. And that transcript
gets uploaded. And there’s a link in
the YouTube description. You can go ahead and Control-F
that and search for keywords. And you’ll see the
timestamp, which allows you to go to that
section of the stream. And if there was
something specific that you remember– maybe
you were doing something else while you were
watching the stream, and, oh, I remember
they talked about that. And that way you
can search for it and possibly have a little
bit of easier time to find it. Make sure you follow
us on social media. That’s where we do all the
updates on what streams are coming. I actually go ahead and post
the entire stream schedule on Twitch. And so in the
channel description, if you scroll down
a little bit you can actually see the upcoming
and the past streams. And there’s also a link to
the full YouTube playlist for Inside Unreal, where you can
go ahead and watch the streams that we do every week. And I think with that said,
thanks, Paulo, for coming.>>Paulo: Thanks for having me.>>Victor: It was definitely
a little bit of a shoehorn, let’s go ahead and make
sure Paulo gets in there since you’re here at HQ. And so I appreciate
you taking the time to prepare the
presentation for us and share a little bit about
how to do localization. I hope to have you back
at some point this year.>>Paulo: Sure.>>Victor: If not, I know I’ll
see you at GDC probably.>>Paulo: For sure, yeah.>>Victor: Yeah. That will be the next part. All right. Thanks so much for
watching, everyone. I hope you have a good
rest of your week. And then until next time,
we’re going to say goodbye. Bye, everyone.>>Paulo: Bye-bye.

, , , , , , , , , ,

About Author

  1. Daniel M. Posso G.

    Video starts at 9:56

  2. Two Star Games

    Does anybody else have trouble localizing fonts? Was trying all morning when I found this stream, and was hoping it would go into that. I tried using the asset localization steps, but the font doesn't change. I tried localizing a random wall texture, and it updated as soon as I reloaded my map, but fronts remain the same. Using UE4 4.18.

  3. Ku Playford Valls

    Very interesting talk but could you guys provide links in the description to all the stuff you're referencing? Thanks!

  4. Vlady Veselinov

    Y'all, stay safe, work from home if possible please

  5. Sickle

    Can someone tell me how to lounch game in epic games?

  6. Rob Card

    Such trerrible lighting

  7. Rob Card

    The lighting is so terrible.
    Its like looking at real life though a cheap phone camera…

  8. Daisuke Sakamoto

    Thank you for introducing Gibson Les Paul Cinematic in the spotlight!!

  9. Ilyes Bouchada

    I was waiting for more blender videos xD

  10. Beech Masters

    I downloaded the unreal engine but had a hard drive failure and ost it.
    So how do I get it again? Your website has assumed I all ready have it and always just points me to the epic installer which does nothing once installed.
    Thanks 🙂

  11. fhana fhana

    very good and informative stream thank you epic team.

  12. Antonio Noack

    Start at 10:10

  13. Shrooblord

    As a note, indies.unrealengine.com doesn't exist. However, this website is most likely what Paulo is referencing: https://www.unrealengine.com/en-US/programs/unreal-indies

  14. Denis Maltsev

    Just leave it here:

  15. Rafael Alfaro

    Very good and useful video.

  16. Sami Balawi

    But How to do Movie scenes

  17. Rafael Alfaro

    For people who don't know where to get Action RPG it's in the epic games launcher, in the Unreal Engine section in the Learn Tab scroll down to the Games Section.

  18. Architecture Software Tutorials

    Got some Unreal Engine tutorials for you!

  19. Tim Reha


Leave a Reply

Your email address will not be published. Required fields are marked *