Main repository for the Bourne game engine. This is a solo project written from scratch in a simple subset of C++. Architecture and design is very opinionated to serve more personal purposes first. For example, third-party libraries are to be avoided when possible to facilitate a learning process of implementing various systems and algorithms from ground up. This allows the codebase to be kept more consistent and binaries very small, while also leaving enough control over the entire implementation and architecture to help make it more optimized.
- Everything written in simple C++ from scratch
- Avoid third-party libraries and prefer native platforms APIs
- Focus on hardware utilization, memory efficiency and responsiveness
- Favor static dispatch over dynamic polymorphism
- Maintain unit tests to ensure correctness
Project is based on CMake 3.29 and can be used with following compilers:
- Clang (recommended 19.1 or higher)
- MSVC (recommended 19.42 or higher)
- GCC (recommended 14.2 or higher)
- Build
- Three configurations:
- Debug (no optimizations, for debugging)
- Develop (regular optimizations, for development)
- Release (maximum optimizations, for distribution)
- Better defaults for compilation and link flags
- Multi-platform and multi-compiler support
- Three configurations:
- Common
- Logging
- Assertions
- Containers:
- Array (aka "vector")
- String, StringView
- Utility:
- Result (for more modern error handling)
- Optional
- Function
- UniquePtr
- Memory
- Allocator interface:
- Default allocator based on malloc
- Inline allocator for small allocations
- Allocation statistics and tracking
- Operator new/delete overrides
- Allocator interface:
- Platform
- Multi-platform support:
- Linux
- Windows
- Command line handling
- High frequency timing
- Window management
- Multi-platform support:
No. I am setting the bar quite high for myself by e.g. disallowing use of third party libraries to challenge myself and make sure this game engine ends up extremely well optimised. However, I am aiming to eventually make this engine a viable option for developing different kinds of games.