PixPoly
All videos

Getting started with Unreal Engine 5: from installation to a playable character

21:53

Installing the engine, understanding the interface, remapping the navigation keys, modelling a scene, then coding from scratch a first-person character who walks, looks and jumps. Everything you need to start, and nothing more.

Chapters

  1. 00:00Installing the engine
  2. 00:30Creating a project
  3. 01:05The main scene windows
  4. 01:37Moving around the 3D scene
  5. 02:28Adding objects to the scene and editing them
  6. 05:58Creating a Static Mesh
  7. 07:15Blueprint Classes
  8. 09:16Creating and saving a level
  9. 09:39The Character class
  10. 10:18Creating the Game Mode
  11. 11:10Movement mechanics
  12. 20:54Adding collisions to the trees

Unreal Engine is intimidating the first time you open it: windows everywhere, hundreds of settings, and the feeling it will take weeks before you produce anything at all. In reality, an hour is enough to walk around a scene you built yourself, with a character you coded.

Installing and creating the project

  1. 1Download the launcher from the Epic Games site and create an account.
  2. 2Unreal Engine tab ▸ Library, click the + and choose the version.
  3. 3Start the engine, then New Project, Blank category.
  4. 4Give the project a name and click Create.

A Blank project rather than a template: the interface stays clean, there are not fifty folders to understand before you begin.

Three windows, and that is all

WindowWhat it holds
ViewportThe 3D scene, that is to say the game as you build it.
OutlinerThe list of everything in the scene.
DetailsThe settings of whatever is selected, in the Outliner or in the viewport.

The rest of the interface reveals itself as you go. These three panels cover the essentials of day-to-day work.

Remapping the navigation keys

Unreal’s navigation is wired for QWERTY. On a French keyboard, moving around the scene quickly becomes painful. The setting lives in Edit ▸ Editor Preferences, searching for “nav viewport”.

ActionKey
ForwardZ
BackwardS
LeftQ
RightD
Local DownA
Local UpE

Navigation itself: hold right-click to look around, and use the movement keys to travel, as in a game. F recentres the view on the selected object, Alt + left click orbits, Alt + right click zooms.

Placing and handling objects

The cube-with-a-plus icon, at the top of the viewport, opens the element library. Under Shapes, a cube or a cone drops straight into the scene.

  • W — move.
  • E — rotate.
  • R — scale.
  • Alt + drag — duplicate the object.

The button next to the gizmo toggles between World and Local Space: the axes then align either with the world or with the object itself — which changes everything as soon as an object has been rotated. Snapping, right beside it, constrains moves, rotations and scales to regular steps.

Creating materials

A material gives an object its colour and its surface. Open the Content Drawer (Ctrl + Space), Add button ▸ Material, named by convention M_ followed by whatever you want.

  1. 1Open the material: an output node is waiting for you.
  2. 2Wire a colour into Base Color, then click Apply.
  3. 3Drag the material from the Content Drawer straight onto the object in the scene.

You can also assign it from the object’s Details panel, Material ▸ Element 0 line. The arrow beside the field applies whatever material is currently selected in the Content Drawer.

Turning an assembly into a Static Mesh

A fir tree made of four stacked cones is four lines in the Outliner — and forty for ten trees. Select the primitives, then in the Actor menu, choose Convert Actor to Static Mesh.

The result is a single reusable asset, to be duplicated and rotated at will. The original primitives can be deleted from the scene.

Tidy the mesh and its materials into a dedicated folder. Right-clicking a folder lets you give it a colour — trivial, but you find your way around far faster as the project grows.

Blueprint Classes, in three floors

A class is a ready-made base. Each one inherits from the previous: it takes what the parent knows how to do, and adds its own.

ClassWhat it brings
ActorAn object that exists in the world. A crate, a lamp, a wall.
PawnA controllable Actor. A car, a plane, a drone.
CharacterA Pawn that knows how to walk, run, jump, and that handles gravity.

For a playable character, Character is the right pick: the jump mechanic is already written in C++ by the engine. With a Pawn, you would have to code it yourself.

  1. 1Content Drawer ▸ Add ▸ Blueprint Class ▸ Character, named by convention BP_MyCharacter.
  2. 2File ▸ New Level ▸ Basic, saved as LVL_Default — a light level, far faster to load.
  3. 3In the Blueprint, select the capsule and add a Camera component to it.
  4. 4Raise the camera to eye level, compile, save.

The Game Mode: telling the level who to play

The Game Mode defines the rules of the game, starting with the pawn the player embodies. Without it, the level launches with no character.

  1. 1Open Window ▸ World Settings.
  2. 2On the GameMode Override line, click the + : a Game Mode is created, name it GM_Default.
  3. 3Expand it, and in Default Pawn Class, choose BP_MyCharacter.

The Player Start marks where the character appears. If it has been deleted, you will find it again in the element library, Basic section.

The input system

Unreal separates the key from the action. An Input Action describes an intent — jump, look, move — and an Input Mapping Context ties keys to those intents. That way you can have one key set for walking, another for driving, a third for menus.

  1. 1Create an Input folder, then an Input Mapping Context named IMC_Default.
  2. 2Create an IA_Jump Input Action, of type Digital (bool).
  3. 3In IMC_Default, add a mapping to IA_Jump and assign it the space bar.
  4. 4Expand the Triggers section and add two: Pressed and Released.

In the BP_MyCharacter Event Graph, the IA_Jump event then appears with a Started output (key pressed) and Completed (key released). Wire Started into the Jump function — the one already present in the Character class.

Nothing will happen while the engine does not know which Mapping Context to use. On Event BeginPlay, call Enhanced Input Local Player Subsystem, then Add Mapping Context with IMC_Default. That is the most common oversight of the early days.

Looking around

Create an IA_Look Input Action, this time as Axis2D — the mouse moves on two axes. In the Mapping Context, assign it Mouse XY 2D-Axis, and add a Negate modifier limited to the Y axis: without it, pushing the mouse up looks down.

In the graph, the event feeds two chained functions: Add Controller Yaw Input and Add Controller Pitch Input. Right-click Action Value, then Split Struct Pin, to separate the two axes.

Unreal axisMaps toUsed for
YawZLooking left and right
PitchYLooking up and down
RollXTilting the head — unused here

Last step, often forgotten: select the camera and tick Use Pawn Control Rotation. Without it, the controller turns but the view stays put.

Moving

Duplicate IA_Look into IA_Move — the Axis2D type suits it too. In the Mapping Context, add four keys, with the right modifiers.

KeyModifiersResult
ZSwizzle Input Axis Value (YXZ)Forward
SSwizzle Input Axis Value + NegateBackward
QNegateLeft
DNoneRight

By default, a key returns 1 on the X axis. The Swizzle moves that value onto the Y axis — the forward-and-back one — and the Negate flips it. Hence the four combinations above.

  1. 1In the graph, add the IA_Move event and two chained Add Movement Input functions.
  2. 2Split Struct Pin on Action Value to separate X and Y.
  3. 3Wire X into the first, with Get Actor Right Vector as World Direction.
  4. 4Wire Y into the second, with Get Actor Forward Vector.

Unsure what a value returns? Wire a Print String onto it, and give it a colour. Two Print Strings in different colours are enough to see live which axis fires. It is the most profitable debugging tool of your first weeks.

Finally, select your groups of nodes and press C to wrap them in a comment — BeginPlay, Jump, Look, Move. The graph stays readable as it grows.

Collisions

The character walks through the fir trees: a Static Mesh generated in the editor has no usable collision. Open the mesh, Collision section, and change Collision Complexity from Project Default to Use Complex Collision As Simple.

The engine then uses the mesh itself as the collision volume. It is not the most efficient solution for a real game, but it is instant and perfect for experimenting.

And next

At this point you have a scene, a playable character, a camera, a jump, collisions — and above all a method: a class, components, Input Actions, a commented graph. The rest is adding mechanics one at a time, inside that same structure.