First-Person Controller with Box3D Physics, Recast Navigation, BehaviorTree.CPP, SDL3, and OpenGL 3.3 First-Person контроллер с физикой Box3D, Recast Navigation, BehaviorTree.CPP, SDL3 и OpenGL 3.3
A step-by-step guide to downloading and running the starter project featuring a First-Person (FPS) capsule controller, Box3D rigid body physics, Recast/Detour navigation mesh pathfinding, BehaviorTree.CPP 4.x enemy AI, a textured falling cube loaded via cgltf, and color-coded debug overlays on Windows and Ubuntu.
Пошаговое руководство по скачиванию и запуску стартового проекта с капсульным First-Person (FPS) контроллером, физикой твердых тел Box3D, поиском путей по NavMesh через Recast/Detour, AI врагов на BehaviorTree.CPP 4.x, текстурированным падающим кубом через cgltf и цветовой отладочной визуализацией под Windows и Ubuntu.
- Building Box3D Static Library for Windows (MinGW & CMake) Сборка статической библиотеки Box3D для Windows (MinGW и CMake)
- Building Box3D Static Library for Ubuntu (GCC, CMake & Ninja) Сборка статической библиотеки Box3D для Ubuntu (GCC, CMake и Ninja)
- Building Recast Navigation Static Library for Windows (MinGW & CMake) Сборка статической библиотеки Recast Navigation для Windows (MinGW и CMake)
- Building Recast Navigation Static Library for Ubuntu (GCC, CMake & Ninja) Сборка статической библиотеки Recast Navigation для Ubuntu (GCC, CMake и Ninja)
- Building TinyXML2 Static Library for Windows (MinGW & CMake) Сборка статической библиотеки TinyXML2 для Windows (MinGW и CMake)
- Building TinyXML2 Static Library for Ubuntu (GCC, CMake & Ninja) Сборка статической библиотеки TinyXML2 для Ubuntu (GCC, CMake и Ninja)
- Building BehaviorTree.CPP Static Library for Windows (MinGW & CMake) Сборка статической библиотеки BehaviorTree.CPP для Windows (MinGW и CMake)
- Building BehaviorTree.CPP Static Library for Ubuntu (GCC, CMake & Ninja) Сборка статической библиотеки BehaviorTree.CPP для Ubuntu (GCC, CMake и Ninja)
- Installing cgltf C glTF Loading Library Установка C-библиотеки загрузки glTF cgltf
- Installing GLAD OpenGL Loader Library Установка библиотеки-загрузчика OpenGL GLAD
- Installing GLM Library Установка библиотеки GLM
- Building SDL3 Static Library for Windows (MinGW & CMake) Сборка статической библиотеки SDL3 для Windows (MinGW и CMake)
- Building SDL3 Static Library for Ubuntu (GCC, CMake & Ninja) Сборка статической библиотеки SDL3 для Ubuntu (GCC, CMake и Ninja)
- Building SDL3_image Static Library for Windows (MinGW & CMake) Сборка статической библиотеки SDL3_image для Windows (MinGW и CMake)
- Building SDL3_image Static Library for Ubuntu (GCC, CMake & Ninja) Сборка статической библиотеки SDL3_image для Ubuntu (GCC, CMake и Ninja)
Step 1: Download Project Archive (.zip) Шаг 1: Скачивание zip-архива проекта
Download the source code archive directly from the GitHub repository: Скачайте архив исходного кода напрямую из репозитория GitHub:
Download Repository (.zip) Скачать репозиторий (.zip) View on GitHub Открыть на GitHub
Option A: Windows Вариант A: Windows
Extract the downloaded fps-starter-box3d-recast-behaviortree-opengl-sdl3-desktop-main.zip archive so that its files reside in:
Распакуйте скачанный архив fps-starter-box3d-recast-behaviortree-opengl-sdl3-desktop-main.zip так, чтобы его содержимое находилось в:
C:\projects\fps-starter-box3d-recast-behaviortree-opengl-sdl3-desktop
Option B: Ubuntu (Terminal) Вариант B: Ubuntu (Терминал)
On Ubuntu, you can download and extract the repository in your terminal using wget and unzip:
В Ubuntu вы можете скачать и распаковать репозиторий в терминале с помощью wget и unzip:
sudo apt update && sudo apt install -y wget unzip
mkdir -p ~/projects
cd ~/projects
wget https://github.com/ivan-enzhaev/fps-starter-box3d-recast-behaviortree-opengl-sdl3-desktop/archive/refs/heads/main.zip -O fps-starter-box3d-recast-behaviortree-opengl-sdl3-desktop-main.zip
unzip -o fps-starter-box3d-recast-behaviortree-opengl-sdl3-desktop-main.zip
mv fps-starter-box3d-recast-behaviortree-opengl-sdl3-desktop-main fps-starter-box3d-recast-behaviortree-opengl-sdl3-desktop
rm -f fps-starter-box3d-recast-behaviortree-opengl-sdl3-desktop-main.zip
cd ~/projects/fps-starter-box3d-recast-behaviortree-opengl-sdl3-desktop
Step 2: Project Structure Overview Шаг 2: Обзор структуры проекта
The extracted directory contains the complete source code, assets, and ready-to-use build scripts: Распакованная директория содержит полный исходный код, ассеты и готовые скрипты сборки:
fps-starter-box3d-recast-behaviortree-opengl-sdl3-desktop/
├── assets/
│ └── models/
│ └── cube/
│ ├── check-grid-cube.glb
│ └── check-grid-512.jpg
├── src/
│ ├── app.h # Core state struct & OpenGL handles
│ ├── enemy_ai.h # Recast NavMesh & BehaviorTree enemy declarations
│ ├── enemy_ai.cpp # Detour crowd updates & BT logic implementation
│ ├── fps_controller.h # WASD movement, jumping & mouse look
│ ├── fps_controller.cpp
│ ├── model_utils.h # cgltf loader & ground plane generator
│ ├── model_utils.cpp
│ ├── physics_debug.h # Box3D debug shape drawing callbacks & line helpers
│ ├── physics_debug.cpp
│ ├── shader_utils.h # Shader programs for textured meshes & debug lines
│ ├── shader_utils.cpp
│ ├── texture_utils.h # SDL3 texture loader (GL_REPEAT tiling)
│ ├── texture_utils.cpp
│ └── main.cpp # SDL3 callbacks (Init, Event, Iterate, Quit)
├── build-bin.sh # Ubuntu build script
├── build-exe.bat # Windows build script
├── CMakeLists.txt # CMake configuration
├── config-bin.sh # Ubuntu configure script
├── config-exe.bat # Windows configure script
├── run-bin.sh # Ubuntu execution script
└── run-exe.bat # Windows execution script
Step 3: Build & Run the Application Шаг 3: Сборка и запуск приложения
The repository already includes pre-configured scripts to configure, build, and run the project. Репозиторий уже содержит готовые скрипты для конфигурации, сборки и запуска проекта.
Windows (Command Prompt / PowerShell)
Run the batch scripts sequentially from the project root folder: Последовательно запустите командные файлы из корневой папки проекта:
config-exe.bat
build-exe.bat
run-exe.bat
Ubuntu (Terminal)
Grant execution permissions to the shell scripts first, then run them sequentially: Сначала предоставьте права на исполнение shell-скриптам, затем последовательно запустите их:
chmod +x config-bin.sh build-bin.sh run-bin.sh
./config-bin.sh
./build-bin.sh
./run-bin.sh
Step 4: Controls & Expected Output Шаг 4: Управление и ожидаемый результат
When launched, you are placed in a 60×60m arena with enemy cubes navigating towards you using Detour Crowd pathfinding and BehaviorTree logic. При запуске вы появляетесь на арене 60×60м с вражескими кубами, которые перемещаются к вам с помощью поиска путей Detour Crowd и логики BehaviorTree.
| ControlУправление | ActionДействие |
|---|---|
| W A S D | Walk forward, backward, strafe left and rightДвижение вперед, назад, стрейф влево и вправо |
| Mouse MovementДвижение мыши | First-Person camera look (yaw & pitch)Обзор камерой от первого лица (рыскание и тангаж) |
| Space | JumpПрыжок |
| P / F1 | Toggle Debug Overlays (Box3D Wireframes, NavMesh & AI States)Включить/выключить отладочные оверлеи (каркасы Box3D, NavMesh и состояния AI) |
| G | Toggle Ground Plane Texture (hide floor texture to inspect lines clearly)Включить/выключить текстуру пола (скрыть пол для четкой видимости линий) |
| Esc | Release mouse cursor (click window to recapture)Освободить курсор мыши (кликните в окно для захвата) |
Debug Visuals Legend (when active): Легенда отладочной визуализации (при включении):
| ColorЦвет | System & BehaviorСистема и поведение |
|---|---|
| 🔷 Cyan 🔷 Голубой | Recast/Detour NavMesh: Walkable polygon boundaries across the arena floor. Recast/Detour NavMesh: Границы проходимых полигонов сетки навигации по всей арене. |
| 🟢 Green 🟢 Зеленый | BehaviorTree (Idle): Ring at feet when the player is out of detection range (> 35m). BehaviorTree (Idle): Кольцо у основания, когда игрок вне зоны видимости (> 35м). |
| 🟡 Yellow 🟡 Желтый | BehaviorTree (Chase): Base ring + direct ray connecting enemy to player during crowd pursuit. BehaviorTree (Chase): Кольцо + прямая линия от врага к игроку при активном преследовании. |
| 🔴 Red 🔴 Красный | BehaviorTree (Attack): Base ring + 2.5m melee attack radius circle around the enemy. BehaviorTree (Attack): Кольцо + окружность радиусом 2.5м зоны ближней атаки вокруг врага. |
| ⚪ White ⚪ Белый | Box3D Physics: Rigid body collision hulls for the player capsule, boxes, and ground. Физика Box3D: Коллизионные каркасы твердых тел для капсулы игрока, кубов и земли. |
Support My Work Поддержать проект
If these tutorials helped you, consider buying me a coffee! Если эти туториалы вам помогли, вы можете поддержать автора.
Sberbank (Russia only) Сбербанк (только для РФ)
Direct transfer via phone number (Russia only) Перевод по номеру телефона (только для РФ)
USDT TRC20
Support via Cryptocurrency Поддержка криптовалютой