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.
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
Open GitHub Deploy Desk.
Paste this repository URL.
Inspect repository, then Confirm deploy.
Choose CineMaker.exe from the latest Release.
Run the EXE. Projects live in %USERPROFILE%\CineMakerData next to a packaged build, or data/ when running from source.
Python 3.11+ on PATH. Close any running CineMaker.exe.
build\build_exe.batOutput: dist\CineMaker.exe. Log on failure: dist\cinemaker.log.
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python app.pyBinds 127.0.0.1 (port from 8765/8787). Desktop window via pywebview when installed.
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 |
Bottom dock | Output, messages, localization, console |
PIE | Floating play window for the graph |
Typical flow: Start node → dialogue / choices / 3D beats / encounters → Play.
Plugins are zip files. Import them in the running editor. Do not rebuild the EXE.
plugin.json
plugin.js
README.md
Import from the plugin window.
Disable / Enable toggles without deleting files.
Uninstall (red) appears only after a user plugin is disabled. Bundled plugins cannot be removed.
Download sample / SDK saves a zip and shows the path (also starts a browser download).
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.
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).
Engine module static/viewport3d.js (not a second Three.js in each plugin).
Loaders: GLB, glTF, FBX with animation clips
Preset studio lights: key / fill / rim / hemi / ambient
Intensity, position, rotation are editable in the inspector
Plugins call CineHost.viewport3d.create(dom)
Bundled example: plugins/view.three.
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
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.
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.
See LICENSE. Imported Fab / store assets keep their original licenses.
Packed via Axiox Media · axiox.media
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 dialog includes a storefront: Windows EXE (default, progress bar in-app) or H5 (index.html + game.json + Play-H5.bat).