55 lines
4.2 KiB
Markdown
55 lines
4.2 KiB
Markdown
# 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.** The native Editor, shared GUI/MCP authoring, C++ gameplay builds, Vulkan Player, and standalone export are integrated and under acceptance testing. Linux GPU workflows work; complete cross-platform acceptance and the two finished example games remain in progress. See the [implementation checkpoints](docs/IMPLEMENTATION.md) for observed results; a technology appearing in the plan does not mean it is complete or benchmarked.
|
|
|
|
## Start here
|
|
|
|
- [User manual](docs/manual/index.md) — learn C++ gameplay and follow working examples; maintained alongside implementation.
|
|
- [Development plan](PLAN.md) — milestones through MVP, acceptance criteria, and development beyond MVP.
|
|
- [Architecture](docs/ARCHITECTURE.md) — accepted decisions and subsystem boundaries.
|
|
- [Documentation](docs/README.md) — navigation and maintenance rules.
|
|
- [Source studies](docs/studies/README.md) — Unreal Engine, Godot, Unity, Blender, ECS, graphics, asset import, and builds.
|
|
- [Dependencies and independence](docs/DEPENDENCIES.md) — 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:
|
|
|
|
```sh
|
|
cd docs/studies/map
|
|
npm ci
|
|
npm test
|
|
npm run build
|
|
npm start
|
|
```
|
|
|
|
Open [localhost:4178](http://localhost:4178). The map is a documentation viewer, not a web version of the Faset editor. See the [map README](docs/studies/map/README.md) 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](docs/PUBLICATION.md) 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.
|