To try out ezEngine, you can download a precompiled binary package. This article describes how you can build the engine yourself, which enables you to extend the engine with custom functionality.
Getting the Code and Data
- Clone a branch from the GitHub repository.
- If you need a good git GUI, have a look at Fork.
- If you want a stable release, clone the 'release' branch.
- If you want the latest features, clone the 'dev' branch.
- Unless your git client already checks out git sub-modules for you, also run
git submodule initand
git submodule updatein your local clone. The EZ project uses submodules to deliver additional data such as sample content and precompiled tools.
- Obtain and install all prerequisites
- Run CMake and configure your build
- Open the generated solution and build. Compiling the entire solution with editor, unit tests and samples takes around 5 minutes. The dependencies are set up such that only building, e.g. the Editor project will include all requirements, though.
EZ sets up three build configuration types:
While developing your game you should either use a Debug or a Dev build.
The Debug build is best when you want to use a C++ debugger to investigate problems. It includes the necessary debug symbols and has many optimizations disabled, which makes it much easier to step through the code. Debug builds are significantly slower than the other build types.
The Dev build has most of the optimizations enabled, yet still includes debug symbols. The Dev build is 3x to 10x faster than a Debug build in most cases and is very close to the speed of a Shipping build. Stepping through the C++ code with a debugger is possible, though it often behaves erratic due to the optimizations (inlining and such). For most developers the Dev build should be the main configuration to use.
The Shipping build has all optimizations enabled. It does not include debug symbols anymore and it also has all the developer features disabled. That means things like ezInspector or the PhysX Visual Debugger won't work here. Similarly features like allocation tracking (for detecting memory leaks) and profiling features are disabled as well.