docs: Add documentation for building, contributing, and structure

This commit is contained in:
Huseyn Ismayilov 2024-11-21 03:16:39 +04:00
parent 11becc1f71
commit a673425dfd
4 changed files with 76 additions and 39 deletions

View File

@ -1,43 +1,14 @@
# Ferx # Ferx Engine
Ferx is a basic game engine written in c++
[![CMake on a single platform](https://github.com/coderloff/ferx/actions/workflows/cmake-single-platform.yml/badge.svg)](https://github.com/coderloff/ferx/actions/workflows/cmake-single-platform.yml)
![Ferx](https://raw.githubusercontent.com/coderloff/ferx/refs/heads/main/docs/assets/Ferx.png) ![Ferx](https://raw.githubusercontent.com/coderloff/ferx/refs/heads/main/docs/assets/Ferx.png)
## Build <div align="center">
<img src="https://img.shields.io/github/actions/workflow/status/coderloff/ferx/cmake-single-platform.yml?style=for-the-badge" alt="Build" />
<img src="https://img.shields.io/github/license/coderloff/ferx?style=for-the-badge" alt="License" />
<img src="https://img.shields.io/github/contributors/coderloff/ferx?style=for-the-badge" alt="Contributors" />
<img src="https://img.shields.io/github/forks/coderloff/ferx?style=for-the-badge" alt="Forks" />
<img src="https://img.shields.io/github/stars/coderloff/ferx?style=for-the-badge&color=%23DFB317" alt="Stars" />
<img src="https://img.shields.io/github/issues/coderloff/ferx?style=for-the-badge" alt="Issues" />
</div>
To clone repo: Ferx is a basic game engine written in C++. This project is mainly designed for learning purposes. For more information, check out [docs](https://github.com/coderloff/ferx/)
```bash
git clone https://github.com/coderloff/ferx
```
After clonning the repo, update the submodules:
```bash
git submodule update --init
```
That's it! You can build and run the project with `make` command
### Commands
Here is the list of each `make` command:
`make` - builds the project and runs it (default: debug)<br>
`make debug` - builds the project as debug<br>
`make release` - builds the project as release<br>
`make run` - runs the executable<br>
`make clean` - cleans the build target<br>
`make clean-all` - deletes build directory<br>
## Dependencies
Required dependencies: `git` `cmake` `make` `ninja`
## Libraries
* **GLFW**
* **GLAD**
* **GLM**
* **ImGUI**

28
docs/Building Project.md Normal file
View File

@ -0,0 +1,28 @@
# Building Project
To clone repo:
```bash
git clone https://github.com/coderloff/ferx
```
After clonning the repo, update the submodules:
```bash
git submodule update --init
```
That's it! You can build and run the project with `make` command
## Commands
Here is the list of each `make` command:
`make` - builds the project and runs it (default: debug)<br>
`make debug` - builds the project as debug<br>
`make release` - builds the project as release<br>
`make run` - runs the executable<br>
`make clean` - cleans the build target<br>
`make clean-all` - deletes build directory<br>
## Dependencies
Required dependencies: `git`, `cmake`, `make`, `ninja`

11
docs/Contributing.md Normal file
View File

@ -0,0 +1,11 @@
# Contributing
Firstly, thanks for all the contributions!
For contributing, you should follow [conventional commit messagess rule](https://gist.github.com/qoomon/5dfcdf8eec66a051ecd85625518cfd13).
## Closing issues
For closing issues, you can add `close (issue id)` to your commit message.
Here is an example: `feat(close #1): Implement ECS architecture`

27
docs/Project Structure.md Normal file
View File

@ -0,0 +1,27 @@
# Project Structure
There are four main folders in the project: `editor`, `engine`, `thirdparty`, and `docs`
- **Engine**: classes for the core engine
- `Engine`: main engine class handling instances
- `FrameBuffer`, `IndexBuffer`, `VertexBuffer`, `VertexArray`: class implementations of buffers and vertex array
- `Shader`, `Texture` - class implementations handling shaders and textures
- `Input`: input handling using GLFW
- `Window`: window management using GLFW
- `Renderer`: basic renderings and overall handlings
- `UI`: user interface handling using ImGui
- `Camera`: basic camera implementation supporting movement and rotation
- **Editor**: main executable to interact with the engine
- `Resources`: folder containing fonts, shaders, and assets
- `Editor`: main editor class handling
- `Main`: executing arguments and configurations
- **Thirdparty**: different external libraries like GLFW or ImGui
- `GLAD`: extension loader for modern OpenGL functions
- `GLFW`: multi-platform library for window and input handling
- `GLM`: mathematics library for complex computations
- `ImGui`: graphical user interface for C++
- `stb_image`: single-header file for handling image loading
- **Docs**: documentations to understand overall process