Capabilities

What Keel Engine can do today.

Everything here is in the engine now. Supported works on every platform Keel runs on. Partial works with a gap, and says what the gap is. Keel is pre-1.0, so APIs still change.

Agent tooling

Everything from the command line

There is no GUI editor: scenes, content and settings are code and data files. The keel command-line tool lets a person or an agent do everything an editor would, and check the result without looking at a window.

Project commands

Supported

keel new creates an app, 2D game, 3D game or website from a template. keel build, run, test and doctor cover the rest of the loop.

Headless screenshots

Supported

keel shot renders scenes without a window at the sizes, scales, themes and locales you list, writes PNGs and a JSON report, and fails on a panic, a blank frame or an error log.

Inspect one piece

Supported

keel inspect runs a single asset, component, scene or animation in isolation and prints what it found as JSON.

Repeatable runs

Supported

A simulated clock advances one fixed step per frame, so the same build and flags give the same pixels. Snapshot helpers turn a run into a test.

Input replay

Supported

Record input and replay it, so a playtest can be repeated exactly.

Run on a device

Supported

keel run --target android builds, installs and launches on a device or emulator, and can save a screenshot.

Packaging

Supported

keel pack builds for the web, desktop and mobile.

Machine-readable output

Supported

Commands accept --json and use clear exit codes, so scripts and agents can act on the result.

Platforms

Native on every platform, no WebView

Keel draws everything itself. The same program runs on each platform, and platform features are reached through small typed interfaces with a real implementation per platform.

Desktop

Supported

Linux, Windows and macOS, drawn with the GPU or with a software renderer on machines without one.

Web

Supported

WebAssembly with WebGPU, falling back to WebGL2 and then a 2D canvas. Websites render as real HTML instead.

Android

Supported

Generates the Gradle project and builds APK and AAB packages.

iOS

Partial

Generates the Xcode project around your app. Device builds and store signing are manual.

Terminal

Supported

The same components can render as a text interface in a terminal.

Rendering

Modern GPU rendering

Rendering runs on wgpu. Each frame is a render graph that orders passes, skips unused work and reuses memory.

Physically based materials

Supported

Metal and roughness materials with image-based lighting from environment maps.

Lighting and shadows

Supported

Clustered lighting for many lights, HDR, and cascaded directional shadows with soft edges.

Post-processing

Supported

Ambient occlusion, temporal and fast anti-aliasing, bloom, auto exposure, filmic tone mapping and colour grading.

Skinned meshes

Supported

Characters with skeletons are skinned on the GPU.

Custom passes

Supported

Add your own render passes and shaders to the frame.

Software fallback

Supported

A CPU renderer draws UI and 2D on machines without a GPU.

2D

Sprites, tiles and vector art

Everything a 2D game needs, drawn in batches.

Sprites and tilemaps

Supported

Batched sprites, tile layers and 2D lights.

Vector graphics

Supported

Paths, strokes, dashes and gradients, with SVG import.

Painterly brushes

Supported

Seeded natural-media brushes such as watercolour, hatching and pigment mixing, on the CPU or the GPU.

2D physics

Supported

Rigid bodies, joints and collisions through Rapier.

2D skeletal animation

Partial

Basic Spine skeletons load. Full Spine import and constraints are missing.

3D, animation and assets

Bring models in and make them move

Assets load in the background, are cached by content, and can reload while the game runs.

glTF import

Supported

Scenes, meshes, materials, skins, morph targets, animations, cameras and lights, including compressed meshes and textures.

Textures

Supported

PNG, JPEG and KTX2, with Basis Universal transcoding to whatever the device supports.

Asset server

Supported

Reference-counted handles, background loading, dependency tracking and asset hot reload.

Animation playback

Supported

Clips, crossfades, blend trees, state machines and layers.

Inverse kinematics

Supported

Two-bone, FABRIK and CCD chains, full-body IK, foot placement on uneven ground, and root motion.

Animation compression

Supported

Clips compress within an error bound you set and decode without allocation.

Secondary motion

Supported

Spring bones for hair, cloth and accessories.

Scenes and prefabs

Supported

Scenes and prefabs are plain data files.

Motion matching

Partial

Pose search works. There is no authoring pipeline yet.

Physics

Rigid bodies and a lot more

Rigid-body physics runs on Rapier. The rest is built into the engine.

Rigid bodies

Supported

3D and 2D bodies, joints, ray and shape casts, and mesh and heightfield colliders.

Character controller

Supported

Move a character through the world with collisions resolved for you.

Fluids

Supported

Particle-based fluids on the CPU or the GPU.

Snow, sand and goo

Supported

Material point simulation for elastic, snow, sand, goo and liquid materials, on the CPU or the GPU.

Destruction

Supported

Objects break along precomputed fracture patterns when hit hard enough.

Buoyancy

Supported

Bodies float on a water plane or heightfield with drag.

Rope and cloth

Supported

Rope and cloth can hang from rigid bodies and pull on them.

Soft bodies and cloth

Partial

Cloth runs on the CPU. There is no GPU solver yet.

Vehicles

Partial

A raycast vehicle exists but is not yet part of the main physics interface.

Gameplay

The systems a game is made of

Game state lives in an entity-component-system world that steps at a fixed rate.

Entity-component-system

Supported

Entities, components, relations and resources, stepped in fixed phases: input, simulation, late update, render.

Game AI

Supported

Behaviour trees, utility AI, state machines, goal and task planners, and perception.

Particles and effects

Supported

Emitters, trails, beams and screen shake.

Voxel worlds

Supported

Voxel volumes with chunk streaming, level-of-detail meshing and ray casts.

Tweens and timers

Supported

Tweens, easing, springs, timers and scheduled ticks.

Randomness and noise

Supported

A seeded random generator, coherent noise compatible with FastNoiseLite, and blue-noise sampling.

GPU particles

Partial

GPU kernels exist, but particles simulate on the CPU by default.

Audio

A real-time mixer

Audio runs on a lock-free mixer with buses and effects, and plays on desktop, web and mobile.

Mixer and effects

Supported

Buses, sends, EQ, filters, compression, delay, reverb, convolution, sidechain ducking and mixer snapshots.

Spatial audio

Supported

Distance attenuation, cones, doppler, occlusion and binaural 3D sound for headphones.

Streaming

Supported

Long tracks stream from disk with high-quality resampling.

Sound design

Supported

Procedural sound effects, granular synthesis, and time-stretch and pitch-shift.

Compressed formats

Partial

WAV is always on. Ogg Vorbis and Opus are available but off by default.

Input

Every way players touch your game

Map raw input to actions once and use the same actions on every device.

Action mapping

Supported

Actions, contexts, dead zones, taps and holds.

Keyboard, mouse and touch

Supported

Pointer events and gesture recognition.

On-screen controls

Supported

Virtual sticks and touch buttons.

Haptics

Supported

Vibration effects on supported devices.

Gamepads

Partial

Supported through the platform. Live polling on desktop needs an optional feature.

UI and text

Interfaces for apps and games

You describe the interface as components, and Keel updates only what changes when state changes.

Components and state

Supported

Components, signals and derived values, with conditional and list rendering.

Layout

Supported

Flexible row and column layout that adapts to the screen.

Themes

Supported

Design tokens, and a full colour palette generated from one seed colour.

Text

Supported

OpenType shaping, right-to-left and mixed-direction text, CJK line breaking, and sharp glyphs at any size.

Markdown

Supported

Render Markdown with tables, task lists and code highlighting.

Text input

Partial

Input methods work on desktop. On mobile they depend on the platform integration.

Accessibility

Partial

Screen readers work on desktop. Mobile screen readers depend on the platform integration.

Websites

Real websites, not a canvas

For websites Keel renders HTML instead of drawing pixels. This site is built that way.

Real HTML pages

Supported

Each route becomes a real HTML page with its own title and metadata, readable by search engines and usable without JavaScript.

Routing and data loading

Supported

Routes, layouts and data loaders, with loading and error states.

Streaming and hydration

Supported

Pages can stream in as they render and become interactive where they need to.

Minimal page updates

Supported

Interactive parts change only the elements that changed.

Local development

Supported

keel dev serves the site and reloads the page on every change.

Networking

From HTTP to rollback netcode

Everything from a web request to a real-time multiplayer session.

HTTP and WebSocket

Supported

HTTP requests and WebSocket connections.

UDP and QUIC

Supported

Datagrams and QUIC with TLS 1.3.

Connections and channels

Supported

Handshakes, reliable, unreliable and ordered channels, fragmentation, and round-trip and loss statistics.

Multiplayer

Supported

Client prediction, interpolation, lag compensation and rollback, with the game world and physics saved and restored.

Replication

Supported

Entity components replicate as compact deltas, with interest management by position and per-entity priority.

WebTransport

Partial

The browser side is included. You provide the server and its certificates.

Platform services

The parts of an app that talk to the device

Each service is a small interface with a real implementation per platform, plus a test double you can script.

Storage

Supported

Key-value storage, save games and files on native platforms and in the browser.

Device basics

Supported

Screen size, safe areas, light or dark mode, clipboard, sharing, links, file picking and downloads, printing and screen capture.

Notifications

Supported

Local notifications, including scheduled ones.

Localization

Supported

String tables with plural rules for a fixed set of locales.

Purchases, ads and sign-in

Partial

In-app purchases, ads, platform sign-in and consent work through bridges the app wires up on each store.

Speech

Partial

Text-to-speech on the web and desktop. Native mobile voices depend on the platform integration.

AR and camera

Partial

ARKit and ARCore sessions, and camera access on the web and Linux, through platform bridges.

On-device ML

Partial

Run small neural networks, and ONNX models through an optional CPU backend.

Not yet

What Keel does not do today

  • A visual editor. Not planned: content is code and data, driven from the command line.
  • Consoles. Console builds produce a project skeleton only.
  • VR headsets. There is no stereo rendering yet.
  • Code hot reload. Assets reload while a game runs; code needs a rebuild.