
Code-first engine for building interactive 2D and 3D applications with a composable runtime: ECS, rendering, physics, retained UI, scene DSL, and multiple backend renderers.
A code-first Kotlin Multiplatform engine for building interactive 2D and 3D applications.
Awake gives Kotlin applications a small, composable runtime for scenes, rendering, physics, and retained UI. Author your application in Kotlin, keep platform code at the edge, and share the same game or tool code across desktop, mobile, and the web.
Awake is early alpha software. APIs and published artifacts can change between releases.
Clone the repository and run the engine showcase:
./gradlew :samples:engine-showcase:runThe repository also includes a UI component showcase. See the engine showcase README for the available demos and web commands.
Awake artifacts are published to Maven Central. Core modules share one version (latest
0.1.0-alpha.7); the Vulkan backend has its own release train (latest 0.1.0, built against Core
0.1.0-alpha.7). Add only the modules your application uses to gradle/libs.versions.toml:
[versions]
awake = "0.1.0-alpha.7"
awake-vulkan = "0.1.0"
[libraries]
awake-bootstrap = { group = "com.awakekt.awake.engine", name = "bootstrap", version.ref = "awake" }
awake-shaders = { group = "com.awakekt.awake.asset", name = "shaders", version.ref = "awake" }
awake-vulkan = { group = "com.awakekt.awake.backend", name = "vulkan", version.ref = "awake-vulkan" }The WebGPU backend is not in Maven Central releases yet: it builds on a wgpu4k snapshot, so it is
published only as a snapshot to https://central.sonatype.com/repository/maven-snapshots/.
For a desktop JVM target, use the lifecycle and shared shader contract in commonMain, and the
Vulkan host in desktopMain:
kotlin {
jvm("desktop")
sourceSets {
commonMain.dependencies {
implementation(libs.awake.bootstrap)
implementation(libs.awake.shaders)
}
named("desktopMain").dependencies {
implementation(libs.awake.vulkan)
}
}
}Create an application with the bootstrap DSL:
import com.awakekt.awake.engine.bootstrap.dsl.app
val game = app {
window {
title = "My Awake App"
size(1280, 720)
backend.vulkan()
}
}The getting started guide shows the desktop host and render-plan setup. The engine showcase is the complete working example.
| Area | Modules | Purpose |
|---|---|---|
| Runtime |
engine:bootstrap, engine:platform, engine:compose
|
Application lifecycle, platform startup, UI host |
| ECS | ecs |
Entity storage, components, and systems |
| Scenes |
scene:scene-core, scene:scene3d, scene:authoring, scene:document, scene:runtime
|
Transforms, cameras, lights, scene DSL and documents |
| Rendering |
engine:render:*, backend:vulkan, backend:webgpu
|
Backend-neutral passes and platform backends |
| Content |
asset:gltf, asset:shaders, asset:shader-pack, asset:shader-document, asset:terrain, terrain, kit:terrain-layers
|
Models, textures, shaders, and terrain |
| Physics |
physics:api, backend:jolt
|
Physics contracts and Jolt integration |
| UI |
compose:runtime, compose:ui, compose:foundation, ui:shadcn
|
Retained Compose-shaped UI and shadcn components |
| Projects |
project, node-graph, editor:contract
|
Project manifests, node graphs, editor plugin contracts |
You do not need every module. Start with the smallest runtime for your target, then add scene, rendering, physics, asset, or UI modules as your application grows. The module guide contains the complete module map.
Awake is designed for Kotlin Multiplatform projects targeting:
Desktop uses Vulkan (MoltenVK on macOS and iOS), Android uses Vulkan, and the browser uses WebGPU. Backend and platform availability is still expanding during the alpha releases. Use the examples and release notes as the compatibility reference for the version you are using.
Issues and pull requests are welcome on GitHub. Please read the contribution guide and release guidance before making a change. Security issues should follow the security policy.
Awake is available under the Apache License 2.0. Third-party components keep their own licenses, listed in NOTICE.md: the Roboto font, and the UI font atlases drawn from it, are under the SIL Open Font License 1.1. The AwakeKt and Awake names, and the Ember Signal mark, are governed separately by the trademark notice.
A code-first Kotlin Multiplatform engine for building interactive 2D and 3D applications.
Awake gives Kotlin applications a small, composable runtime for scenes, rendering, physics, and retained UI. Author your application in Kotlin, keep platform code at the edge, and share the same game or tool code across desktop, mobile, and the web.
Awake is early alpha software. APIs and published artifacts can change between releases.
Clone the repository and run the engine showcase:
./gradlew :samples:engine-showcase:runThe repository also includes a UI component showcase. See the engine showcase README for the available demos and web commands.
Awake artifacts are published to Maven Central. Core modules share one version (latest
0.1.0-alpha.7); the Vulkan backend has its own release train (latest 0.1.0, built against Core
0.1.0-alpha.7). Add only the modules your application uses to gradle/libs.versions.toml:
[versions]
awake = "0.1.0-alpha.7"
awake-vulkan = "0.1.0"
[libraries]
awake-bootstrap = { group = "com.awakekt.awake.engine", name = "bootstrap", version.ref = "awake" }
awake-shaders = { group = "com.awakekt.awake.asset", name = "shaders", version.ref = "awake" }
awake-vulkan = { group = "com.awakekt.awake.backend", name = "vulkan", version.ref = "awake-vulkan" }The WebGPU backend is not in Maven Central releases yet: it builds on a wgpu4k snapshot, so it is
published only as a snapshot to https://central.sonatype.com/repository/maven-snapshots/.
For a desktop JVM target, use the lifecycle and shared shader contract in commonMain, and the
Vulkan host in desktopMain:
kotlin {
jvm("desktop")
sourceSets {
commonMain.dependencies {
implementation(libs.awake.bootstrap)
implementation(libs.awake.shaders)
}
named("desktopMain").dependencies {
implementation(libs.awake.vulkan)
}
}
}Create an application with the bootstrap DSL:
import com.awakekt.awake.engine.bootstrap.dsl.app
val game = app {
window {
title = "My Awake App"
size(1280, 720)
backend.vulkan()
}
}The getting started guide shows the desktop host and render-plan setup. The engine showcase is the complete working example.
| Area | Modules | Purpose |
|---|---|---|
| Runtime |
engine:bootstrap, engine:platform, engine:compose
|
Application lifecycle, platform startup, UI host |
| ECS | ecs |
Entity storage, components, and systems |
| Scenes |
scene:scene-core, scene:scene3d, scene:authoring, scene:document, scene:runtime
|
Transforms, cameras, lights, scene DSL and documents |
| Rendering |
engine:render:*, backend:vulkan, backend:webgpu
|
Backend-neutral passes and platform backends |
| Content |
asset:gltf, asset:shaders, asset:shader-pack, asset:shader-document, asset:terrain, terrain, kit:terrain-layers
|
Models, textures, shaders, and terrain |
| Physics |
physics:api, backend:jolt
|
Physics contracts and Jolt integration |
| UI |
compose:runtime, compose:ui, compose:foundation, ui:shadcn
|
Retained Compose-shaped UI and shadcn components |
| Projects |
project, node-graph, editor:contract
|
Project manifests, node graphs, editor plugin contracts |
You do not need every module. Start with the smallest runtime for your target, then add scene, rendering, physics, asset, or UI modules as your application grows. The module guide contains the complete module map.
Awake is designed for Kotlin Multiplatform projects targeting:
Desktop uses Vulkan (MoltenVK on macOS and iOS), Android uses Vulkan, and the browser uses WebGPU. Backend and platform availability is still expanding during the alpha releases. Use the examples and release notes as the compatibility reference for the version you are using.
Issues and pull requests are welcome on GitHub. Please read the contribution guide and release guidance before making a change. Security issues should follow the security policy.
Awake is available under the Apache License 2.0. Third-party components keep their own licenses, listed in NOTICE.md: the Roboto font, and the UI font atlases drawn from it, are under the SIL Open Font License 1.1. The AwakeKt and Awake names, and the Ember Signal mark, are governed separately by the trademark notice.