Interactive CLI tool for scaffolding Tiramisu game projects
Named after the Italian cream cheese used in tiramisu, Mascarpone provides a delightful TUI experience for creating new game projects with the Tiramisu game engine.
gleam add --dev mascarponeRun the interactive project creator:
gleam run -m mascarponeThe TUI will guide you through:
- Lustre Integration: Choose whether to include Lustre for UI overlays (menus, HUDs, etc.)
- Project Template (Optional): Select from:
- 2D Game - Orthographic camera and sprite setup
- 3D Game - Perspective camera with lighting
- Physics Demo - Physics-enabled objects
- Skip - Don't create template files (for existing projects)
- Desktop Bundle: Set up NW.js for desktop distribution
Mascarpone sets up your Tiramisu project with:
- Lustre dev tools installed to
priv/<project-name>/with bundled Bun runtime gleam.tomlwith all necessary dependencies (tiramisu, vec, lustre_dev_tools, optionally lustre).gitignorefor Gleam projectspackage.jsonandnode_modules/with Three.js and Rapier3D installed via Bun- Main source file with a working game example (if template selected)
- Lustre dev tools configuration with Three.js and Rapier3D import maps
- 🎨 Beautiful TUI powered by Shore
- 🚀 Quick project setup with sensible defaults
- 🎮 Multiple game templates to start from (optional)
- 📦 Automatic dependency management via
gleam add - 🖥️ Desktop bundling with NW.js for cross-platform distribution
- ⚙️ Configurable options for Lustre UI and Rapier3D physics
- ♻️ Can be run on existing projects to add NW.js support
By default, Mascarpone will:
- First try to use bun from your system PATH
- If not found, download a bundled bun via lustre_dev_tools
You can override this behavior in your gleam.toml:
[tools.lustre.bin]
bun = "system" # Force using system bun (will error if not found)
# OR
bun = "/path/to/custom/bun" # Use specific bun executableWhen a custom bun path is configured, Mascarpone will skip downloading bun entirely.
Run the dev server:
gleam run -m lustre/dev startThen open http://localhost:1234 in your browser to see your game!
If you set up NW.js bundling during project creation, you can build platform-specific distributions with a single command:
gleam run -m mascarpone bundleThis command:
- Uses the Bun runtime from lustre-dev-tools
- Runs
bun run buildwhich executes the build script in yourpackage.json - Compiles your Gleam code with
gleam build - Creates platform distributions with
nwbuild
The built distributions will be available in the directory specified in your package.json (typically ../<project-name>_build/).
src/!
MIT