Skip to main content

GBC Scene Forge

GBC Scene Forge — Build a world. One tile at a time.

Scene Forge is a local browser editor for standalone projects, imported gbc-atlas artwork and native Tiled maps. It has no runtime Python dependencies. Standalone scene authoring is the supported product direction; game connectors and Apply/build integrations are legacy code and have no compatibility guarantee.

Standalone projects

From an installed package, create or open a local project:

gbc-scene-forge /path/to/my-world --create "My world"
# Reopen after stopping the server:
gbc-scene-forge /path/to/my-world

From this checkout after make setup, use poetry run python -m gbc_scene_forge /path/to/my-world. A new or empty directory opens the project creation form; an existing project opens its scene list. Open http://127.0.0.1:8765/ (override with --port). Import a local *.atlas.json manifest and its neighboring PNG, create a named scene, paint and save. Each scene uses an 8, 16 or 32 pixel grid. Larger tile regions become stamps; sprites can be placed at native size using their atlas origins, independently of the scene grid. Named tile/object layers support ordering, visibility and active-layer editing. Add spawn markers and trigger rectangles, then edit names, classes and typed custom properties. Object and layer edits share undo/redo and save as Tiled objects. Author terrain classifications and collision flags/shapes per shared tile, then review terrain and collision overlays. Export… downloads a portable scene or project ZIP for Tiled, with an option to include unsaved canvas edits. Whole-project exports can also be reopened in Forge. Select a placed sprite to preview imported sprite animations, play or pause, step frames, change playback speed, and inspect the origin marker. Assign explicit idle/walk sequences for up, down, left, and right under Sequence mappings, then choose a preview action and direction. Mappings are shared by instances of the same sprite asset. Save preview settings stores mappings, animation choices, speeds, origin display, footprint and collision preference in the project. Playback is transient: it does not change saved assets, positions, scene dirty state, or undo history. Under Movement preview, enable movement, click the scene, and use arrow keys or WASD, or enter pixel waypoints and choose Follow path. Movement uses the mapped idle/walk directions and an adjustable footprint relative to the sprite origin. Optional collision checks use visible tile/sprite collision metadata; scene edges always stop movement. Pause movement holds the pose and path; resume continues it. Reset position restores the saved starting position; Escape exits movement preview. Reopening restores saved preferences with playback paused and movement disabled. Supported atlas sequences export as native Tiled animations with their original timing. export.json reports sequences skipped because they share a starting tile or do not fit an exported grid.

Projects contain forge.project.json, native scenes/*.tmj maps and shared assets/ tilesets/PNGs. Move the entire directory to relocate a project. The original imported bundle is no longer required.

See standalone usage and file compatibility for the Tiled subset, reimport behavior and recovery details.

Installation

python -m pip install gbc-scene-forge==0.2.0

The PyPI package includes the browser UI, standalone launcher and service. Version 0.2.0 introduces standalone projects; see the release notes for features and compatibility changes.

Development

Install Python 3.10+, Poetry 2.4–2.x, Node 24.12+, npm, and Make, with their executables on PATH. Follow the Poetry installation guide if needed. make setup checks prerequisites, uses Poetry to manage .venv, installs locked dependencies, and bundles the frontend. It does not install Poetry.

make setup PYTHON=python3.12
make lint test build

make check-deps checks tool availability and Poetry/project compatibility without installing dependencies. Override executable paths with PYTHON, POETRY, or NPM when needed. Poetry checks Python compatibility; npm ci --engine-strict enforces the frontend's Node requirement during setup.

The build creates dist/gbc_scene_forge-0.2.0-py3-none-any.whl and a source archive, then checks metadata with Twine. Run make check-dist afterward to install the wheel without dependencies in a fresh environment and run the small tests/package_smoke.py suite. CI runs this installed-wheel check explicitly. See building and releasing for tooling and manual PyPI publication. For local development, hosts can install this checkout with python -m pip install -e ../gbc-scene-forge or use their dependency manager's editable path support.

Frontend workflow

Edit TypeScript in frontend/: project.ts owns the standalone project UI, layers.mts owns active-layer editing, model.mts supplies tile editing/history, objects.mts defines standalone object/property validation, object-inspector.mts commits object dialog edits, and atlas-import.mts handles folder imports. decode.mts provides checked JSON decoding. Server validation remains authoritative for project and Tiled data. The remaining connector controllers are legacy code; their APIs and document formats are not compatibility targets for new features.

  • make frontend: type-check, then bundle the browser entry point with esbuild.
  • make typecheck: check browser and test code with TypeScript strict mode.
  • make lint: check Python plus TypeScript-aware ESLint, Prettier, and types.
  • make format: format Python and frontend sources/configuration in place.
  • make test: run Python contracts, typed editor-model tests, and API decoder tests.

Frontend formatting uses two spaces, single quotes, semicolons, and a 100-character print width. Use explicit shared types and checked unknown values at JSON boundaries; avoid any, unchecked casts, and type-check suppressions. Node runs the TypeScript tests using built-in type stripping; make typecheck enforces types.

Generated JavaScript is Git-ignored; do not edit it. make demo and make build run npm run build, which runs tsc --noEmit before esbuild. esbuild follows imports, including nested modules, and produces the connector entry static/app.js and standalone entry static/project.js, with external source maps. static/app.meta.json records the connector entry's complete runtime dependency graph and output sizes. Type errors stop the build before existing assets are replaced. Bundles are readable and unminified.

After changing frontend code while a server is running, run make frontend and reload the page. Use make build for releases so assets are always rebuilt first. When invoking Python build tools directly from a checkout, run npm ci and npm run build first. Hatchling packages the required bundle and source map using declarative file inclusion and rejects missing assets. Wheels and source archives include prebuilt assets, so installing and running a release needs no Node.

Configured API deadlines cover headers and body reads, including downloads and HTTP error bodies. Incompatible JSON/task responses stop automatic polling with an actionable message; the task may still have completed, and Reconnect retries status retrieval explicitly. Temporary connection failures continue to retry.

Legacy connector code

The repository still contains the former connector/demo implementation and its tests. It is not a supported API or a compatibility target. See the legacy implementation notes for source reference. New features use the standalone project and Tiled model.

License

MIT. Copyright (c) 2026 Michael Clifford.

Metadata

Release files for gbc-scene-forge 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gbc-scene-forge 0.2.0
File Size Uploaded Provenance Actions
gbc_scene_forge-0.2.0.tar.gz 2.2 MB With provenance Details for gbc_scene_forge-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for gbc-scene-forge 0.2.0
File Interpreter ABI Platform Actions
gbc_scene_forge-0.2.0-py3-none-any.whl Python 3 none any Details for gbc_scene_forge-0.2.0-py3-none-any.whl

Total release size: 2.4 MB

Release files / gbc_scene_forge-0.2.0.tar.gz

Download URL gbc_scene_forge-0.2.0.tar.gz
Size 2.2 MB
Tags Source
SHA-256 checksum
How to use checksums
7c0aeb229d5d652ef0aed5ca1f78182daef018214f9bebe1d62dc273e83b5c22
BLAKE2b-256 checksum
How to use checksums
293269a0e9e1029980a1af8409c9905a9d87a2323f3f630cc88154fa9db796f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Release files / gbc_scene_forge-0.2.0-py3-none-any.whl

Download URL gbc_scene_forge-0.2.0-py3-none-any.whl
Size 215.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2857478557af9a5ccd86610a00cfd086e16a2c750360c2a79e2de7d446d542e5
BLAKE2b-256 checksum
How to use checksums
bf550141e9c306c6ebd58959284d1e527b8042a3481113f7aed78abe1a38fb7d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Security for gbc-scene-forge 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for gbc_scene_forge-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page