Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
151 changes: 119 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,58 +1,145 @@
# Canopy Engine
<p align="center">
<img src="docs/assets/canopy-logo-no-bg.png" width="420" alt="Canopy Engine logo">
</p>

---
<p align="center">
<b>Canopy</b> is a modular <b>2D game engine written in Kotlin</b>.
</p>

<p align="center">
<a href="https://github.com/canopyengine/canopy">
<img src="docs/assets/canopy-logo-no-bg.png" width="350" alt="Canopy Engine logo">
</a>
Built around <b>node-based architecture</b>, <b>composable behaviors</b>, and <b>reactive state systems</b>.
</p>

## 🌲 Node-based declarative game engine built in Kotlin 🌲
<p align="center">
<img src="https://img.shields.io/badge/version-0.0.1-red.svg">
<img src="https://img.shields.io/badge/kotlin-2.3.10+-blue.svg">
<img src="https://img.shields.io/badge/license-MIT-green.svg">
</p>

---

# 🌲 What is Canopy?

**Canopy** is a modern 2D engine designed for developers who want:

- a **clear architecture**
- **modular gameplay systems**
- **Kotlin-first development**
- a **composable runtime model**

Instead of large monolithic objects, Canopy encourages building games from **small composable pieces**.

---

# Core Architecture

Canopy is structured around a few simple ideas:

```text
Application
Scene Manager
Scene Root
Node Tree
Behaviors
Tree Systems
````

Additional runtime systems provide:

```
Signals
Events
Contexts
Managers
Data Pipelines
```

This architecture allows game logic to remain **modular and scalable**.

[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/canopyengine/canopy#license)
![Version](https://img.shields.io/badge/version-0.0.1-red.svg)
---

# Example Scene

Scenes are built using a Kotlin DSL.

```kotlin
EmptyNode("root") {

Player {
behavior(PlayerController())
behavior(Move())
}

Enemy()

[//]: # ([![Crates.io]&#40;https://img.shields.io/crates/v/bevy.svg&#41;]&#40;https://crates.io/crates/bevy&#41;)
[//]: # ([![Downloads]&#40;https://img.shields.io/crates/d/bevy.svg&#41;]&#40;https://crates.io/crates/bevy&#41;)
[//]: # ([![Docs]&#40;https://docs.rs/bevy/badge.svg&#41;]&#40;https://docs.rs/bevy/latest/bevy/&#41;)
[//]: # ([![CI]&#40;https://github.com/bevyengine/bevy/workflows/CI/badge.svg&#41;]&#40;https://github.com/canopyengine/canopy/actions&#41;)
UI()

}.asSceneRoot()
```

Nodes define **structure**, while behaviors attach **gameplay logic**.

---

**[Canopy](https://github.com/canopyengine/canopy) is a node-based, declarative 2D game engine built in
[Kotlin](https://kotlinlang.org/), on top of the [LibGDX](https://libgdx.com/) framework and inspired by [Godot](https://godotengine.org).**
It's designed to be **Kotlin-native**, built with declarative APIs, node composition, and reactive patterns in mind to
create games in a clean, expressive, and maintainable way.
# Documentation

**Canopy** focuses on delivering a **simple yet powerful** experience, giving developers the flexibility to build complex
systems without sacrificing clarity or control.
This repository hosts the **official documentation** for the engine.

[Oficial docs](http://github.com/canopyengine/canopy-docs)
| Section | Description |
| --------------------------------------------- | ---------------------- |
| [Introduction](docs/articles/introduction.md) | Overview of the engine |
| [Full Documentation](markdown/index.md) | Complete engine manual |
| [Release Notes](docs/releases/releases.md) | Changelogs |
| [Roadmap](docs/roadmap.md) | Planned development |

---

## Design Goals
# Current Status

⚠️ **Canopy is currently in early development.**

* Capable: Offer a complete set of 2D tools.
* Simple: Easy for beginners, flexible for experienced users.
* Modular: Use only what you need, replace what you don't.
* Fast: Your game should feel quick and snappy.
* Productive: Dev experience should be quick, and not bound by long compilation times.
The architecture is evolving and both the engine and documentation may introduce breaking changes.

You can follow development progress in the [roadmap](docs/roadmap.md).

---

## ⚠️ Work in progress ⚠️
# Minimum Kotlin Version

```
Kotlin 2.3.10
```

**Canopy** is still a **work in progress**, and the **current version** is still unusable as is. Following the next weeks,
the goal will be to release a **Headless Version** capable of running the core features in the **terminal**.
See more details [here](https://github.com/canopyengine/canopy-docs/blob/main/docs/roadmap.md).
Canopy generally tracks the **latest stable Kotlin release**.

---

#### **Minimum Supported Kotlin Version**: **2.3.10**
# Project Goals

> **Canopy** development aims to follow **Kotlin**'s improvements, so the minimum
supported version will usually be the latest **stable** version.
The engine aims to provide:

* a **clean runtime architecture**
* **modular gameplay composition**
* a **modern reactive state system**
* a **flexible content pipeline**

Canopy prioritizes **clarity and maintainability** over complexity.

---

# License

Canopy is licensed under the **MIT License**.

See the [LICENSE](LICENSE) file for details.

---

<p align="center">
Canopy Engine • 2026
</p>
Loading
Loading