|
|
PixelBullet
0.0.1
A C++ game engine
|
PixelBullet Engine is an attempt to create a modular, high-performance game engine tailored for development and education, aiming to balance efficiency and flexibility with a focus on compile-time resolution. The goal is to design a structured, interface-driven system that allows for easy extension, optimization, or system swapping without overhauling the codebase. Bazel is used to ensure clean isolation for seamless iteration. While modularity is a guiding principle, it's not absolute—some systems, like a Vulkan-only renderer, are being explored with a streamlined, dedicated approach in mind rather than full backend flexibility.
Before you can build and run PixelBullet Engine, ensure you have Bazel installed:
Note: Bazelisk will also be installed in the VSCode DevContainer for convenience.
PixelBullet repository supports multiple development environments:
CLion is the primary IDE for PixelBullet development, offering the most seamless and direct integration. It provides full support for our Bazel-based workflow, ensuring a streamlined development experience.
VSCode is a viable alternative to CLion, offering a flexible environment with a pre-configured DevContainer. The DevContainer includes:
clang-format and clang-tidyIt requires:
Linux Users: Do not forget to follow the Docker post-installation guide to ensure correct setup.
The project is cross-platform but relies heavily on Bazel, which limits its compatibility with certain products. If possible, follow the Bazel IDE Integration Guide to configure your preferred IDE. This approach may change in the future, but for now, the benefits of Bazel seem to outweigh its drawbacks. As a result, there are challenges with Visual Studio support, as we are not willing to use tools like CMake for project generation, and modern Bazel does not provide direct support for this.
The project uses clang-format for consistent code style. Format your code with:
Or resort to IDE shortcuts where supported (e.g. in CLion).
//engine:pixelbullet_engine//editor:pixelbullet-editor//examples/sandbox:sandbox-app//engine:time_utils_testsTo build the entire project:
Note: Learn more about this here.
--config=debug--config=release--config=asan--config=msan--config=tsan--config=ubsanNote: In CLion, for Bazel projects using the Bazel extension, the Run action always maps to release mode, and the Debug action always maps to debug mode.
To generate documentation, run:
The documentation will be available in the html directory.
Note: The documentation is built using
doxygen_rulesanddoxygen-awesome.
To build and run the sandbox example: