From 26edf2c408ae24d5d3bb2171eac9e75b6790a6af Mon Sep 17 00:00:00 2001 From: Chewico Date: Sun, 4 Oct 2026 20:50:43 +0200 Subject: [PATCH] AI readme --- README.md | 211 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 210 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a108515..73f58b3 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,211 @@ -# DeerithEngine +# MyEngine +A C++20 game engine project built with CMake and OpenGL. + +## Requirements + +Ubuntu with the following packages installed: + +* CMake >= 3.20 +* GCC / G++ +* Make or Ninja +* OpenGL development libraries +* GLFW3 +* GLM +* spdlog +* fmt + +Install the dependencies with: + +```bash +sudo apt update + +sudo apt install \ + build-essential \ + cmake \ + ninja-build \ + libglfw3-dev \ + libglm-dev \ + libspdlog-dev \ + libfmt-dev \ + libgl1-mesa-dev +``` + +## Building + +Clone the repository and enter the project directory: + +```bash +git clone +cd DeerithEngine +``` + +Create a separate build directory: + +```bash +cmake -S . -B build -G Ninja +``` + +Build the project: + +```bash +cmake --build build +``` + +The project uses C++20. + +## Running + +After a successful build, run the sandbox application with: + +```bash +./build/sandbox/Sandbox +``` + +If the executable is generated in a different location depending on the CMake configuration, you can find it with: + +```bash +find build -type f -executable -name "Sandbox" +``` + +Then execute the resulting path. + +## Project Structure + +```text +MyEngine/ +├── CMakeLists.txt +│ +├── deerith_engine_core/ +│ ├── CMakeLists.txt +│ ├── include/ +│ │ └── deerith/ +│ └── src/ +│ +├── deerith_engine_client/ +│ ├── CMakeLists.txt +│ ├── include/ +│ │ └── deerith/ +│ ├── src/ +│ └── shaders/ +│ +├── sandbox/ +│ ├── CMakeLists.txt +│ └── src/ +│ └── main.cpp +│ +└── build/ +``` + +The `build/` directory is generated by CMake and should not be committed to Git. + +## CMake Targets + +### DeerithCore + +`DeerithCore` is the engine's core library. + +Dependencies: + +* `spdlog` +* `fmt` + +It exposes its headers through: + +```text +deerith_engine_core/include +``` + +### DeerithClient + +`DeerithClient` contains the graphics/client-side engine functionality. + +Dependencies: + +* `DeerithCore` +* OpenGL +* GLFW +* GLM + +It also copies the engine shaders into the build directory automatically. + +### Sandbox + +`Sandbox` is the executable used to test and develop the engine. + +It links against: + +```text +DeerithClient +``` + +## Shader Files + +Shaders are located in: + +```text +deerith_engine_client/shaders/ +``` + +CMake automatically copies them to the corresponding build directory: + +```text +build/deerith_engine_client/shaders/ +``` + +This is done by the `DeerithClientShaders` custom target. + +## Clean Build + +To completely remove the generated build files: + +```bash +rm -rf build +``` + +Then configure and build again: + +```bash +cmake -S . -B build -G Ninja +cmake --build build +``` + +## Debug Build + +For a Debug build: + +```bash +cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug +cmake --build build +``` + +Run the application: + +```bash +./build/sandbox/Sandbox +``` + +## Release Build + +For a Release build: + +```bash +cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release +cmake --build build +``` + +## Development + +When adding new `.cpp` files to the engine, CMake automatically detects them through `GLOB_RECURSE` with `CONFIGURE_DEPENDS`. + +After adding or removing source files, rebuild normally: + +```bash +cmake --build build +``` + +If CMake does not detect a project configuration change correctly, reconfigure: + +```bash +cmake -S . -B build -G Ninja +```