In development

Tekstorm Engine

A developer-first C++23 game engine with a clean, readable API. Write your game in plain code, with an optional editor when you want one. Rendering, physics, audio and networking are built in.

The API

A few lines of plain C++

Entities, components and assets work the way you'd expect. A campfire is an entity with a particle effect and a light, and meshes, physics and sound are added the same way.

auto fire = Assets::load<ParticleEffect>("effects/campfire");

Entity campfire = scene.createEntity("Campfire");
campfire.transform().position = {0, 0, 4};
campfire.add<ParticleEmitter>({.effect = fire});
campfire.add<PointLight>({.color = {1, 0.7f, 0.35f}, .intensity = 40});
Features

Everything a game needs, built in

Rendering and audio

A modern, bindless renderer with multiple graphics backends: Vulkan, Direct3D 12, Metal and console APIs. Materials, physically based lighting, decals, terrain and particles come out of the box, with the detail to render realistic outdoor worlds.

Sound matches the picture: mixing, streaming and HRTF spatial audio, so players hear exactly where things are.

Physics

Rigid bodies, joints, ropes, ragdolls and character controllers, stepped at a fixed rate and interpolated for smooth motion. Triggers, collision events and scene queries tie it into your game.

Navigation

A navigation mesh is built from your level's geometry, and agents walk it on their own, steering around each other and around costly ground. Crates and doors cut holes in the mesh where they come to rest, and paths reroute at once. Links handle jumps, drops and ladders.

// On the server, when a player joins
void onClientConnected(Server &server, ServerClient &client) override {
    Entity avatar = m_arena->spawn(Avatar{}, {.position = spawnPoint()});
    avatar.get<Networked>().owner = client.id();
}

Networking

Dedicated servers with strict server authority. Networked entities replicate to the clients that can see them, movement is interpolated, and every connection is encrypted.

Full feature set

Built for shipping games

RenderingPhysically based materials, lighting, shadows and sky.
TerrainLandscapes that reach the horizon, painted with material layers.
ParticlesLayered effects for fire, smoke, sparks and explosions.
DecalsScorch marks, footprints and puddles, lit with the surface.
2D and tile mapsLit sprites, 2D shadows and tile-based levels.
PhysicsRigid bodies, character controllers and scene queries.
AI and navigationNavmesh pathfinding for characters that find their own way.
AudioMusic, effects and HRTF spatial sound on mixing buses.
NetworkingDedicated servers, replication and encrypted transport.
Web servicesHTTP requests for logins, leaderboards and downloads.
AnimationKeyed tracks for any property, with blending and state machines.
CinematicsCinema cameras and timeline-driven cutscenes.
GameplayBuilt-in motion, spawning, tweens and cameras.
ScenesEntities, components, scene loading and events.
InputRebindable actions for keyboard, mouse and gamepad.
UI and textAn engine UI with full text shaping for every script.
LocalizationString tables, plural rules and full Unicode support.
AccessibilitySpeech and braille through the player's screen reader.
SavesSave slots and settings on every platform.
Asset pipelineAssets cooked at build time and loaded on background threads.
JobsA job system that spreads work across every core.
Debugging toolsIn-world debug drawing and a performance overlay.
RecordingCapture gameplay to video at an exact frame rate.
Optional editorScenes, tile maps and play mode, when you want a visual tool.
Platforms

Built for every platform

Tekstorm runs on desktop, mobile and console.

  • Linux
  • Windows
  • macOS
  • iOS and Android
  • Consoles