First-Person Controller with Box3D Physics, cgltf, SDL3, GLM, and OpenGL 3.3 First-Person контроллер с физикой Box3D, cgltf, SDL3, GLM и 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, a textured falling cube loaded via cgltf, a repeating grid ground plane, and toggleable physics wireframe debug rendering on Windows and Ubuntu.
Пошаговое руководство по скачиванию и запуску стартового проекта с капсульным First-Person (FPS) контроллером, физикой твердых тел Box3D, текстурированным падающим кубом через 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)
- 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 sdl3-cgltf-opengl-box3d-fps-starter-main.zip archive so that its files reside in:
Распакуйте скачанный архив sdl3-cgltf-opengl-box3d-fps-starter-main.zip так, чтобы его содержимое находилось в:
C:\projects\sdl3-cgltf-opengl-box3d-fps-starter
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/sdl3-cgltf-opengl-box3d-fps-starter/archive/refs/heads/main.zip -O sdl3-cgltf-opengl-box3d-fps-starter-main.zip
unzip -o sdl3-cgltf-opengl-box3d-fps-starter-main.zip
mv sdl3-cgltf-opengl-box3d-fps-starter-main sdl3-cgltf-opengl-box3d-fps-starter
rm -f sdl3-cgltf-opengl-box3d-fps-starter-main.zip
cd ~/projects/sdl3-cgltf-opengl-box3d-fps-starter
Step 2: Project Structure Overview Шаг 2: Обзор структуры проекта
The extracted directory contains the complete source code, assets, and ready-to-use build scripts: Распакованная директория содержит полный исходный код, ассеты и готовые скрипты сборки:
sdl3-cgltf-opengl-box3d-fps-starter/
├── assets/
│ └── models/
│ └── cube/
│ ├── check-grid-cube.glb
│ └── check-grid-512.jpg
├── src/
│ ├── app.h # Core state struct & variables
│ ├── 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
│ ├── physics_debug.cpp
│ ├── shader_utils.h # Shader programs for textured mesh & 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, the application opens a window with a first-person perspective on a textured checker grid floor, facing a falling textured cube with Box3D physical collisions: При запуске приложение открывает окно с видом от первого лица на текстурированном полу с клетчатой сеткой, перед которым падает текстурированный куб с физическими столкновениями Box3D:
| 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 Box3D physics wireframe debug rendering ON/OFFВключить/выключить каркасную отладочную отрисовку физики Box3D |
| Esc | Release mouse cursor (click window to recapture)Освободить курсор мыши (кликните в окно для захвата) |
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 Поддержка криптовалютой