Skip to content

Showcase: pack-city, sprite-runner, tile-explorer, material-demo (+ sokol material-seam fix) - #645

Merged
apotema merged 4 commits into
mainfrom
feat/611-showcase
Jul 19, 2026
Merged

Showcase: pack-city, sprite-runner, tile-explorer, material-demo (+ sokol material-seam fix)#645
apotema merged 4 commits into
mainfrom
feat/611-showcase

Conversation

@apotema

@apotema apotema commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Delivers the four remaining showcase games from docs/showcase-plan.md (rows 6-9), plus a precise assembler fix the released path surfaced.

Closes #611

The games (examples/)

Each is small, legible, complete, and pins the released package set (core 1.26.0 / engine 2.6.0 / gfx 1.28.1 / cli 1.58.0 / assembler 0.94.0) — not the local: sibling pins the in-tree fixtures use — to prove the released path end-to-end (the cli#322 scaffold-versions lesson). Each ships a README + a deterministic scene preview and documents labelle run --screenshot= (LABELLE_SCREENSHOT_PATH) capture.

Game Backend Demonstrates generate build
tile-explorer raylib engine built-in Tilemap (.tmx, T2 Phase 4) + camera-prefabs seed + scripted follow-cam
sprite-runner sokol both animation tiers: AnimationDef comptime rig + engine-driven SpriteAnimation ✅ (needs the fix below)
pack-city bgfx the packs wall as a real game — buildings pack + traffic pack cooperating only across the exposed query
material-demo bgfx the gfx#305 post-fx set (bloom/vignette/color_grade/crt) via the declarative .post_fx seed

All four generate + zig build green on the released pins (verified locally). CI (examples-integration) generates all four and builds the raylib + sokol games; the two bgfx desktop builds (heavy C++ compile) are covered locally and left generate-only in CI as a follow-up.

Assembler fix — sokol-desktop material-seam core-unify

Proving the released path surfaced a real bug: the sokol-desktop byte-anchor codegen path unrolls the core-diamond overrides by hand but never unified the backend's gfx module labelle-core onto the app core. gfx#305's material seam gave that module a direct labelle-core import (for MaterialEffect/PostPassKind), so on any gfx#305-era sokol-desktop build the two core instances yield distinct MaterialEffect types and sema fails (expected MaterialEffect, found MaterialEffect).

This PR unrolls the backend_gfx core-diamond edge into the anchor tail — the same edge the generic desktop path (bgfx/raylib) already emits via unifyCoreDiamond. 4 sokol-desktop goldens updated to match. bgfx and raylib were never affected. Released assembler 0.94.0 cannot build a sokol-desktop game against a gfx#305-era backend until the next release carries this fix; sprite-runner is the regression guard.

Scope note — per-entity materials

gfx#305 shipped two halves. material-demo exercises the post-fx half, which is game-wired in released engine 2.6.0 (.post_fxsetPostFx). The per-entity material half (palette_swap/flash/dissolve/outline) is plumbed in core+gfx (SpriteVisual.material) but engine 2.6.0 exposes no game authoring surface (Sprite.material/setMaterial) — a tracked engine follow-up, documented in the demo's README + docs/showcase-plan.md.

Testing

  • generate + zig build green for all four games (in-tree assembler + released pins, the CI path).
  • zig build test: 2144/2150 (the 2 failures are a pre-existing environmental flow_catalog deps-staging issue on the clean base, unrelated); the 4 sokol-desktop goldens pass with the fix.

https://claude.ai/code/session_011szWvquoss1yNX7KWSKCaM


View with Codesmith Autofix with Codesmith
Need help on this PR? Tag /codesmith with what you need. Autofix is disabled.

Summary by CodeRabbit

  • New Features
    • Added four showcase games demonstrating tilemaps, sprite animation, pack-based composition, and post-processing effects.
    • Added new scenes, assets, gameplay interactions, camera behavior, animated sprites, collectibles, moving vehicles, and visual effects.
  • Bug Fixes
    • Improved desktop builds for showcase projects using the Sokol backend.
  • Documentation
    • Added build, run, and screenshot instructions for all showcase games.
    • Documented released-version compatibility and current post-processing limitations.
  • Tests
    • Expanded CI coverage to generate and build the showcase games automatically.

…aterial-demo) + sokol material-seam fix

Adds the four remaining showcase games from docs/showcase-plan.md (rows
6-9), each a small, legible, complete game pinning the RELEASED package
set (core 1.26.0 / engine 2.6.0 / gfx 1.28.1 / cli 1.58.0 / assembler
0.94.0) to prove the released path — not the local: sibling pins the
in-tree fixture examples use.

- tile-explorer (raylib): engine built-in `Tilemap` (.tmx, T2 Phase 4) +
  camera-prefabs seed + scripted follow-cam clamped to the map.
- sprite-runner (sokol): both animation tiers — `AnimationDef` comptime
  rig for the runner, engine-driven `SpriteAnimation` for coin spin.
- pack-city (bgfx): the packs wall as a real game — a `buildings` pack
  and a `traffic` pack that cooperates only across the exposed query.
- material-demo (bgfx): the gfx#305 post-fx set (bloom/vignette/
  color_grade/crt) via the declarative `.post_fx` seed.

All four generate + `zig build` green on the released pins. The
examples-integration CI generates all four and builds the raylib + sokol
games (sprite-runner guards the fix below); the bgfx builds are covered
locally. Each ships a README + a deterministic scene preview and
documents `labelle run --screenshot=` capture.

Assembler fix (surfaced by proving the released path): the sokol-desktop
byte-anchor codegen never unified the backend's gfx-module `labelle-core`
onto the app core. gfx#305's material seam gave that module a direct core
import, so two `MaterialEffect` instances failed sema on any gfx#305-era
sokol-desktop build. Unroll the `backend_gfx` core-diamond edge into the
anchor tail (matching the generic desktop path bgfx/raylib already use);
4 sokol-desktop goldens updated. bgfx/raylib were never affected.

Refs #611.
Closes #611.

Claude-Session: https://claude.ai/code/session_011szWvquoss1yNX7KWSKCaM
@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 32 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 7cdb7ec4-dc20-4008-9c18-5469b048fe40

📥 Commits

Reviewing files that changed from the base of the PR and between 907792b and 956c964.

📒 Files selected for processing (10)
  • .github/workflows/ci.yml
  • docs/showcase-plan.md
  • examples/material-demo/README.md
  • examples/material-demo/project.labelle
  • examples/pack-city/README.md
  • examples/pack-city/project.labelle
  • examples/sprite-runner/README.md
  • examples/sprite-runner/project.labelle
  • examples/tile-explorer/README.md
  • examples/tile-explorer/project.labelle
📝 Walkthrough

Walkthrough

Four released-pinned showcase games are added with assets, scenes, gameplay scripts, documentation, and CI validation. The desktop code generator and sokol golden builds also unify backend labelle-core imports with the application core module.

Changes

Released showcase games

Layer / File(s) Summary
Material post-processing showcase
examples/material-demo/*
Adds a bgfx post-processing demo with orb animation, configured passes, scene and atlas assets, released version pins, and build/screenshot documentation.
Pack-wall showcase
examples/pack-city/*
Adds cooperating buildings and traffic packs, an exposed building-count query, composed prefabs and scenes, moving entities, assets, and usage documentation.
Sprite animation showcase
examples/sprite-runner/*
Adds atlas metadata, runner animation definitions, gameplay components, runner/coin/cloud updates, project wiring, and sokol build documentation.
Tilemap exploration showcase
examples/tile-explorer/*
Adds a TMX island map, explorer movement and camera clamping, scene/project wiring, assets, and screenshot instructions.
Released-path CI validation
.github/workflows/ci.yml, docs/showcase-plan.md
Adds generation and desktop build checks for the four released-pinned examples, including Zig fingerprint rewriting and updated showcase coverage notes.
Backend core import unification
src/codegen/manifest_v2_splice/desktop.zig, test/goldens/*.build.zig
Conditionally redirects backend_gfx’s labelle-core import to the shared application core module in generated and golden sokol desktop builds.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant MainScene
  participant TrafficScript
  participant BuildingsQuery
  participant ECS
  MainScene->>TrafficScript: Instantiate pack prefabs
  TrafficScript->>BuildingsQuery: Count Building entities
  BuildingsQuery->>ECS: Iterate Building view
  ECS-->>BuildingsQuery: Return count
  TrafficScript->>ECS: Move and wrap Car entities
Loading

Possibly related PRs

Poem

A rabbit hops through pixels bright,
Four little games take joyful flight.
Packs, maps, sprites, post-fx glow,
Zig builds cleanly, row by row.
Core imports now share one tune—
Thump-thump, ship it to the moon! 🐇

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed It names all four showcases and the sokol material-seam fix without unrelated wording.
Linked Issues check ✅ Passed The PR adds all four requested showcases plus the sokol fix needed to make material-demo buildable.
Out of Scope Changes check ✅ Passed The extra docs, CI, and golden updates all support the requested showcase work and fix.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/611-showcase

Comment @coderabbitai help to get the list of available commands.

Cite the filed engine issue (no game-facing per-entity Material authoring
surface) from material-demo's README and the showcase plan.

Refs #611.

Claude-Session: https://claude.ai/code/session_011szWvquoss1yNX7KWSKCaM

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds four new showcase games (games 6–9) to verify the released package path: material-demo, pack-city, sprite-runner, and tile-explorer. It also fixes a sokol-desktop build issue by unifying the app core onto the sokol gfx module in the desktop codegen. A review comment correctly identifies a compilation issue in the buildings pack query where game.ecs_backend is accessed directly instead of via game.active_world.ecs_backend.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

/// Number of standing buildings.
pub fn count(game: anytype) u32 {
var n: u32 = 0;
var view = game.ecs_backend.view(.{Building}, .{});

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

In all other scripts in this pull request (such as 10_bob.zig, 20_drive.zig, 10_run.zig, and 10_explore.zig), the ECS backend is accessed via game.active_world.ecs_backend rather than directly on game. Accessing game.ecs_backend directly here will likely result in a compilation error.

    var view = game.active_world.ecs_backend.view(.{Building}, .{});

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a62db4e037

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread examples/sprite-runner/project.labelle Outdated
.engine_version = "2.6.0",
.gfx_version = "1.28.1",
.labelle_version = "1.58.0",
.assembler_version = "0.94.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Pin sprite-runner to a fixed assembler

When this example is built through the documented labelle build/labelle run path, the CLI will honor this assembler_version and run assembler 0.94.0, but the same change notes that 0.94.0 lacks the sokol backend_gfx core-unification fix needed by labelle-sokol 0.5.0/gfx 1.28.1. CI bypasses that by invoking the freshly built $ASM directly, so the checked-in example still fails for users unless they manually override the assembler; pin this to the fixed local/next assembler instead of the unfixed release.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in 956c964. Pinned .assembler_version = "local:../../" (the in-tree cohort option). A 0.95.0 pin is not buildable anywhere today: it's unreleased, and a numbered pin also stages the bundled ecs/zig-ecs adapter from ~/.labelle/packages/assembler/0.95.0/ which cannot exist yet (confirmed locally — the link fails with source ... does not exist). local: resolves the fix + the adapter from the in-tree tree, so it builds in CI. The README states plainly that the fully-released path needs assembler ≥0.95.0.

.width = 640,
.height = 360,
.target_fps = 60,
.backend = .raylib,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Pin tile-explorer to a tilemap-capable raylib

Because this uses the implicit .raylib provider, it resolves through the assembler's built-in shorthand to labelle-raylib 0.3.0 (src/config.zig), and that release's renderer does not expose the TileMapRendererType seam that engine 2.6.0 requires before Tilemap draws. The example will still generate/build, but the showcased island map renders as a no-op; add an explicit backend_package pin for a raylib release with the tilemap seam (or choose a backend that has it) so this tilemap showcase actually displays the TMX layer.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verified + fixed in 956c964. labelle-raylib 0.3.0 ships no tilemap code, but it still renders the map: tilemap rendering is backend-generic — the tile draw pass lives in labelle-gfx (TileMapRendererWith(B), wired by the RetainedEngine) and draws each tile through the standard drawTexturePro call, which raylib 0.3.0 implements (src/gfx.zig:84). So the capability is pinned by gfx 1.28.1, not the backend. Added an explicit .backend_package raylib 0.3.0 pin + a comment documenting this.

Round-1 review (gemini HIGH): the exposed `count` query reached the world
via `game.ecs_backend` while every tick script in the PR uses
`game.active_world.ecs_backend`. Align it so the query keeps working once
the active world matters (scene swap / multi-world), not just today.
Regenerated + built pack-city (bgfx) green.

Refs #611.

Claude-Session: https://claude.ai/code/session_011szWvquoss1yNX7KWSKCaM
@apotema

apotema commented Jul 19, 2026

Copy link
Copy Markdown
Contributor Author

Round-1 review addressed (gemini HIGH, examples/pack-city/packs/buildings/queries.zig:9):

The exposed buildings.count query reached the world via game.ecs_backend while every tick script in the PR uses game.active_world.ecs_backend. Aligned it to the same access path so the query keeps working the moment the active world matters (scene swap / multi-world), not just today. Regenerated + zig build green on bgfx.

Fixed in 907792b.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/showcase-plan.md`:
- Around line 82-88: Update the “Games 6–9” section to clarify that CI validates
the released package pins using the PR’s in-tree assembler binary, not released
assembler 0.94.0. Remove or qualify the claim that this cohort proves the
released assembler path, and retain the existing build-coverage details.
- Around line 71-74: Align the showcase table entries for pack-city,
sprite-runner, tile-explorer, and material-demo with the actual CI workflow:
either add deterministic screenshot generation, upload, and image comparison to
the workflow, or revise their documented verification scope to generate/build
only. Update the affected status descriptions in the showcase plan to match the
chosen behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: f99f6eaa-8c29-4ce9-a0e3-307bd2c3ab13

📥 Commits

Reviewing files that changed from the base of the PR and between 462424d and 907792b.

⛔ Files ignored due to path filters (11)
  • examples/material-demo/assets/glow.png is excluded by !**/*.png
  • examples/material-demo/preview.png is excluded by !**/*.png
  • examples/pack-city/assets/city.png is excluded by !**/*.png
  • examples/pack-city/packs/buildings/assets/buildings.png is excluded by !**/*.png
  • examples/pack-city/packs/traffic/assets/traffic.png is excluded by !**/*.png
  • examples/pack-city/preview.png is excluded by !**/*.png
  • examples/sprite-runner/assets/runner.png is excluded by !**/*.png
  • examples/sprite-runner/preview.png is excluded by !**/*.png
  • examples/tile-explorer/assets/explorer.png is excluded by !**/*.png
  • examples/tile-explorer/assets/tileset.png is excluded by !**/*.png
  • examples/tile-explorer/preview.png is excluded by !**/*.png
📒 Files selected for processing (51)
  • .github/workflows/ci.yml
  • docs/showcase-plan.md
  • examples/material-demo/.gitignore
  • examples/material-demo/README.md
  • examples/material-demo/assets/glow.json
  • examples/material-demo/components/orb.zig
  • examples/material-demo/project.labelle
  • examples/material-demo/scenes/main.jsonc
  • examples/material-demo/scripts/playing/10_bob.zig
  • examples/pack-city/.gitignore
  • examples/pack-city/README.md
  • examples/pack-city/assets/city.json
  • examples/pack-city/packs/buildings/assets/buildings.json
  • examples/pack-city/packs/buildings/components/building.zig
  • examples/pack-city/packs/buildings/pack.labelle
  • examples/pack-city/packs/buildings/prefabs/house.jsonc
  • examples/pack-city/packs/buildings/prefabs/shop.jsonc
  • examples/pack-city/packs/buildings/prefabs/tower.jsonc
  • examples/pack-city/packs/buildings/queries.zig
  • examples/pack-city/packs/traffic/assets/traffic.json
  • examples/pack-city/packs/traffic/components/car.zig
  • examples/pack-city/packs/traffic/pack.labelle
  • examples/pack-city/packs/traffic/prefabs/car_blue.jsonc
  • examples/pack-city/packs/traffic/prefabs/car_red.jsonc
  • examples/pack-city/packs/traffic/scripts/playing/20_drive.zig
  • examples/pack-city/project.labelle
  • examples/pack-city/scenes/main.jsonc
  • examples/sprite-runner/.gitignore
  • examples/sprite-runner/README.md
  • examples/sprite-runner/animations/runner.zon
  • examples/sprite-runner/assets/runner.json
  • examples/sprite-runner/components/cloud.zig
  • examples/sprite-runner/components/coin.zig
  • examples/sprite-runner/components/runner.zig
  • examples/sprite-runner/components/sprite_animation.zig
  • examples/sprite-runner/project.labelle
  • examples/sprite-runner/scenes/main.jsonc
  • examples/sprite-runner/scripts/playing/10_run.zig
  • examples/tile-explorer/.gitignore
  • examples/tile-explorer/README.md
  • examples/tile-explorer/assets/explorer.json
  • examples/tile-explorer/assets/island.tmx
  • examples/tile-explorer/components/explorer.zig
  • examples/tile-explorer/project.labelle
  • examples/tile-explorer/scenes/main.jsonc
  • examples/tile-explorer/scripts/playing/10_explore.zig
  • src/codegen/manifest_v2_splice/desktop.zig
  • test/goldens/sokol_desktop_v2.build.zig
  • test/goldens/sokol_desktop_v2_gamepad_off.build.zig
  • test/goldens/sokol_desktop_v2_hidapi.build.zig
  • test/goldens/sokol_desktop_v2_plugins.build.zig

Comment thread docs/showcase-plan.md Outdated
Comment thread docs/showcase-plan.md Outdated
…der note

Round-2 review (4 findings, all valid):

1. (coderabbit Major) The docs claimed the cohort proves the RELEASED
   assembler 0.94.0 path, but CI uses the IN-TREE assembler. Corrected:
   the games pin the released RUNTIME set (core/engine/gfx/cli) + released
   backends, and — like every sibling example — pin the ASSEMBLER at
   `local:../../`. Two reasons stated plainly: examples validate the
   assembler under test, and a numbered pin needs that version's source
   tree cached under ~/.labelle/packages/assembler/<ver>/ (only a released
   `labelle` populates it; CI does not). Fully-released compatibility is
   documented per backend: bgfx/raylib on 0.94.0, sokol needs >= 0.95.0.

2. (codex P2) sprite-runner assembler pin: 0.95.0 is unreleased AND an
   unreleased numbered pin has no cached ecs adapter, so it cannot build
   anywhere. Pinned `local:../../` (in-tree fix) per the reviewer's
   "in-tree cohort" option; README states the released path needs >= 0.95.0.

3. (codex P2) tile-explorer raylib/tilemap: verified tilemap rendering is
   backend-generic (gfx `TileMapRendererWith(B)` -> `drawTexturePro`, which
   labelle-raylib 0.3.0 implements), so 0.3.0 renders the map; capability
   is pinned by gfx 1.28.1, not the backend. Added an explicit raylib
   0.3.0 backend pin + a comment documenting this.

4. (coderabbit Minor) Table promised "generate + build (+ screenshot)" but
   CI does no screenshot. Dropped the screenshot claim; documented that
   each game ships a committed deterministic preview.png and the true
   engine screenshot is captured manually (windowed backends need a GUI
   session / xvfb).

All four still generate + `zig build` green (released runtime + in-tree
assembler). `zig build test` unchanged (baseline flow_catalog lanes).

Refs #611.

Claude-Session: https://claude.ai/code/session_011szWvquoss1yNX7KWSKCaM
@apotema
apotema merged commit 4847854 into main Jul 19, 2026
4 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 956c964d12

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/ci.yml
for g in tile-explorer sprite-runner pack-city material-demo; do
echo "== $g: install + generate (released pins) =="
( cd labelle-assembler/examples/$g
$ASM install --project-root .

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Force showcase install to use published runtime pins

In this job, $ASM install --project-root . does not fetch the pinned core/engine/gfx releases because the workflow has already checked out labelle-core, labelle-engine, and labelle-gfx as siblings; fetchFrameworkWithFallback populates the requested version cache from those local checkouts before falling back to remote tarballs (src/cache_cmd.zig:571-587). As a result the new "released runtime pins" guard is actually generating/building against whatever branches those sibling checkouts point at, so a regression present in core 1.26.0 / engine 2.6.0 / gfx 1.28.1 can pass CI; run this step with the local-framework fallback disabled or without those sibling dirs when validating the released path.

Useful? React with 👍 / 👎.

// Cinematic edge darkening toward a cool tint.
.{ .vignette = .{ .intensity = 0.55, .radius = 0.85, .softness = 0.45, .tint = .{ 0.02, 0.02, 0.06 } } },
// Gentle overall grade lift.
.{ .color_grade = .{ .strength = 0.35, .lut = 0 } },

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Seed a real LUT for color grading

When this demo runs on the pinned bgfx 0.13.1 backend, color_grade with .lut = 0 is explicitly treated as a passthrough blit in the backend's applyPostPass path for zero/dead LUT handles. That means this showcased color_grade pass does not apply any grading despite the README/project comments claiming the full post-fx set is visible; either provide a real LUT texture/handle before seeding the stack or drop this pass from the demo.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Showcase: remaining example games (pack-city, sprite-runner, tile-explorer, material-demo)

1 participant