>>Sjoerd De Jong: Hi, I guess.
Apparently we ended up with almost the opening
talk of the keynote, in the biggest room. This was meant to be a light
break from all the talks, maybe, at the end of the day, and now we have
the opening talk. No pressure. We have counted
the number of seats while waiting here,
it is 500, so we have 500 people
in front of us. No pressure. What we are going to do is, we have got our 100
Unreal Engine 4 Tips and Tricks. This is by the European
Evangelism Team, so this is not
just about tips, it is also a way for us
to introduce ourselves. I will get back to that
in a few minutes. But to introduce us
as that new Evangelism team for the Unreal Engine
in Europe. In any case, it is 100
Unreal Engine 4 Tips and Tricks. The idea here is to give you a
couple dozen, fairly random, mostly art and content focused
tips and tricks. Some of them are
a hundred percent useless, okay? But they will be fun, I hope. Some of them are really
good things you can do as a prank while your colleague
is out for lunch. Probably should not check it in,
but you could. Other things though,
are really useful. Some of them are, I think, personally fairly
straight-forward and simple, but other stuff is stuff
I did not know either. In fact, we were rehearsing this
last night until very late, which is not a fun part, because we needed everyone
to be on location together as a group
to properly rehearse. We did a proper rehearsal
run last night. While rehearsing, we had several
cases of one of us saying, "Oh, I did not know
you could do that!" Okay?
Even we learn from it. As you might notice, this will be a completely
different setup than the keynote,
or many of the other talks. This is really light-hearted,
this is informal. This is mean to be fun. We might make a mistake,
and we will go with the flow. It is meant to be an easy way
into the next two days of pretty hardcore learning
and technical details, okay? That is what you have got
to expect here. Good? Anyhow, it is not actually
100 tips, it is actually 69, okay? [Laughter] Actually, we had a
really, really long title first.
The entire slide was the title. Then we had a next slide
with a really long abbreviation, so that was the mood. But because we became talk
number one after the keynote, we thought, maybe we should be
a little bit more formal. Also, you might not
be able to read it, but here it says it has cats. There are actually cats
on the slides, okay? A few.
Good? Good. But to get back
to the Evangelism team-- I have been doing evangelism
for the Unreal Engine for the past four
or five years across Europe. Many of you might have
seen me at different events. I might have visited your studio
over the last few years. We have grown the team now. We have gone from just me
covering the continent, which is a little bit tricky,
to a team. We actually have
the full team here. I am Sjoerd De Jong. Again, you might have
seen me before. I am leading the team now, and I am still handling
Northern Europe as well. Then we have got Andreas. >>Andreas: Hi.
My name is Andreas. I have been in the industry
for 20 years, mainly making games
in a more creative game design, level design role. I was
with Ubisoft several years. I shipped my last
commercial game with Unreal, it was <i>A Long Journey Home</i>,
and I cover Western Europe. >> Who is next?
>> Hi, I am Krzysztof, and my main focus is
programming. It is like anything
from tools, graphics, also shaders, optimizations.
I am based in Warsaw, Poland, and I am responsible
for Eastern Europe, and also Israel,
do not forget Israel. [Audience member cheering] Hey! Applause for Israel! [Laughter] If you are from
the region hit me with anything,
I am your man. >> Hi, I am Mario, and I am responsible
for Southern Europe, and have been a gameplay
programmer for quite a while, and also from time to time
a technical artist. >> Hi. I am Joseph.
I am responsible for the Middle East,
North Africa, and Turkey. I am trying to grow the game
Dev scene there, basically. I am based in Beirut, Lebanon, and I used to work
as a technical designer. It was more technical
than a designer, but, yeah. [Laughter] >> Did you also do design
and technical? Sorry. >>Sjoerd: Okay, good.
Cat, yeah? Good? Good. I hope this will get you
into the mood for Unreal Fest. Anyway, let us get started. This is tip number one: It is Paste Here.
it is a really simple thing, but I do not think anyone
is aware of the shortcut and the implication of being
able to set the shortcut, okay? Here is a very,
very basic test Level, we are going to do
some random stuff here. What I can do, for example,
I have a cube. Amazing, right? I can go to the Editor
Preferences, and I can do
the Paste Here shortcut, because Paste Here is just
in the right-click menu, right? You can do Paste Here.
It is a little bit annoying, there is no shortcut
for it assigned by default. But if you look
for Paste Here, it says Paste Here, I am going to bind it to this,
and it says yeah, it is already overridden.
Let's ignore that. Let us close that. As I copied the cube,
I have just done a control-C, if I now press the key— It is backslash
what I did— Press backslash, where I click I now get it. In fact, every time
I press backslash, where I have clicked, I get it. I click somewhere,
I press backslash. Click, backslash, click,
backslash. Shit, I probably should
have undone that, because the next people
have to continue with this. You can use this
to very quickly move things. For example,
if you have to move this thing to the other side of the Level,
instead of doing this, right, that is a little bit annoying,
you could just cut it, go to the other side
of the Level, maybe even with
camera shortcuts, click somewhere there, and you have got it exactly
where you have clicked. You can also quickly
build a tower if you feel like
building towers, okay, because it keeps going. I think it is a very simple
little thing that is fun to do, and helps with Level
building workflow. Good? The way this is going
to work, by the way, each of us have about four
or five tips, we switch. Four or five tips, we switch.
That is rough setup, okay? Pixel Depth Offset in
the Material Editor. It is not really a tip,
I mean, it is a feature. But it is one I personally never use it
in production. I just want to highlight
what it does. Pixel Depth Offset—
We have got that over here for these cobbles—
If you look in the Material, you can see we are using
the Pixel Depth Offset input. That is basically just
an alpha map that comes from here
that is multiplied by 1, so it is active.
As you now move this down, you can see it actually offsets
some of the Pixels. So the alpha map identifies
which pixels to offset, and those pixels will,
as it implies, they are offset into the depth, so they will appear to be
rendering behind some other pixel
in the background that now comes to the front. In other words,
the floor up here is to be rendering above some of the deeper parts
of the Material here. But this is really just a plane. See,
it is literally just a plane, it is completely fake. You see, it is even floating
above the ground. You can use this
for stuff like this, with the parallax effects
on the pebbles. The trees in the distance,
for example, you have got a plane
with a bunch of trees, instead of just having
trees that are obviously just on a flat plane
cutting into the ground. You can make it look
as if some of the trees are a little bit
in the distance. You can do it for hair strands
on a face— That kind of stuff. It is not commonly used, but it
is a nice little thing as well. V for Vertex Snap— I think
it is the same as in Maya, I forgot Maya
after all these decades, but I think
it is the same shortcut as Maya. Let's take these two cubes
we have over here that we placed before.
If you move something and you press and hold V,
you can see already— and this might be
a little hard to see, because the vertices
are quite small. Let me get this close to
the other cube— See, it snaps. You can see the small
blue points appearing— Those are the vertices. You can actually
do vertex snapping. The downside to that
is that it pretty much only works on the pivot point,
so my next slide, which is slide number four—
Tip number four: is, you can temporarily move
the pivot point very quickly with alt + middle mouse button.
I think this mouse, by the way, does not like
middle mouse button, which I have noticed before,
which is a bit of an issue. That is an interesting one.
Hold on— No. I do not know what is wrong
with this computer. See, this is the
first problem. What could possibly
go wrong, right? If you have a normal computer, and you press alt + middle
mouse button, you can basically just click
and drag the pivot point, and then use it in conjunction
with the vertex snapping, could allow you to control
that a little bit better. I will hand over to Krzysztof. >>Krzysztof: Hi.
You can set custom categories for your project dialog
in your Editor, so if you launch your Editor, you can have this project
under Unreal Fest, for example. To do it, you just simply
modify your project file and set anything
to the category field. That is it. Does not work for a
the Launcher, unfortunately. You could use advanced search
in the Content Browser. There is a whole doc
that describes how it works, but, for example,
let's say I want to have control
over all of the Meshes that have vertex count
lower than 100. I type
"vertices less than 100", and I have all the Meshes.
But I can also say, but I also want to see
things like all the sounds. I type "sound", and I have all the Meshes
or sounds in one screen. You can also later save
this search as a Collection. So for example,
I'll call collection,
and this is weird stuff. >>Andreas: You did not
show that yesterday. I did not know that.
>>Krzysztof: I am sorry. [Laughter] The next tip
is about sharing Collections. You can share
the Collection, okay? You can have some set up
for the whole team. And there are two type
of shared Collections; one is shared
and the other is private. The private is visible for you, but it is also
on the repository. >>Sjoerd: Can you quickly
copy-paste the search string into Notepad or something
with a bigger font? >>Krzysztof: Yeah, just
to view it. This is the search string. Yeah, let's override
your project file. All the binary operations work,
basically, on that. The things I was typing,
like this type, you can see it. Type is to the right,
this is sound, anything that has sound. Vertices are also
listed here. We can use anything
from this list. Okay. You can use the inputs
as a calculator. For example, I want to scale
this cube times 2, so we can just multiply by 2. But you can also, I do not know,
put it to the power of 4. Now we are inside, right? Just using simple operators,
you can make it worse. I mean, I just deleted this guy,
or did I? No. Yeah, let us just
scale it down, whatever. Bang. Even less.
Yeah. Okay, you can also
filter output log. If you have your output
log, you can just write some task
thing, whatever, here. But you can also use
the categories, which is important if you have
your custom categories and you want to
just view anything that is related to Blueprints,
or to your specific category. Now we have only things
in Blueprint log. Just revert it, and now, Mario. >>Mario: Tip number 10:
You can color code your folders. It is already done here, but it is very easy
to set color to the folder so you can make it prettier,
or easier to find. For example,
you can have your own coding, so all green folders
would be handled by artists, and things like that. Next tip, tip 11: You can modify thumbnails
in the Content Browser. This is going to be
a bit tricky. I am going to clean my search, and then go into Filter,
Static Meshes. For example, let's say
I do not like this thumbnail. I am going to enlarge it
so you can see it better, like this one.
I can turn into Edit mode, and for example,
zoom in and rotate. Okay, now I am happy with it,
done editing, and that is all. You can edit any thumbnail
that you have. Tip number 12: You can
change view easily from using control
+ middle mouse, and dragging mouse. Middle mouse does not work? >>Sjoerd: Try again.
>>Mario: Nope, it doesn't. >>Audience: Maybe it is
not on this call, maybe it is somewhere
on a different— >>Sjoerd: It is a strange mouse,
with 50 million buttons. >>Mario: Yeah, like,
a lot of buttons, okay. Let us try this one, no.
>>Sjoerd: Trust us. If you have a normal mouse
and you click the wheel, you will get a line that
appears in the Viewport, so you can very quickly just
hold alt, drag, you see a line, and the direction that you
drag in is basically shortcut for switching to side view,
front view, top, et cetera. It is very quick, drag, drag, drag, drag. It is kind of like Maya
as well, where you drag the line. >>Mario: Whoa, what happened?
For example, if you drag to the app,
it will change to the top view. Next tip, it is also
with the middle mouse button. You can measure distance
in orthographic view. If you come to the top,
for example, and you want to know what is the size of this square?
You can middle + drag, and it will show you the distance,
like you can see here. >>Sjoerd: You will see a line
with a number above it. >>Mario: Yes. >>Sjoerd: Just picture it.
>>Mario: And a cat. [Laughter] Now, I will hand over to Joseph. >>Joseph: Okay. So
tip number 14: You can actually have up
to four Content Browsers. Why is this useful? Well, let's just
see an example. Basically, you selected
this Asset, like the chair over here,
and you want to check out the Material of this Asset
in the scene. I can double click,
and it is opened right here. The thing is,
if I click on Browse, it is going to deselect
the chair. I can simply lock it,
and now when I hit Browse, just going to open
another Content Browser. You can have up to four,
so you just have to go to Window and go to Content Browsers here,
and have a third one. It is sometimes useful
if you want to work on the scene and you have different folders,
different Assets. Anyway, I am just going
to close them now, and reset. Great. Okay, tip number 15: You can also have up
to four Detail panels. This is most useful if
you want to compare two Assets, so let us just go back
to this cube, and I am just going to lock it. Now I am just going to open
a second one, go into Detail Panel,
and open a second one, and I am going to put it
next to this one so I can have
a small comparison. Great. Okay. If I copy this Asset
next to it, it can have different location,
different scale. You can simply see
the two location over here. You can copy it, which is basically
the next tip, actually. Tip number 16:
You can copy any property. Basically I can
copy the Mesh. This cube, I want it
to be actually this Plane. Here we go— Copy, and then I can replace
it over here by hitting Paste. I am going to Undo. It is not just
properties here, but even variables
can be copied. Now, how is data copied? Tip 17:
Everything in the Engine is actually copied as text. Even this property,
the location that I just copied, if I open the Notepad,
it is actually just simple text. That way you can actually
have history of your clipboard. I can later just copy
this again and use it later. I can do the same
for Objects as well. If I copy this cube,
I can also insert it here. Great. Also, so what if I want to add
it to multiple Objects at the same time?
A simple way would be to actually use
the Property Matrix. I am just going to select
multiple Static Meshes, right click,
go to Asset Actions, and then Bulk Edit
Via Property Matrix. I want to disable
the collision. I can look for collision,
and now see the pin over here? If I pin it, I can actually see
the value for each Asset, and I can change it also. Now I just disabled collision
for multiple Assets. Here we go.
Great. >>Andreas: Our biggest fear
in making this presentation was, the project is getting
messier and messier. If someone—
That is the reason why we are sitting there
and a bit nervous— If someone does not
unlock something, or does not get
rid of his search— Ooh, this mouse
is really— Wow. You know, you can fix it and
un-fix it here. That is cool.
Okay. What we actually used
in our last— I'll get rid of this—
Is, you can have a color picker and you can—
Where is it, Set Color? When you set the color,
you can save those colors. I can make something
like a good list of colors I want to use,
and saying, for example, we did this
for our Interface. We had four colors
that were used in the Interface, and we share that. You can even have
different themes, so I can name the theme and say,
this is my super cool— Oh, this keyboard
is also not mine. This is just "super cool,"
I won't type more on this. Okay. So you have those,
which is quite nice. Next tip, number 20: You can
drag and drop to reorder Arrays. Now I have to find my strange
cube. Where is it? Here. When I have Arrays in the thing, then I can just
move them around. I can just drag them
and move them up, like this. I can reorder Arrays,
which can be really, really helpful, especially when
you started making your game, and then the Arrays
are growing, and then you have to
reorder them, or whatever. You can do this with
every Array in the game, and the Editor. One thing that is also
really helpful is to search
in all Blueprints. If I open up
this Blueprint here, you can control +
shift + F, and then you can search in all
Blueprints, like, for example, you always wanted
to know where begin— Oh, this is not
a German keyboard? They are always
making fun of me. Any idea why this
is not working? I know, that is— Okay, normally,
stuff should show up, you know? >>Sjoerd: That is what you
have when you— I mean, first thing I did
when I got into Unreal is, I bought a keyboard,
it is a QWERTY American keyboard. >>Andreas: I think we go
to the next tip, because normally,
it should show up, and I have no idea
why it is not. We use this extensively, so I know
it is working, it should. Tip 22: You can grab Blueprint
Connections with Control. What you can do, actually, if you wire
your stuff up like this here and you want to change it,
you can just hold control while reconnecting, instead of
breaking it completely. Instead of doing right click
and break, you can use alt, and then you can really fast
rewire things like that. Okay, and tip 23: You can also
drag wires to an input nodes. For example,
when I have this string and I want to have
an input node, I can put it here, and it directly adds it
to an input or an output node. Okay, and then we have
Sjoerd again. >>Sjoerd: Let me just really
quickly try to Blueprint Search. >>Andreas: It is strange. >>Sjoerd: I just want to
try it out. Yes. [Laughter]
[Applause] That was not scripted.
This is all random. >>Andreas: That's why
he is lead. >>Sjoerd: Yes. Well, I can type.
I can use keyboards. You also have to press enter, I think you might not have
pressed enter, I do not know. Anyway, it is nice
to do a full search, and everything
across Blueprints, very easily. You know, the middle
mouse button as well, you want to see
the really cool thing? I am trying to press
the middle mouse button on the tab to close the window. Look at what happens here --
it is actually typing "333" when I press
the middle mouse button. Okay? Good.
Good. Very good. If you are more technically you
might have— >>Andreas: You can rebind three
to middle mouse button. >>Sjoerd: Okay, you can do that. >>Andreas: So this is a
good tip, tip 24.1. >>Sjoerd: If you are more
technically inclined, you probably
already know this one, but there is
an Engine Association in the project file, right?
It says this— Now, by default,
it would say simply "4.22" or whatever version
you are using, and that is it,
which means it uses 4.22. But if you have a custom Engine
build, that does not help you, because you are not using
normal 4.22. So what you can do then is,
you can have that replaced with the unique ID
of that Engine installed, which is that whole
string there, which resides in the registry in Software\Epic
Games\Unreal Engine\Builds, you can see that one,
which is different from that, I am aware. This is
just an example. But that thing there is bound
to this install. That is, for example, what we do with Fortnite
to ensure that if you click
the Fortnite Project, it takes the exact right version
of the Engine, the one that it is bound to.
Okay? So that is a fun
little one as well. Twenty-five— Here
we are getting more and more into some of the weirder stuff,
or the stuff I did not know. I did not know this
until last week, and then I was looking for tips,
and I saw them typing random stuff
in the console in the Editor, and I figured out, cool,
this is great! I learned something. There are different grids.
NewLeverGrid 1. If you go to the Editor, and you type,
"newlevelgrid." There are 3 different grids. That might be hard
for you to read, but r.editor.newlevelgrid. If you do 1—
2 is the default— If you switch to 1,
get this big, red grid. I am not sure why
you would want to have it, but I assume at some point
you might want to have it. For my previous game, we had
this at 0, so where the grid is, that is the water level.
That is the sea level. Having a strong, red grid,
that might have helped. Grid 0 is this. I do not know what you want
to do with that. 2 is the default, which is not visible
from this distance, okay? But not only that, so tip 26: Grids are actually
just Materials, so you can modify the Material. In this case,
it is something rather strange by having this weird
green smiley thing there, or whatever it is.
But you could do that. In fact, you could take
that rather stupid example and do it more serious by taking
the floor plan of your level, for example, and temporarily
putting the floor plan of your level on the grid. Now you know where you have
drawn the walls, et cetera. You do this by going
into the Engine files— I am not going to save this,
I hope— Level Grid Material 2,
be sure I remember that. Engine is not enabled here,
so Engine Content somewhere, Engine Content, Level Grid.
Level Grid, Material 2. >> Clear the filters.
>>Sjoerd: Oh, sorry, yes. Sorry. That is what happens
when people do not unclear their filters, right?
Anyhow, it is just a Material. You modify this,
you modify the grid. This thing here
is just a scale. So you respect this number. You can even make it respect
scale of the grid as well. That is it.
Good. Twenty-seven—
Tonemapper.Sharpen. I think a lot of people
might have tried this already. I think it is a very fun one.
I always set this in a project, even if it is
just 0.25 intensity, or so. But what it does is,
it, as it implies, it sharpens the stream, right?
So Tonemapper > Sharpen. I am going to overdo
as factor 10, you can see you get this.
It gets very, very sharp. You can probably even do it
even more. Oh no, that is the maximum. But this is really, really nice.
If you do it on a little amount, like 0.25 or so, you get
a little bit of sharpening. It also works if you downscale
the resolution, and then you use sharpening
to re-compensate for that. It runs a little bit better.
It is low resolution. But it does not look as blurry
as it normally would have, okay? That is another thing
you can do there. Good. There is also a thing
that I also was not aware of until about two weeks ago,
when we were preparing this. There is something called
a Spline Mesh Actor. I knew there were splines
in the Editor, and you could make a Blueprint,
put a spline in there, and then attach something to it, and have it resolve that,
or whatever. But there is an actual Actor
called a "Spline Mesh Actor." If you just look here,
there is a Spline Mesh Actor, which is that thing over here
we have placed already. That gives you, immediately,
without components, an entry to enter the Mesh. Here is a cube,
and it gives you a spline, and then you can
basically skew that thing, or otherwise transform it.
I did not know that. Apparently, you can do that. It seems to respect
the collision as well, so it seems to work
pretty decently. Good. Cat. Okay?
Next person, I think. >>Krzysztof: You can
quickly find things with control + B. Oh yes, thank you! I am going to show you
two more tips, I guess, if it works. It works!
Maybe quickly— Yay! Okay, so let us go back
for a second. Control + middle mouse button. You put it to the top,
and it is top view. Down is a bottom view,
left, right— You can go back
to the perspective by just doing it
across the screen. One more, if we are
in the top view, or whichever, orthographic view, you can just press the mouse
button, middle mouse button, and it measures some distances.
Yep. Let's make it go back,
clear the search, yes. Okay, again, control + B.
You can do it from anywhere. For example,
you are in this Blueprint, you want to do something
with the file, but you have no idea
where it is, and you do not really want to
search through someone else's, I do not know, folder hierarchy, you just control-B,
and you have it already. I can now rename it,
whatever. I can do the same
with the Material. I just load the search,
oh yeah, I can check that it is in Engine Content.
I want to modify it. Whatever I want to do,
I can quickly— Funny thing, with Property, Material Matrix Editor,
if you hit control + B in it, it will select all the Assets that are selected
in this Editor. This is important,
not well-known, surprisingly, but control + P, you can just
search for something. I will search for "Main",
and I have found main Material. >>Sjoerd: There was a joke
we had last night, where we had no idea
what to type. We typed "main" and we get that. That seems like this,
and looked quite nice. >>Krzysztof: But you can do it
from wherever you are. You were looking
for your player Character, well, we have some players,
but not the player Character. Yeah, you can just
open it with enter. But also funny thing,
you can just— let us go back to the top— Control + P,
if I search for something, I can also move it to some
other place, copy it, or open. You can use translucent
Materials for post-processing effects, like for localized
post-processing effects, because they have access
to the G-Buffer. For example, like we can see, this nice
post-process effect here. In fact, if I come in, then like
nothing is being processed, but here, everything
that is behind the sphere will be visible just with AO, just because you can see
even those things, just because we used
Scene Texture Ambient Occlusion. You can change this
to some other things as well. Not post-process input, but everything that is
in G-Buffer is accessible. You can change
the title bar color for some different purposes.
You can make it look nicer, or you can distinguish Engine
builds using that. You go to Editor Preferences,
the very first window here, the very first option here
is Appearance. This is what is interesting
for us, we just change the tint, and we have it red
or blue or green. Or back to the normal. >>Sjoerd: I personally use
that one a lot, because sometimes I have
different version of the same project open, or different builds,
or whatever. It gets really,
really confusing with all the windows
to remember, which one am
I actually working on? Which one should
I definitely not touch, okay? You can recolor. >>Krzysztof: Just for LOLZ,
you can do more. You can set it
for a Custom Material. So we have this Material here. >>Sjoerd: This is part of the
category, what do you do with your colleagues
when they are out for lunch? >>Krzysztof: You can also set
your child windows to be the other Material. Child windows are everything
that is not the main window. It is hard to undock it,
but I will eventually. Yay. [Laughter] Yeah, and funny thing again,
when I do not move my mouse, or have a Viewport in my view,
it is not moving. But now I move my mouse,
it is animating. If I have a Viewport
and I need to move my mouse, just because the slate
is updating or not. Okay, let us clear this
quickly. Or maybe leave it. No.
Mario? >>Mario: Tip number 34: Using the end key,
we can drop Objects. For example,
if I go to this cube again, and I say it is here, and I want it
to drop to the floor, you just press end,
and it will do that like that. It will consider collision
and pivot. Tip number 35: This will shed
some light into our shades
of our knowledge— just press L and click, and it will create a light
for us in the Editor. >>Sjoerd: If you want
some history? >>Mario: Yes, please. >>Sjoerd: Because I would like
to add a history to it, in Unreal Engine 1,
in Unreal Editor 1, the interface was not
that well developed, so there was no easy way
of adding a light. This was a shortcut for
adding light in Unreal Engine 1, and it still survives
until today. >>Mario: Yep. Tip 36:
We can drag and drop a Level from the Content Browser
to the Levels tab. Window > Levels. Am I allowed to use this map? >> This map, yes. >>Sjoerd: You already have it,
so delete it. >>Mario: Yes. Okay. If I
delete it, this never happened. If I drag and drop,
we will be stream, and it will be
the current new Level. Tip number 37 is that we can
drag from the Level reference to a Level Blueprint.
For example, if we have— we are in the Level Blueprint
and we are here, and we want a reference
to this map, we just drag and drop and we
will have it in a Blueprint. This also extends
to any Actor. This is the tip number 38: If we select an Actor
from the World Outliner and we want to have a reference
to it, just drag and drop. I think that is the same. >>Joseph: Tip number 39: You can keep
the simulation change and it lets you simulate
physics, et cetera, and then bake the changes. I am just going to reopen
the presentation. Great. Anyway, so basically, if you want to drop items
in the scene but you want to create
this random variation, for example, like here, you can manually just drag
every box and rotate it and make sure
it does not hit the ground, or you can just
simulate physics. I am just going to select
those Objects here— One second. Now that I have
the Objects selected, just have to
Enable Simulate Physics here, and when I hit Simulate— Okay.
When you hit the K key, and I hit stop, you just save
the result of that simulation. Now we have the Objects
inside of the scene. >>Sjoerd: If you press K
without the noise running, it saves the physics state
and saves the actual Mesh. Then you can turn off the
physics on those Meshes again. >>Joseph: Right. >>Andreas: Just to be sure,
you do not need sound for it. Okay? It works without sound. >>Joseph: Yes. We actually
practiced this presentation without sound, so maybe a good idea
would be to turn it off. Great. Tip number 40: Well, this is a nice view
of the rocks, so I want to save it.
I can just hit control + 1, and usually in RPG games,
for example, you have fixed views
from different angles, so maybe you want
a top view as well. You can go here
and hit control + 2. What I just saved was, I saved them as a bookmark
for their location. Now if I hit 1 and 2
on the keyboard, I have saved views, basically. You can access them
from the menu as well. >>Andreas: This is actually
a funny one. I did not know what it was in,
but I was using it, because I come
from RTS background, so I was so used to group stuff, so it was really funny to see
it was working out of the box. >>Joseph: Okay. Tip
number 41: You can actually
change the speed. If I want to go to that terrain and I went there,
it is really fast. What if I want to slow down as I
move down, as I get close to it? I can actually scroll the mouse
at the same time, and I am moving slower,
and then moving faster, instead of actually manually
just going here to this menu and changing the speed
on the slider. Tip number 42: You can actually temporarily
change the field of view. To do that, all you have to do
is hold the right mouse button and the C or the Z key. This is basically a tip
that I never used, on purpose. Basically, if you had the C,
you are zooming in, and you can actually,
for example— This is more useful in a game,
if you want to take a screenshot where you want to show
more Objects on the scene,
so you can zoom out, and when you let
go of that mouse, you are back
to the original position. >>Sjoerd: I always use this. Every screen shot
that you have seen from me is me pressing num pad 1 or 3,
which is the alternative buttons to have a slightly
larger field of view, taking a slightly more
majestic picture. >>Joseph: Also, if you are
ever moving in the Viewport and suddenly it does this, well, you know
which key you accidentally hit. Great. Great, now you can set up
user-defined grid and snapping options.
This is tip number 43. If you go to Edit
and Editor Preference, I am just going to look for
"grid size." Now you have access
to all of the grid units you have for rotation
and scale and movement. Usually it snaps
between 1 to 1000, maybe you want to have
a different type of value like 256.
You can see here now, dynamically added 256,
and if I move an Object, it is snapping
256 units at a time. Also, I am going to undo this.
Great. >>Krzysztof: Wait! The snapping
is zero now. >>Joseph: What? Okay. Now for Andreas. >>Andreas: Okay, before
I do this, I go here, and set the snapping to something meaningful
instead of 0. It was really funny. Yesterday evening,
it gets worse and worse. We have 60 tips,
and now we are in the area, and we are pretty clean
right now. We are really, really good. We are cleaning up.
Yesterday it was a mess. Okay, who of you
is older than 35? Come on! I want to see.
So you see we are getting older, and for that reason,
there is a really nice thing. We use it actually
for presentation. You can zoom in here,
and when you hit control, you can go more in.
It is important, you know? Okay, but it is really here
for presentation, for example. Or sometimes, I do not know, if
you really want to see the back. >>Sjoerd: He is the senior
one in the team. >>Andreas: Wow, thanks. Tip 45:
Oh, actually, it was— We should have made that 43.
It would have been my age. I could have made
another joke about that. Okay, 45. Covert any getter
to Validated Getter. That was actually
the reason yesterday where everybody laughed. I did not know that,
to be honest. We have this,
and normally what you do is, like, is validate,
and then you do this, and then you continue
working with that. But what you actually can do is,
you can make a right click, and then Convert
to a Valid Get, and then you would
directly have that. That was the moment
where I said, "Oh, wow! That would have saved me
some spaghetti code," so this is good. Okay. We are at 46. There are some shortcuts
in the Blueprints you can use, for example, with B you can make
a branch, which is kind of nice. But what you also can do is, you can go in the Settings
in your file, and you can find your own notes
of the stuff you are maybe using most. For example,
we did the Quest System, and we had a lot of stuff
that we are losing, a lot of the Quest System,
so we could define that there. That is really nice. We are up to 47. You can use Promote to Variable
to easily— You can select that,
and you would promote, and then do not touch
anything, that is what I always do wrong, because it is directly
highlighted, and you can change it
to a meaningful name. Yeah. You can write that wrong,
and then it is even more funny. I have got to take off that. When you have, for example,
local function— Let's do this again. You can even say if you want
to have it local variable. Then 48, the really weird stuff.
Here is Sjoerd again. >>Sjoerd: I love this one. It is, again, this thing
you can do to your colleague, or what you could do is,
you can make a random Blueprint somewhere
in the Project, every 1000 jump, only ever 1000 jump you execute
this command. It switches the Editor
to wireframe mode, no one will have a clue why.
Okay? The batching one
is fun, too. If, for example, slates show
wireframe in the Engine. Also, I think this is
really good for a job test, but people do not seem
to appreciate me saying that,
I do not know really why. I think wireframe is
easier to look for. Slate.ShowWireframe 1.
Hell, yeah. That should be a job test.
You can build a game like that? You are good.
Okay? The other one— Now you have to make sure
you know what you are typing, because you have no idea
what you are doing anymore— The other one is Show Batching, I think,
which is also a very fun one, because it does that.
It even changes the color, depending on
what you are highlighting. These are different batching.
It is really, really good. Now again, you have to make sure
you know what you are typing to get it back to 0.
Okay? Good. This is completely useless, I am
just saying it could be fun. That was 48. 49, which is actually
very useful, is a very visual thing. You can do hard blending
on landscapes between the layers
we have got over here. Instead of having
this soft kind of blend, you can see it is
a little bit soft there. But you can make it respect
an alpha Texture in there to do
just kind of blending. Essentially it is done
the normal way, you paint it normal way. It is kind of sensitive
with the tool strength, so experiment with a relatively
low strength that you paint with. But other than that,
it is a simple Material setting is all that
you are using this for. In here,
you can see in the layer blends there is a setting here
called Blend Type. We have set that
to Height Blends, and then that is basically it, because then it will blend
using that. Let's see what else we have.
We have got 50. I saw this float by on Twitter,
I think, about a year and a half ago, and then I completely forgot
about it. Then I remembered, and then
I could not find Tweet back, and then I improvise. I assume that
this is what I saw on Twitter, or it is me improvising. Either way,
it ended up being cool, so we used it.
Okay? You can make simple
spiral animations. We have got a few more nice
Material animation ones coming in later. But for example, this one
over here is done like that. Just fun to look at these
animated effects, I think. What we did over here,
it is a very simple setup. It is essentially
just this, right? You have got a rotator,
it is just this Lerp thing, and this sphere mass
is essentially just blends between non-rotating, rotating, and you just fade the two
over, and that is it. It is a simple effect,
but it looks cool. 51: You have got Custom UVs, which has been in the Engine
for, I think, a year and a half,
or something like that. It is an optimization feature. It is not that super
commonly known, so I just wanted to place
a little bit of emphasis on what it actually is,
and how it could be helpful. In this Material over here,
you can see, we are using Customized UVs. There is a single
Customized UVs input here, because in the properties
on the left we set, there should be one input. See, if I type 2 inputs here,
I get another one, right? That is how it extends.
What you are doing, basically, is instead
of placing the panner, or, whatever UV modification
operation you want to do, instead of putting it here
on the UVs, you put it to Customize UVs, and you kind of convert
this into the vertex shader. This work is now handled
by the vertex shader, and you are kind of offloading
the cost from the pixel shader. So it is a way of distributing
cost away from the pixel shader. There is also
a vertex interpolator, which is part of this as well.
It converts it as well. 52: It is related to this,
because that little setup we have got in that Material
with a Panner + Noise. I did not know where was either,
I started experimenting with it. Got a really strange
hypnotic effect, and was really excited
about that, okay? Apparently,
which I never realized you can do, Panner > Add Noise, and it only works
if the Panner has a speed set, which in this example
it does not. I will switch to the other one
in a second. Speed Y has to not be 0. If you have got that,
you get really weird stuff. So, for example,
get that. This is very symmetrical,
I mean it is very round. You can make it more noisy,
more natural looking as well. You simply change
the settings of the Noise, either levels
or the type of noise, and you get a strange effect. I was going to do a joke
about hypnotizing everyone, and then saying something
politically incorrect, but maybe I should not.
But anyway. I think it really nice
to make slime, for example, that is one of the serious
effects we had, some kind of slimy, bubbly thing
where it kind of belches out, and stuff like that. Fire, explosions
where it is kind of also like it
is growing continuously. All of that seems
very doable with this. Also, I just want
to highlight this one too, this is a serious one. BC7 Compression,
not perhaps that well-known. By default in the Engine,
you can see the left image— It might be hard to see
in the projector, but the left image
is uncompressed, so it is
a gradient uncompressed. It is 192 kilobyte,
obviously looks smooth, it is uncompressed.
The middle one is 32 kilobyte, it's standard BC1 or DXT1
compression. It is very noisy. Again,
it might be hard to see for you, but it is really bad quality. This, however, is BC7,
which is 64 kilobytes. So it is twice the size, but still a lot less
than the original, and it is pretty much
100 percent lossless. In order to enable that, you would have to go
to the Project Settings, and disable Shader Model 4. If you have done that, then
in any Texture you have got, you can enable compression BC7. Cat. >>Krzysztof: Okay. This is also not
that well-known, but you can actually very
quickly optimize your particles in terms of overdraw,
so eliminate as much overdraw as possible
by using particle cutouts. We have this kind
of simple setup here. Compiling shaders.
Okay, so we have this. Now I can show wireframe, and you can see that
there are those cutouts. But in general, normally
you would not have this set. It will be just a cube and you have a lot of free space
in this Texture, on this plane. This results in overdraw.
If I put the same Texture that I am using for the particle
as a cutout Texture, it will use this alpha
to try to find the closest shape with only 8 vertices. You can also set it to 4,
but then it is a bit less. You need to balance it,
if you prefer to have less vertices
or less pixels being overdrawn. Material platform stats: You probably know
the stats— Yeah, let us do it here,
whatever— You probably know the Stats
window that is shown by default. You probably know
the Stats window and it shows you only
for the current configuration, I mean, the stats. But there are
a lot more details. There is lot more
detailed window with way, way nicer summary of your stats. You can change as well platform,
or the quality level, and you will see after
it is compiled how many instructions
will there be, and if all the platforms
actually compile. If they do not, you get
a pretty detailed error message, which is even nicer
than whatever you will see without that.
You can easily figure out what is wrong
with your Material in this case. I tend to have it open
all the time. Interior Mapping:
This is actually— I would have tried it
myself earlier if I knew how easy it was. But I was quite afraid. You just pick a Texture,
a cubemap, and put this one node
in your Material, and you have this kind of setup. You can also randomize
the input so it is just simulating interior
with the cubemap. I am going to open this, but I
just need to select it first. We just use this
Interior Cubemap thing. You can put a static Bool that will say
to randomize it or not. You can just skip it. And you just put
any cubemap you want. You can change it
to some exterior as well, it will work,
but look differently. This is it, this is all.
You have this kind of thing, and it also works
for different shapes. I think it is super nice
and super easy to set up. One of my favorites, you can use
PlotFunctionOnGraph Material node to visualize some stuff. For example,
functions on the graph. It looks like this—
I will just open the Material because the setup
is not obvious. You get two outputs.
One is Y and the other is X. You want to have this X go
as your input to the function. This is just some simple
fogging function, I'll just show you on the graph,
so it is just a case trying to reach 0,
but it never reaches it. You can also see the gradient
of the value here. You get a pretty nice
overview of your function. You can just test it before
you use it in your shader, just to debug it, or to check
if you are doing it right. You can also set
the range of the grid. I am using from -5 to 5,
-5 to 5, just with one vector. You have some other
options as well. You can also debug
your Materials by using DebugScalarValues, or other variants
like DebugVector2Values, and just have them displayed
as text, as a number. We have this
simple setup here. It uses some center
point of screen to see the distance to it.
If I am looking at this, we can see
that I am pretty close. I can see that, like,
what the values are, what the value ranges are. What should I compensate for,
for example? Just with this simple node,
and the setup is very simple. >>Sjoerd: It is basically
a Print String for Materials. >>Krzysztof: Yeah. You just put any number here,
and that is it. You can put whatever
you want to check. You can have Debug Float 2,
Float 3, Float 4, and other stuff. Okay. I guess, have you ever tried
to type "help" in the console? It opens a Browser
with a generated report, about like
your console commands. You can search through it. For example, I can search only
for rendering commands or for sound commands, and you have
pretty detailed explanations. The best you can get, actually,
so try it. You do not know
what the command does? >>Andreas: We had a discussion—
How many of you know that? Okay, good. Continue.
That is good, you had some. >>Krzysztof: Some of
them know that. Yeah, it is just pretty useful. Here is Mario. >>Mario: Tip 60: You can use
this node, WorldAlignedTexture to make a quick
and easy triplanar mapping. That is very good
for prototyping and just same things.
You can see in this sphere, we have triplanar
mapping of our Texture, and it is just using this node.
It is really quick. Use it. Tip number 61: You can change
the highlight and density of selection. Why should I do this,
you may wonder? Where is my mouse? >> Up on the screen.
>>Mario: Okay, yeah. I saw it. For example,
if I select the sky, who knows
that I am selecting it? You can see here in the border,
but it is really, really subtle. It would be good to,
in the Preferences, you can search for highlight,
it should be here. It is in
Highlight Intensity. You see it is moderate, because it is,
like, very ugly to see it. Now you can see
that it changes a bit, so you know
what you are selecting. I'll hand over to Joseph. >>Joseph: Okay. Save Engine
Stats and this is tip 62. Whenever you enable
a console command and you turn off the Engine
and you start it, it is just going to reset. If you want it to stay
on all the time, all you have to do is just go
to the Editor Preference, and look for that setting. Edit, and then enter preference, and then here we go. Just enable that checkbox.
Great. Tip number 63:
We have Mesh Decals. This is a plane
with a Texture on it. I am just going to slow down
the camera a bit, so sorry for the shaking. As you can see, it looks nice,
but it does not actually blend with the Object
behind it. However, this one, it does. Even if I move actually
the plane, you can always see
it is blending, even though it is actually
a different Object. If I move it,
it is different. Anyway, so this is the Material,
and it is a simple setting you have to enable,
which is here, Deferred Decal, and that is it. Great. Tip number 64: This is mostly useful
for architecture, for example. You can get accurate
sun position, and its calculated base
on the location and time. We have actually a lot of docs
on how to do this and it is really simple,
and very quick to set up. But we have in the scene,
actually, one that is already set up.
We actually set it to the exact position
of the sun for this event. This is actually
the coordinates for this venue, and this is the time where we are actually
giving the presentation, and this is where the sun is.
Cool. Also, I need to highlight
the content example, and especially the Math Hall. You can get it
from the launcher. There is a lot of
practical examples of different functionality, so if you are having
a hard time with math, and you just want to know
how to use certain functions in which cases, just go
check out the current example. Okay. Finally we have the Color
Blindness Simulator. To be clear, this will not fix your game
for color blind people. But we do realize
a lot of people who play your games are color
blind, even some developers. And this is a way to simulate how they actually view
your game, so you can fix it. It is under Accessibility, and you can find it
in the Editor Setting, as well. Edit, okay, here we go. Yep, so you can actually
change it here. Now to Andreas. >>Andreas: I am happy
he didn't. Okay, so some of the tricks—
Cool! Oh, now I messed it up. [Laughter] They are also telling us
we have to speed up. Some of the tips we have here is from our interaction
with customers. And one thing
you have to see is, Unreal Engine is made for a lot
of people, also for newcomers. All Blueprints
you have tick by default, and that is maybe
not what you want. As an experienced developer, maybe the first thing
you want to do is disable this so your
Blueprints do not tick, and then decide which ones
of the Blueprints should tick. This is an important thing. You always have to remember
that the Engine is made for a lot of different people, for a lot of different purposes, and that is the reason why. You can find it
in the General Settings. I think you believe me,
I tried to speed up a bit. The other one I think
is really important is, you can enable the filter
to show redirectors. That is something
I want to show, because when you go here
in the Filters, under others,
there is redirector, so if you move stuff around,
then those redirectors are here, and you should fix them
as soon as you can. It is a pretty good idea
to always show them, because we did not
in our project, and something like
three months later, we did. Then we had two or three days of
just fixing those things. This is important. The last one—
We have this great Engine. Sjoerd will do a talk
about ray tracing here, so do that stuff, and then you are one week
before you ship, and someone decided, oh, let us
do it 8 pixel retro-style. That is what usually happens
in development, pretty often. You can actually do this. We prepared that, so it is
somewhere— Post-process— You can make a post-process
Material as a blend, and it should be here somewhere,
here it is. It is pretty easy. I do not go too much
in detail there. It change your game
just like that, and then you have this
pretty nice grand pixel look, and then you can ship. We are done. We are through,
that was 69. Thank you for having us. We are around here.
We are happy to talk. You heard where we are from,
and which areas we cover. If you have any trick
you want to share with us, we are open for that. We have some more
in our pockets, so come to us and ask. Or if you have
serious questions, we are around all the time. >>Sjoerd: And as you reflect on
this, we are recording this. We will probably put it online.
I know this went fast, we will put
the slides online too, probably. Again, look back a little bit
at what we have done, because this went on speed. But it shows you here
a little bit. I hope it is a good introduction
to the next few days. Thank you. [Applause] ♫ Unreal logo music ♫