Coffee Engine is a Beautiful and Cross-platform 3D Game Engine written in C++ using OpenGL and SDL3.
Important
This is a university project for learning how to make a 3D game engine.
![]() |
![]() |
---|---|
![]() |
![]() |
📚 Read the full documentation - Complete API reference, tutorials, and guides
he documentation includes:
- Getting Started: Setup guides for different IDEs (CLion, Visual Studio, VS Code)
- API Reference: Complete class documentation generated with Doxygen
- Architecture: Core systems, rendering pipeline, and engine modules
- Contributing: Code style guidelines and development setup
Any IDE or Text Editor that supports CMake Projects (and vcpkg) should work for developing the project.
git clone --recursive https://github.com/Brewing-Team/Coffee-Engine.git
cd Coffee-Engine
Windows
There are a lot of ways to do it. From installing all the necessary packages for building it (cmake, vcpkg, a compiler...), to using a IDE environment. My recomendation is to use an IDE environment if what you want is an straightforward way to compile the project.- Open the folder with Visual Studio 2022
- Enable vcpkg integration. More info at https://devblogs.microsoft.com/cppblog/vcpkg-is-now-included-with-visual-studio.
- Reconfigure the cmake project. If the output panel display something like
running vcpkg install
then you are ready to go to the next stage. - Wait until all the dependencies are installed by vcpkg. Then select on the top play button the Coffee-Editor.exe and run it.
- Go to the "bin/Coffee-Engine/" folder
- Congratulations! You have built Coffee-Engine for the first time!
- Open the folder with CLion
- ...
Linux
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
Sometimes this will not automatically add the VCPKG_ROOT environment variable!
For more info take a look at https://learn.microsoft.com/en-us/vcpkg/get_started/get-started?pivots=shell-powershell
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j $(nproc) CoffeeEditor
cd ../bin/CoffeeEditor/Release
./CoffeeEditor
- CoffeeEngine Core Library: Modular engine architecture
- CoffeeEditor: Full-featured game editor
- Cross-Platform Support: Windows and Linux compatibility
- Forward Rendering Pipeline: Modern Renderer3D implementation
- PBR Materials: Physically-based rendering workflow
- Shader Materials: Custom shader support
- Textures: Complete texture loading and management
- Skybox: HDR environment mapping
- HDR Rendering: High dynamic range pipeline
- FXAA: Fast approximate anti-aliasing
- Bloom: Physically Based Bloom
- Fog: Atmospheric depth rendering
- Tone Mapping: AgX tone mapping for cinematic color
- Directional Lights: Sun-like lighting with shadows
- Point Lights (Omni): 360-degree light sources
- Spot Lights: Cone-based directional lighting
- Directional Shadows: Real-time shadow mapping
- Image-Based Lighting (IBL): Environment lighting
- Frustum Culling: Octree-based optimization
- Renderer2D: Optimized 2D sprite rendering
- 2D Batching: Automatic draw call optimization
- EnTT Integration: High-performance entity management
- Scene Tree: Hierarchical scene organization
- Component System: Modular game object composition
- Model Loading: 3D asset import and management
- 3D Skeletal Animation: Bone-based character animation
- Animation Blending: Smooth state transitions
- Partial Animation Blending: Layer-based body part animation
- Reusable Templates: Component-based game object templates
- Hierarchy Preservation: Parent-child relationships
- Cross-Component References: Automatic reference integrity
- Human-Readable Serialization:
.prefab
format with version control - Runtime Instantiation: Dynamic prefab spawning
- Wwise Integration: Professional audio middleware
- 3D Spatial Audio: Positional audio with distance attenuation
- RTPCs: Real-time parameter controls
- Audio Banks & Events: Organized audio asset management
- Auxiliary Sends: Game-defined audio routing
- Pathfinding System: AI navigation with obstacle avoidance
- Navmesh Generation: Automatic navigation mesh creation
- Bullet Physics Integration: Industry-standard physics simulation
- Rigid Body System: Static, dynamic, and kinematic bodies
- Collision Detection: Enter/stay/exit events with manifolds
- Multiple Collider Types: Box, Sphere, Capsule, Cylinder, Cone
- Raycasting API: Single/multiple hit detection
- Physics Debugging: Visual collision shapes and raycast debug
- Lua Integration: Sol2-powered C++/Lua interoperability
- Advanced Bindings: Automatic type conversions and error handling
- IntelliSense Support: Auto-generated stub files
- Language-Agnostic Design: Extensible for additional languages
- Entity Integration: Direct script binding to game objects
- Asset Pipeline: Automatic import and processing
- Resource Caching: Intelligent asset loading
- Hot Reloading: Real-time asset updates
- Scene Hierarchy: Visual scene graph management
- Component Inspectors: Real-time property editing
- Asset Browser: Resource management interface
- Viewport: 3D scene visualization
- Tracy Integration: Real-time performance profiling
- Debug Rendering: Visual debugging systems
- Console & Logging: Integrated debugging tools
- Scene Serialization: Complete scene save/load system
- Cereal Library: Robust versioned serialization
This project makes use of several open-source libraries and resources that have greatly contributed to its development. Special thanks to the creators and maintainers of the following:
- spdlog: Fast C++ logging library.
- SDL3: Cross-platform development library made by libsdl.org.
- GLM: OpenGL Mathematics library for graphics software.
- GLAD: Multi-language OpenGL loader-generator.
- ImGui: Immediate Mode Graphical User Interface for C++.
- stb_image: Image loading library.
- assimp: Library to import various well-known 3D model formats.
- EnTT: Fast and reliable entity-component system (ECS).
- Tracy: Real-time, nanosecond resolution, remote telemetry, hybrid frame and sampling profiler.
- LearnOpenGL: Comprehensive OpenGL tutorial and resource site.
- Hazel: A small game engine developed by TheCherno as part of his game engine series.
- Godot: An advanced, feature-packed, multi-platform 2D and 3D open-source game engine.
- skypjack on software: Blog and resources on software development by skypjack.
This project is licensed under the MIT License - see the LICENSE file for details.