Faset Engine

Faset is an independent engine project for desktop 2D and 3D games on Linux and Windows. Its priorities are a custom editor that is comfortable to use by hand and through MCP, integration with Blender, and a path toward advanced graphics.

Current status: MVP implementation is in progress. Native core, authoring, physics runtime, asset import, and renderer subsystems are being integrated and tested. The complete editor and game export workflow are not yet ready. See the implementation checkpoints for observed results; a technology appearing in the plan does not mean it is complete or benchmarked.

Start here

  • User manual — learn C++ gameplay and follow working examples; maintained alongside implementation.
  • Development plan — milestones through MVP, acceptance criteria, and development beyond MVP.
  • Architecture — accepted decisions and subsystem boundaries.
  • Documentation — navigation and maintenance rules.
  • Source studies — Unreal Engine, Godot, Unity, Blender, ECS, graphics, asset import, and builds.
  • Dependencies and independence — libraries, tools, and source provenance.

Language

English is the primary language of the engine: editor UI, built-in commands, diagnostics, public API identifiers, and CLI/MCP tool descriptions. Project content and user-entered text support Unicode; the engine's interface language does not dictate the language of a game.

This README is in English. The current planning documents, studies, and research map are primarily in Russian. Editor localization is a later milestone.

Accepted foundation

  • C++ for the core and the first gameplay implementation. Lua will follow as a separate module and will be optional for individual games.
  • Objects, components, and nested scene templates for authoring; EnTT for the runtime ECS. JSON authoring data, stable IDs, and cooked binary assets for export.
  • A custom Vulkan 1.3 backend, RenderGraph, and renderer. The backend calls Vulkan directly; gameplay uses Faset APIs. Slang compiles shaders, including compatible HLSL, to SPIR-V. The baseline renderer does not require ray tracing.
  • SDL3 behind Faset's platform API; Box2D and Box3D for physics.
  • A custom retained-mode editor UI with C++ behavior, declarative layout, separate styles, and a dark theme by default. Dear ImGui is reserved for debugging tools.
  • CMake + Ninja + Clang; Windows uses clang-cl, the Windows SDK, and MSVC runtime libraries. Initial builds are tested on their target OS.
  • A separate Player process, statically linked with gameplay. The C++ iteration cycle is stop, incrementally rebuild, and restart.
  • Editor-only MCP: authoring, assets, import, builds, export, Play/Stop, and editor diagnostics. MCP is absent from the Player and exported games.
  • Standard, unmodified Blender, glTF/GLB import, and an optional add-on for convenient export and stable IDs.

MVP is complete when two small games, one 2D and one 3D, can be created, saved, played, and exported for both operating systems. GPU-driven rendering, HZB, advanced shadows, temporal reconstruction, and dynamic global illumination follow the baseline.

Run the research map

Requires Node.js and npm. From the repository root:

cd docs/studies/map
npm ci
npm test
npm run build
npm start

Open localhost:4178. The map is a documentation viewer, not a web version of the Faset editor. See the map README for details.

Repository contents

Documentation, studies, the source manifest, and the map's code are tracked in Git. Third-party engine source trees, installed dependencies, build outputs, and caches are excluded. Source links are pinned to the commits examined during research; Unreal Engine links may require access through Epic.

See the publication notes for publication scope and licensing status. A license for Faset's own content has not yet been selected. Third-party projects retain their own license terms.

S
Description
Faset Engine: architecture, MVP roadmap and source studies for a C++ 2D/3D engine for Linux and Windows.
Readme
4.8 MiB
Languages
C++ 88.7%
Python 7.8%
CMake 2.8%
Lua 0.4%
Slang 0.2%
Other 0.1%