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.

Before proceeding, make sure you have installed all required libraries on your system using the appropriate guides: Перед продолжением убедитесь, что вы установили все необходимые библиотеки в вашей системе, следуя соответствующим инструкциям:

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) Сбербанк (только для РФ)

Sberbank SBP QR Code

Direct transfer via phone number (Russia only) Перевод по номеру телефона (только для РФ)

+7 (917) 212-29-59

USDT TRC20

USDT TRC20 QR Code

Support via Cryptocurrency Поддержка криптовалютой

TMtY1YifNf6FKvgeFmqKGQR4NStKr3csGp