CineMaker

Interactive cine-game editor — node graph, plugins, .aioassets, built-in 3D viewport.

Warning

Prefer GitHub Deploy Desk to fetch a Release EXE. Confirm deploy can launch an installer. An unsigned EXE may trip SmartScreen.


Layout

CineMaker/
  README.md          ← you are here
  app.py             editor entry
  start.bat
  engine/            python modules
  static/            UI
  plugins/           bundled plugins
  docs/              PLUGIN / Chinese README
  build/             EXE scripts

Install

Players — official EXE

  1. Open GitHub Deploy Desk.

  2. Paste this repository URL.

  3. Inspect repository, then Confirm deploy.

  4. Choose CineMaker.exe from the latest Release.

  5. Run the EXE. Projects live in %USERPROFILE%\CineMakerData next to a packaged build, or data/ when running from source.

Authors — build the EXE on Windows

Python 3.11+ on PATH. Close any running CineMaker.exe.

build\build_exe.bat

Output: dist\CineMaker.exe. Log on failure: dist\cinemaker.log.

Developers — run from source

python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python app.py

Binds 127.0.0.1 (port from 8765/8787). Desktop window via pywebview when installed.

Usage

Area

What it does

Menubar / topbar

Project name, editor / project settings, save, fit, export

Work tabs

Open scenes, Game Instance, Game Mode, library

Left rail

Categorized nodes (blueprint, narrative, viewport, …)

Canvas

Infinite graph — zoom, pan, wires, box select, comments

Inspector

Node fields + 3D / media preview dock

Asset library

Folders, upload, star, trash — files stored as .aioassets

Bottom dock

Output, messages, localization, console

PIE

Floating play window for the graph

Typical flow: Start node → dialogue / choices / 3D beats / encounters → Play.

Plugins

Plugins are zip files. Import them in the running editor. Do not rebuild the EXE.

plugin.json
plugin.js
README.md

CineHost contract (schema 3)

CineHost.definePlugin({ id, onLoad, onProjectOpen, onProjectClose, onUnload })
CineHost.registerNodeType(def)
CineHost.registerExecutor(type, ctx => {})
CineHost.registerCategory({ id, title, title_en, children })
CineHost.registerInspectorPane({ id, title, match, mount })
CineHost.registerModelLoader({ ext: "fbx", label: "FBX" })
CineHost.assetUrl(assetId)
CineHost.viewport3d.create(element)

Pin kinds: exec | bool | int | float | string | array. Exec only to exec.
Every node needs an executor. Full notes: docs/PLUGIN.md.

Id pattern: vendor.feature.

Assets

Every import is wrapped as .aioassets (asset.json + payload.*).
Playback still uses /api/drive/file/{id}/raw (payload unwrapped).
Kinds: video, image, audio, model3d (GLB / glTF / FBX).

3D viewport

Engine module static/viewport3d.js (not a second Three.js in each plugin).

Bundled example: plugins/view.three.

Architecture

pywebview (optional)
    │ 127.0.0.1
FastAPI
    ├── /api/plugins    enable · uninstall · import · catalog
    ├── /api/drive      .aioassets wrap / unwrap
    └── /api/graph      scenes + Game Instance + Game Mode
static/ host · framework · viewport3d · graph · player · app
plugins/ bundled zips

FAQ

Why does Defender / SmartScreen block the EXE?

Unsigned PyInstaller onefile binaries look like packed software. Sign with Authenticode for public releases. This is not a CineMaker logic bug.

Where is Game Instance?

Work tabs under the topbar — same row as open scenes and Game Mode.

Can Confirm deploy run pip for me?

No. Source extract only. You run build_exe.bat or python app.py.

Credits

The graph workspace uses Google Blockly (Apache License 2.0). Copyright © Google LLC and Blockly contributors. Blockly is not affiliated with CineMaker. See static/vendor/blockly/ and https://github.com/google/blockly/blob/master/LICENSE.

Snap / click sounds shipped with Blockly remain under that license.

License

See LICENSE. Imported Fab / store assets keep their original licenses.

Packed via Axiox Media · axiox.media

Theme (plugins)

Plugins may recolor the black-gold shell without forking CSS:

CineHost.theme.apply({
  "--gold": "#f0d48a",
  "--gold-2": "#b8860b",
  "--bg0": "#08090c"
});
CineHost.theme.registerPreset("studio", { "--gold": "#e7c07a" });
CineHost.theme.usePreset("studio");
CineHost.theme.reset();

Export

Export dialog includes a storefront: Windows EXE (default, progress bar in-app) or H5 (index.html + game.json + Play-H5.bat).