Welcome to Chloe Engine
Chloe is a high-performance game engine built for modern hardware. Whether you're building a 2D platformer or a complex 3D world, Chloe provides the tools you need with an approachable API and clear documentation.
Installation
Install Chloe using your preferred package manager. The engine supports Windows, macOS, and Linux.
// Add to your Cargo.toml
[dependencies]
chloe = "2.4.1"
chloe-render = "2.4.1"
chloe-physics = "2.4.1"
// In your main.rs
use chloe::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_system(hello_world)
.run();
}
fn hello_world() {
println!("Hello from Chloe!");
}
# Install via Chloe Hub
# Download from chloengine.com/download
# Create a new scene script
extends Node2D
func _ready():
print("Hello from Chloe!")
func _process(delta):
# Game loop runs here
pass
// Install via NuGet
// dotnet add package ChloeEngine
using Chloe;
using Chloe.Core;
namespace MyGame;
public class Game : ChloeApp
{
public override void Initialize()
{
AddPlugin(new DefaultPlugins());
AddSystem(HelloWorld);
}
private void HelloWorld()
{
Console.WriteLine("Hello from Chloe!");
}
}
Key Features
Entity Component System
High-performance ECS architecture for managing game objects efficiently. Compose behavior through components, not inheritance.
Hot Reloading
See changes instantly without restarting your game. Edit scripts, shaders, and assets with live feedback.
Cross-Platform
Build for Windows, macOS, Linux, Web, iOS, and Android from a single codebase. One engine, every platform.
Modern Renderer
Vulkan-first rendering pipeline with PBR materials, global illumination, and a flexible post-processing stack.
API Overview
The Chloe API is organized into modules that map to engine subsystems. Here's a quick reference for the most commonly used types:
| Module | Key Types | Description |
|---|---|---|
chloe::core |
App, World, Entity |
Application lifecycle, ECS world management |
chloe::render |
Camera, Mesh, Material |
Rendering pipeline, meshes, and materials |
chloe::physics |
RigidBody, Collider |
Physics simulation and collision detection |
chloe::input |
Input, Action, Axis |
Input handling with action mapping |
chloe::audio |
AudioSource, Listener |
Spatial audio and sound playback |
chloe::ui |
UiNode, Style, Text |
Immediate-mode UI with flexbox layout |
Quick Example
Here's a minimal example that creates a window with a rotating cube:
use chloe::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_startup_system(setup)
.add_system(rotate_cube)
.run();
}
fn setup(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {
// Spawn a cube
commands.spawn(PbrBundle {
mesh: meshes.add(Mesh::cube(1.0)),
material: materials.add(StandardMaterial {
color: Color::hex("#ff2d7b"),
..Default::default()
}),
..Default::default()
});
// Spawn a camera
commands.spawn(Camera3dBundle {
transform: Transform::from_xyz(3.0, 3.0, 3.0)
.looking_at(Vec3::ZERO, Vec3::Y),
..Default::default()
});
}
fn rotate_cube(
time: Res<Time>,
mut query: Query<&mut Transform, With<Mesh>>,
) {
for mut transform in &mut query {
transform.rotation *=
Quat::from_rotation_y(time.delta_seconds());
}
}
What's New in v2.4
- WebGPU Support -- Experimental support for WebGPU rendering backend, enabling browser-based games with near-native performance.
- Scene Prefabs -- Save and instantiate complex scene hierarchies as reusable prefab assets.
- Visual Shader Editor -- A node-based shader editor integrated into Chloe Hub for creating custom materials without writing code.
- Improved Hot Reload -- Script hot reloading is now 3x faster with support for preserving game state across reloads.
- Audio Graphs -- New audio graph system for complex spatial audio setups with real-time mixing and effects chains.