In the previous lesson you defined what kind of FPS you are building and how its systems fit together. Now it is time to create a concrete Unreal Engine 5 project that matches that plan instead of a random template you will want to throw away later.
In this lesson you will:
- Create a new Unreal Engine 5 FPS project with sensible defaults.
- Configure target platforms, quality settings, and input for your game.
- Set up a consistent folder structure that matches your architecture doc.
- Save a basic test level so you can quickly try movement and mechanics in later lessons.
Step 1: Choose the right project template and settings
Open the Unreal Engine launcher and create a new project.
- Engine version: pick a stable UE 5.3+ or whatever your team standard is.
- Template: start from First Person or a blank project if you prefer to assemble everything yourself.
- Graphics preset: choose a level that matches your target hardware (for example “Scalable 3D or 2D” if you care about mid-range PCs).
- Ray tracing: only enable if you know you need it; for most indie FPS projects, start without it and add later if performance allows.
Name the project something specific, for example FpsCourseProject, and store it in a version-controlled folder you prepared in Lesson 1.
Step 2: Configure project defaults (maps, game mode, input)
With the project open, go to Edit → Project Settings and fix the foundational settings now.
Maps and Modes
- Under Maps & Modes:
- Set Editor Startup Map to a simple blockout level (you can use the default FirstPersonMap for now).
- Set Game Default Map to the same level so standalone builds start where you expect.
- Create a custom GameMode Blueprint (for example
BP_FpsGameMode) and set it as the default GameMode.
This ensures that when you hit Play, you always land in the correct environment with your own rules, not Epic’s demo logic.
Input mappings
Still in Project Settings, open Input:
- Define axes:
MoveForward→ W/S and up/down on left stick.MoveRight→ A/D and left stick horizontal.LookUpandTurn→ mouse and right stick.
- Define actions:
Jump,Crouch,Sprint,Fire,Aim,Interact,Reloadaccording to your design.
You will bind these in your character and controller later, but having the names locked now avoids tedious refactors.
Step 3: Set up your content folder structure
Your architecture doc from Lesson 1 suggested top-level modules. Mirror that structure in the Content Browser:
/Game/Core— base classes, game instance, game mode, utilities./Game/Characters— player and enemy Blueprints, animations, meshes./Game/Weapons— weapon Blueprints, gun meshes, VFX, sounds./Game/Levels— persistent maps, test arenas, and blockouts./Game/UI— widgets, HUD, crosshairs, menus./Game/Audio— SFX, ambience, music./Game/Systems— save/load, progression, achievements, and other shared systems.
Create these folders now, even if they are empty.
Doing this early reduces the chance of dumping everything into a single Blueprints folder that becomes impossible to navigate.
Step 4: Create a test level for FPS mechanics
Create a new level called L_FPS_TestArena in /Game/Levels.
In that level:
- Add a flat floor (for example a scaled cube or simple geometry).
- Place a few simple obstacles: ramps, stairs, boxes to jump on.
- Add basic lighting and a Player Start if not already present.
This does not need to look pretty; it is your sandbox for movement, weapons, and AI over the next several lessons. Keep the environment readable so you can tell immediately if something feels off with scale or speed.
Step 5: Confirm build and platform settings
Before you write gameplay code, make sure your project can package and run at least once.
- In Project Settings → Platforms, review your primary target (Windows, Linux, console, etc.).
- In Edit → Plugins, disable features you know you will not use to reduce build size and complexity.
- Use File → Package Project → [Target] to run a small test build once your map is ready.
If packaging fails, fix the issues now—broken packaging late in development is much harder to debug.
Step 6: Save a baseline configuration profile
To keep your settings consistent across the team:
- Add a short README in your repo describing:
- Engine version and template used.
- Required plugins and project settings you changed.
- Folder structure conventions.
- Consider using a simple config diff tool or versioning key
.inifiles so configuration changes are visible in code review.
You can also create Editor Utility Widgets or scripts later to enforce naming and folder rules, but documentation is a good first step.
Mini exercise
Take 30–40 minutes to:
- Create your FPS project in Unreal 5 with the right template and graphics preset.
- Set up input mappings for your core verbs (move, look, jump, crouch, sprint, fire, interact, reload).
- Build a simple
L_FPS_TestArenamap with ramps, stairs, and cover pieces. - Run a quick Play In Editor and one packaged build to confirm everything works.
When you are done, push your project to your version control system so future lessons start from a stable foundation instead of a fragile local copy.
What is next
In the next lesson you will implement the player controller and movement systems, wiring them into the input mappings and test arena you just set up. From that point on, every change will build on the clean configuration you created here, rather than forcing you to constantly fix project-level issues.