You closed Lesson 1 with a locked fantasy and scope box. Now you mirror that clarity in disk and editor structure. A stealth slice gathers fast iterations on AI, lighting, and audio. Without conventions, you will rename half the project in Lesson 7 and lose diffs you needed for Lesson 14 playtests.
This lesson builds the skeleton: project type, top-level /Game folders, naming patterns, plugin discipline, and the minimum viable Git (or Perforce) workflow. You are not greyboxing yet; you are making sure greybox has a home.

Lesson objective
By the end of this lesson you will have:
- A UE 5.5 project created with the right template and feature kits for a 3D stealth slice
- A written folder map under
/Gamealigned to your mission (levels, characters, AI, audio, UI, VFX) - Naming rules for assets and Blueprints plus a one-page source control note (ignore rules, LFS stance, binary merge policy)
Step 1: Create the project with the correct template
-
Launch Unreal Engine 5.5 and choose Games, then a template that matches your Lesson 1 pillars:
- Prefer Third Person if you plan third-person stealth with a controllable rig you will replace later.
- Prefer Blank if you want zero gameplay code and will import a custom character in Lesson 4.
-
Set Target Platform to Desktop for early iteration. You can add console-style checks later; the slice still compiles for your dev machine first.
-
Choose Blueprint unless you already committed to C++ in Lesson 1. Blueprint-heavy slices ship faster for AI and designer iteration; you can migrate hot paths later.
-
Disable starter content if you want a clean tree (recommended). Starter meshes clutter search and teach bad default folders.
-
Name the project with a code-safe prefix, e.g.
StealthSlice_orSS_, and keep the project folder path short (avoid deep OneDrive or synced paths that slow shader compile).
Pro tip: create a project README at repo root (outside Content/) with engine build number, template choice, and the one-line fantasy from Lesson 1. Future-you will thank you before a publisher asks for a changelog.
Step 2: Lay out /Game folders before importing art
In the Content Browser, author a tree that maps to work streams, not to “whatever we imported Tuesday.” A practical default for this course:
| Path | Purpose |
|---|---|
/Game/Maps |
Mission greybox and lighting passes (subfolders per iteration: M01_Blockout, M01_Lighting) |
/Game/Player |
Character, input, camera, stealth locomotion assets |
/Game/AI |
Enemies, controllers, behavior assets, perception curves |
/Game/Interactables |
Doors, objectives, pickups, distraction props |
/Game/UI |
Widgets, fonts, HUD textures |
/Game/Audio |
Cues, attenuation, meta sounds |
/Game/VFX |
Niagara systems tied to detection, distractions, impacts |
/Game/Core |
Game Mode, Game State, save stubs, data assets |
/Game/Dev |
Placeholder materials, debug meshes (exclude from shipping) |
Adjust names to your mission, but do not leave everything in /Game/ThirdPerson from the template. Migrate or delete template maps once your structure exists so search results stay clean.
Step 3: Naming conventions that scale
Pick one pattern and document it in the same README:
- Assets:
PREFIX_Type_Name_Variant, e.g.SS_SM_CoverCrate_A,SS_M_Opaque_Master,SS_T_Decal_Grash_Stain. - Blueprints:
BP_Enemy_Guard_Standard,BP_Player_Stealth,WBP_HUD_Detection. - Levels:
L_Mission01_Blockout,L_Mission01_Playtest.
Why prefixes matter: stealth slices spawn hundreds of similarly named meshes (crates, vents, lights). Prefixes keep filtering fast in Content Browser and blame readable in diffs when you rename before Lesson 14.
Common mistake: mixing PascalCase folders with snake_case files. Unreal tolerates it; humans do not. Pick one casing style for files and stick to it.
Step 4: Plugins and rendering features (5.5 realities)
Enable only what your pillars need on day one:
- If your Lesson 1 fantasy relies on heavy lighting reads for stealth, plan for Lumen in your target quality tier and note GPU mins for playtesters.
- If you need Nanite for dense clutter, enable it consciously and schedule Lesson 13 budget work early.
- Avoid stacking experimental plugins until the greybox compiles reliably.
Write down every enabled plugin in your README. Packaging failures in Lesson 15 often trace to a forgotten experimental module.
Step 5: Source control that survives Unreal
Minimum Git practices for this course:
- Ignore
Binaries/,DerivedDataCache/,Intermediate/,Saved/,.vs/, and local build artifacts. - Track
Config/,Content/,Source/(if C++), and your root*.uproject. - Decide Git LFS up front for
.uasset,.umap, and large audio. If the team is tiny and the slice is small, you may defer LFS—but then commit smaller batches and watch repo size weekly. - Use short, descriptive commits tied to lesson goals (
L2: add AI folder structure, notwip).
Pro tip: if two people edit the same .umap, merges are painful. Split work by level layers or sublevels before parallel work explodes in Lesson 6.
Mini challenge
Create an empty level L_Mission01_Setup, save it under /Game/Maps/M01_Blockout, and place one folder’s worth of placeholder notes using Editor utility or simple Text Render actors listing “Beat A / Beat B” from Lesson 1. You are proving the map pipeline works—not building geometry yet.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Shader compile hangs on first open | Path too long or sync client locking DerivedDataCache |
Move project closer to drive root; pause sync on DerivedDataCache |
| Content migrations duplicate assets | Drag-dropping across branches without fix-up | Use Migrate tool; delete duplicates before prototyping AI |
| Git repo balloons overnight | Large captures in Saved/ committed by mistake |
Add ignore rule; strip Saved from history if needed |
| Team cannot open map | Plugin mismatch | Align .uproject plugin list; resave on canonical machine |
Summary
- Match template and targets to Lesson 1; avoid starter noise unless it speeds learning.
- Build
/Gamearound mission work streams, not engine defaults. - Write naming + plugin + VCS rules before greybox land rush.
- Next is greybox readability—geometry that sells stealth routes without materials.
In Lesson 3, you will block out the mission space with cover rhythm, sightlines, and traversal beats that connect to your success conditions.
Further reading
- Unreal Engine documentation hub – project settings, content browser, and source control guidance.
- Unreal Engine guides – companion patterns on this site.
- Unreal Engine 5.5 packaging troubleshooting – keep bookmarked for Lesson 15.
FAQ
Blueprint or C++ for this course path?
Blueprint-first matches the lesson cadence. Move systems to C++ when profiling demands it in Lesson 13.
Should I use World Partition for the slice?
Only if your Lesson 1 scope truly needs streaming. Most single-mission slices stay one persistent level for simplicity.
What if my studio mandates Perforce?
Translate the same rules: typed workspaces, shelved reviews, and binary locking on maps before parallel edits.
Do I commit DerivedDataCache?
No. Let each machine rebuild or use a shared DDC only on a build farm.
When your folder tree and README are in place, you are ready to greybox without reorganizing the project mid-AI implementation. Continue to Lesson 3: Greybox the Mission Space once your naming doc is something a new teammate could follow on day one.