From 1d9e589d071aeddbee89431411f0df62be392799 Mon Sep 17 00:00:00 2001 From: MelekTaus Date: Sun, 4 Oct 2026 13:30:44 +0200 Subject: [PATCH] Describe the pixel perfect camera switch - Concepts: new paragraph Pixel perfect after Game view scale. It covers the grid per device pixel, Fit and the Scene tab, odd sizes and camera shaders. - Development: e2e total 1742. Co-Authored-By: Claude Opus 5.5 --- Concepts.md | 11 +++++++++++ Development.md | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Concepts.md b/Concepts.md index dd6c9af..5302da9 100644 --- a/Concepts.md +++ b/Concepts.md @@ -104,6 +104,17 @@ Fixed steps start on a whole screen pixel, so pixel art at 100% stays sharp. The pixel, and Fit then names the factor in screen pixels (`Fit · 156%`). The choice is saved with the project, like *Play starts*, but it is no undo step: Ctrl+Z undoes edits, not a look at the game. +**Pixel perfect**, a switch on the camera, off by default. On, the game view draws on its own pixel +grid: one step per screen pixel a world unit gets, so at 100% on whole units and at 500% on fifths. +The world's origin lands on a whole screen pixel, and every sprite, text and tilemap on a step of +the grid, however the camera moves. Positions keep their fractions: only where things are drawn +snaps, so a camera that follows smoothly still moves smoothly in the model. An unturned object +snaps its top left corner, so a 15 px wide sprite is as sharp as a 16 px one; a turned one snaps +its centre. Under a camera shader the grid is the shader picture's: with *Camera pixels* one step +per camera pixel. The switch does nothing at **Fit**, where a camera pixel is no whole number of +screen pixels anyway, and nothing in the Scene tab, where one works with the fractions. Particles +are drawn where they are. An overlay camera has a switch of its own. + **Fullscreen** (#267). The button at the right end of the Game tab's header puts the game view on its own into fullscreen: no toolbar, no panels, no tab header, no console, at the scale the picker holds. A run goes on as before and the keys still go to the game. A button in the top right corner diff --git a/Development.md b/Development.md index bcdfc01..c79f004 100644 --- a/Development.md +++ b/Development.md @@ -18,7 +18,7 @@ php tests/php/accounts.test.php # the API's accoun # has and the web server's container has not (SKIP there) php tests/php/snapshots.test.php # the snapshot store (#231), the same way php tests/php/releases.test.php # the release store (#266), the same way -node tools/seed-e2e.mjs && node tools/e2e.mjs # 1741 editor checks, screenshots in /tmp/gm-e2e-*.png +node tools/seed-e2e.mjs && node tools/e2e.mjs # 1742 editor checks, screenshots in /tmp/gm-e2e-*.png GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 — a subset while working on one step ./e2e.sh start [GM_STEPS] # the same run detached, see below ./e2e.sh status # live progress, or the last run's result