3.5 KiB
Backlog Game Engine Overview
The Backlog Game Engine is a modern, modular game engine built with Zig, designed for cross-platform game development. It provides a comprehensive set of tools and systems for creating interactive 3D applications and games.
Prerequisites
- Zig 0.14 or later
- Python 3 for build scripts
Running Examples
The engine comes with several examples to demonstrate its capabilities:
Sample Game
The main example showcasing most engine features including:
- 3D rendering with meshes and textures
- Physics simulation
- ImGui debug interface
- Input handling
- Dynamic module loading
To run the sample game:
cd projects
zig build run-sampleGame
To compile and target linux with cross compiling,
zig build -Dtarget=x86_64-linux-gnu
The linux build is always compiled as a static executable.
Sample Game Controls:
WASD- Move cameraMouse- Look around (toggle menu withT)E/Q- Move up/downR- Reload shadersEscape- Exit
Minimal Example
A basic template demonstrating the minimal setup required for a Backlog application:
cd projects/minimal
zig build
zig build run-minimal
This example shows:
- Basic engine initialization
- ImGui integration
- Simple game loop structure
Creating New Projects
The engine includes a project creation tool to help you get started with new projects quickly.
Using the New Project Tool
-
Navigate to the projects directory:
cd projects -
Run the project creator:
zig build run-newProject -
Click "Create Project" to generate your new project structure
Manual Project Creation
Alternatively, you can create projects manually by copying the minimal template:
-
Copy the
projects/minimaldirectory:cp -r projects/minimal projects/my-new-project -
Edit
projects/my-new-project/build.zigand update:- Project name
- Root source file path
- Enabled modules as needed
-
Modify
src/main.zigto implement your game logic
Project Structure
A typical Backlog project includes:
my-project/
├── build.zig # Build configuration
├── build.zig.zon # Dependencies
├── src/
│ └── main.zig # Main game code
├── content/ # Game assets (optional)
└── Saved/ # Runtime generated files
Engine Modules
When creating projects, you can enable these modules:
- core - Essential engine systems (always enabled)
- platform - Windowing and input (always enabled)
- assets - Asset loading and management (always enabled)
- rend - 3D rendering system (always enabled)
- imgui - Debug UI and developer tools
- audio - Sound and music playback
- physics - Physics simulation (Jolt Physics)
- ui - User interface rendering
- papyrus - Text rendering and UI primitives
- sys - System utilities
Asset Pipeline
Assets are placed in the content/ directory within your project:
all shaders are cooked to the target system's native format. DXIL for dx12, msl for metal and spv for vulkan.
These cooked format shaders are placed under content/_shaders
Building and Development
Building Projects
From your project directory:
zig build # Build project
zig build run-[projectname] # Build and run
Testing
Run tests for the entire engine:
zig build test
Or test individual modules:
cd engine/core
zig build test