An attempt at making a C++ game engine from scratch
.vscode | ||
FluxEngine | ||
Sandbox | ||
subprojects | ||
.gitignore | ||
.gitmodules | ||
GenerateProjects.bat | ||
LICENSE | ||
meson.build | ||
README.md |
FluxEngine
FluxEngine is a high-performance, modular game engine designed for flexibility and scalability. It provides a robust framework for building games and interactive applications, leveraging modern C++ standards and best practices.
Features
- Cross-Platform Support: Build games for Windows, Linux, and macOS.
- Modular Design: Easily extend and customize the engine with its modular architecture.
- Modern C++: Written in C++20, ensuring high performance and maintainability.
- Garbage Collection: Built-in garbage collection system for efficient memory management.
- Logging: Integrated logging system powered by spdlog.
- Static and Dynamic Linking: Supports both static and dynamic library builds.
Getting Started
Prerequisites
- C++ Compiler: A compiler with C++20 support (e.g., MSVC, GCC, or Clang).
- meson: Version 0.63 or higher.
- Dependencies: The project uses
spdlog
for logging, included as a meson submodule.
Building the Project
-
Clone the repository:
git clone https://git.bbgames.dev/jordon/FluxEngine.git cd FluxEngine
-
Generate build files using our custom build script:
.\GenerateProjects.bat
-
Run the Sandbox tests from the
builddir
directory.
Directory Structure
FluxEngine/src
: Source code for the engine.public
: Public headers for the engine.private
: Implementation files for the engine.
Sandbox/src
: Source code for the Sandbox testing app.private
: private files for Sandbox.
builddir
: Build output directory.
Key Components
- Engine: Core engine functionality, including initialization and runtime management.
- GarbageCollector: Manages memory and object lifetimes.
- Log: Provides logging utilities for debugging and runtime diagnostics.
Contributing
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a feature branch:
git checkout -b feature/your-feature
- Commit your changes and push to your fork.
- Open a pull request.
License
FluxEngine is licensed under the MIT License. See the LICENSE file for details.
Acknowledgments
- spdlog for the logging library.
- The open-source community for inspiration and support.