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
- 1Download the launcher from the Epic Games site and create an account.
- 2Unreal Engine tab ▸ Library, click the + and choose the version.
- 3Start the engine, then New Project, Blank category.
- 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
| Window | What it holds |
|---|---|
| Viewport | The 3D scene, that is to say the game as you build it. |
| Outliner | The list of everything in the scene. |
| Details | The 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”.
| Action | Key |
|---|---|
| Forward | Z |
| Backward | S |
| Left | Q |
| Right | D |
| Local Down | A |
| Local Up | E |
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.
- 1Open the material: an output node is waiting for you.
- 2Wire a colour into Base Color, then click Apply.
- 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.
| Class | What it brings |
|---|---|
| Actor | An object that exists in the world. A crate, a lamp, a wall. |
| Pawn | A controllable Actor. A car, a plane, a drone. |
| Character | A 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.
- 1Content Drawer ▸ Add ▸ Blueprint Class ▸ Character, named by convention BP_MyCharacter.
- 2File ▸ New Level ▸ Basic, saved as LVL_Default — a light level, far faster to load.
- 3In the Blueprint, select the capsule and add a Camera component to it.
- 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.
- 1Open Window ▸ World Settings.
- 2On the GameMode Override line, click the + : a Game Mode is created, name it GM_Default.
- 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.
- 1Create an Input folder, then an Input Mapping Context named IMC_Default.
- 2Create an IA_Jump Input Action, of type Digital (bool).
- 3In IMC_Default, add a mapping to IA_Jump and assign it the space bar.
- 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 axis | Maps to | Used for |
|---|---|---|
| Yaw | Z | Looking left and right |
| Pitch | Y | Looking up and down |
| Roll | X | Tilting 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.
| Key | Modifiers | Result |
|---|---|---|
| Z | Swizzle Input Axis Value (YXZ) | Forward |
| S | Swizzle Input Axis Value + Negate | Backward |
| Q | Negate | Left |
| D | None | Right |
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.
- 1In the graph, add the IA_Move event and two chained Add Movement Input functions.
- 2Split Struct Pin on Action Value to separate X and Y.
- 3Wire X into the first, with Get Actor Right Vector as World Direction.
- 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.