Chloe Engine

A modern, friendly game engine for creators who love building things.

v2.4.1 Released March 2026 · Changelog

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.

New to game development? Start with the Quick Start Guide for a step-by-step walkthrough of building your first project.

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

Next Steps