AI readme
This commit is contained in:
parent
9953bc13e9
commit
26edf2c408
211
README.md
211
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 <repository-url>
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user