![]() |
Owl Engine 0.0.3
Very simple Game Engine for learning purpose
|
This page describes conventions and workflows for contributing to Owl.
The project uses .clang-format (LLVM-based) and .clang-tidy for automated formatting and static analysis.
-> Type for non-void functions| Element | Convention | Example |
|---|---|---|
| Member variables | m_ prefix | m_width |
| Input parameters | i prefix | iFilename |
| Output parameters | o prefix | oResult |
| In/out parameters | io prefix | ioBuffer |
| Local variables | camelCase | frameCount |
Use Owl aliases instead of std types:
| Owl Alias | Standard Equivalent |
|---|---|
shared<T> | std::shared_ptr<T> |
mkShared<T>() | std::make_shared<T>() |
Use enum struct (scoped enumerations) for all new enums.
All public API types and functions should have Doxygen doc-comments. Use /// or /** ... */ style. The engine uses the @param, @return, and @brief Doxygen commands.
Tests use Google Test. Test files are auto-discovered from test/<category>_tests/ directories. To add a new test:
.cpp file in the appropriate test/<category>_tests/ directory<gtest/gtest.h> and the headers under testTEST or TEST_F casesTest executables follow the naming pattern owl_<folder>_unit_test.
Dependencies are managed by DepManager via depmanager.yml.
depmanager.yml with explicit version and kind (static, shared, or omit for header-only)CMakeLists.txt, use: find_package() directly for DepManager-managed dependenciesSee Building Owl for the full build setup.
Use the engine logging macros:
| Level | Engine Macro | Client Macro |
|---|---|---|
| Trace | OWL_CORE_TRACE | OWL_TRACE |
| Info | OWL_CORE_INFO | OWL_INFO |
| Warning | OWL_CORE_WARN | OWL_WARN |
| Error | OWL_CORE_ERROR | OWL_ERROR |
| Critical | OWL_CORE_CRITICAL | OWL_CRITICAL |
mainctest --test-dir output/build/<preset> --output-on-failure